当前位置: 首页 > news >正文

网站建设中下载php黄页系统

网站建设中下载,php黄页系统,wordpress设置菜单跳转到锚,网站正在建设中英语怎么说目录 一. 现状问题 二. 分析原因 三. 采取措施 四. 实践步骤 五. 效能提升 资料获取方法 一. 现状问题 针对现如今高并发场景的业务系统#xff0c;“并发问题” 终归是必不可少的一类#xff08;占比接近10%#xff09;#xff0c;每次出现问题和事故后#xff0c…目录 一. 现状·问题 二. 分析原因 三. 采取措施 四. 实践步骤 五. 效能提升 资料获取方法 一. 现状·问题 针对现如今高并发场景的业务系统“并发问题” 终归是必不可少的一类占比接近10%每次出现问题和事故后需要耗费大量人力成本排查分析并修复。那如果能在事前尽可能避免岂不是很香 二. 分析原因 当前并发测试多数依赖测试人员进行脚本测试同时还依赖了研发和产品识别出并发操作的场景用例。对于并发测试大概两条路子 所有修改同样数据的命令式接口都测一遍【耗费巨大测试成本】保证黄金流程的接口研发从头扒代码。【可能会遗漏耗费一定研发成本】 自我反思 作为研发是不是在刚开发接口时候识别到并发场景随着单元测试阶段同时进行并发测试这样的成本是最小的收益是最高效的 三. 采取措施 并发测试前置 采用CI持续集成机制依靠行云流水线底层利用junit5单元测试框架并发parallel引擎嵌入同步数据库的自定义unit test脚本将每个并发case维护成单元测试数据自我闭环可重复执行 将核心的并发场景进行及时的运行验证最早洞察最早验证最小成本最大保障 四. 实践步骤 前提配置junit-platform.properties # src/test/resources/junit-platform.properties junit.jupiter.execution.parallel.enabledtrue junit.jupiter.execution.parallel.config.strategyfixed junit.jupiter.execution.parallel.config.fixed.parallelism20单接口并发-RepeatedTest ManualCheckAppConcurrentTest 出库复核并发测试「单接口并发」- 手动复核 10个线程 核心代码块 public class ManualCheckAppConcurrentTest extends ConcurrentTest {ResourceManualCheckAppService manualCheckAppService;//记录执行成功的线程数static int successThreadCount 0;///// 单接口并发///DisplayName(单接口并发并发测试【手动确认复核】)Description(10个线程场景复核1件,一共5件,应该有5个线程成功5个线程失败没有查询到容器明细记录 使用友好式分布式锁防止并发并发后等待重试保证顺序执行无异常)Execution(CONCURRENT)RepeatedTest(value 10, name {displayName}:{totalRepetitions}-{currentRepetition})public void testConfirmChecked(TestInfo testInfo) {manualCheckAppService.confirmChecked(mockConfirmCheckedDto());successThreadCount;}/*** 断言最终结果数据无问题线程执行无问题*/AfterAllpublic static void assertResult() {//线程执行成功数期望一共5件每个线程复核1件共有5个线程成功Assertions.assertEquals(5, successThreadCount);//数据成功期望没有待复核的容器明细了因为都复核成功了一共5件ConfirmCheckedDto confirmCheckedDto mockConfirmCheckedDto();ListContainerDetailPo containerDetailPos SpringUtil.getBean(ContainerDetailDao.class).selectUncheckDetailsBySoAndSku(confirmCheckedDto.getTaskNo(), confirmCheckedDto.getShipmentOrderNo(), confirmCheckedDto.getSku(), confirmCheckedDto.getWarehouseNo());Assertions.assertTrue(CollectionUtils.isEmpty(containerDetailPos));}TestSql({/concurrent/manualCheck.sql})Overridevoid prepareData()多场景并发-Execution(CONCURRENT) CheckAppConcurrentTest 出库复核并发测试「多场景并发」- 手动复核|自动复核 核心代码块 public class CheckAppConcurrentTest extends ConcurrentTest {ResourceManualCheckAppService manualCheckAppService;ResourceAutoCheckAppService autoCheckAppService;///// 多场景并发///DisplayName(多场景并发并发测试【自动确认复核】)Description(与手动复核发生并发场景期望可能存在业务异常自定义锁冲突发生的消息)Execution(CONCURRENT)Testpublic void testAutoCheckBySo() {autoCheckAppService.autoCheckBySo(Lists.newArrayList(SO-6_6_601-1492066800186167296), mockAutoCheckBySoDto());}DisplayName(多场景并发并发测试【手动确认复核】)Description(与自动复核发生并发场景期望可能存在业务异常自定义锁冲突发生的消息)Execution(CONCURRENT)Testpublic void testConfirmChecked() {manualCheckAppService.confirmChecked(mockConfirmCheckedDto());}/*** 断言最终结果数据无问题*/AfterAllpublic static void assertResult() {//数据成功期望没有待复核的容器明细了无论是手动复核还是自动复核都会全部复核完ConfirmCheckedDto confirmCheckedDto mockConfirmCheckedDto();ListContainerDetailPo containerDetailPos SpringUtil.getBean(ContainerDetailDao.class).selectUncheckDetailsBySoAndSku(confirmCheckedDto.getTaskNo(), confirmCheckedDto.getShipmentOrderNo(), confirmCheckedDto.getSku(), confirmCheckedDto.getWarehouseNo());Assertions.assertTrue(CollectionUtils.isEmpty(containerDetailPos));}TestSql({/concurrent/manualCheck.sql})Overridevoid prepareData() {} 并发单测基类-Transactional ConcurrentTest 建议抽出并发测试基类主要目的准备数据、设置路由、数据清除、独立执行 Tag(parallel)分组: 并发测试用例,有助于单独执行套件! ​ 核心代码块 SpringBootTest(classes WebApplication.class) Tag(parallel) public abstract class ConcurrentTest {/*** 并发测试场景的前提数据准备* { Sql 数据脚本配置 }*/TransactionalOrder(0)Rollback(false)abstract void prepareData();/*** 设置当前线程数据源*/BeforeTransactionpublic void setThreadDataSource() {DataSourceContextHolder.clearDataSourceKey();//多数据源分库分表DataSourceContextHolder.setDataSource(ds0);}/*** 清除数据*/Rollback(false)AfterAllpublic static void clearData(){new DatabaseSyncTest().execute(wms_check,wms_check_test);} 数据准备-Sql 如何准备数据 新建一个专门单元测试/并发测试的空数据库 准备测试场景的前置数据SQL脚本 源脚本 DELETE FROM ck_task; INSERT INTO ck_task (id, task_no, sku_qty, total_qty, platform_no, status, warehouse_no, create_user,update_user, create_time, update_time, ts, deleted, suggest_platform, uuid,parent_task_no, pick_differ_allow, operation_type, picking_flag, task_type,ext_info,subtask_qty, tenant_code, current_stream_no, confluence, batch_no, requirements) VALUES (1492071049884340224, T6X6X60122021100000329, 1.0000, 5.0000, , 0, 6_6_601, xiaoyan, xiaoyan,2022-02-11 17:45:26, 2022-02-11 17:45:26, 2022-02-11 17:45:26, 0, , zyr1228003, , 0, 0, 0, 0, null,null, TC30020150, 0, 1, cj006001, {allowBatchCheck: true}); 数据回滚-ParameterizedTest CI自动同步数据库表结构 测试环境数据库-单测数据库 利好研发无需被动维护schema自动与真实数据库结构同步 只需要将下面单测copy到代码中将fromDb和toDb参数修改成自己数据库即可 源代码 DisplayName(单元测试MYSQL-DB结构同步)SneakyThrowsParameterizedTestCsvSource(wms_check,wms_check_test)public void execute(String fromDb, String toDb) {ResultSet resultSet null;Class.forName(com.mysql.jdbc.Driver);try (Connection connection DriverManager.getConnection(***,user, ***);Statement statement connection.createStatement()) {String initDb DROP DATABASE IF EXISTS toDb ;CREATE DATABASE toDb ;;log.info(initDb);statement.executeUpdate(initDb);resultSet statement.executeQuery(SHOW TABLES FROM fromDb ;);ListString tableNames Lists.newArrayList();while (resultSet.next()) {tableNames.add(resultSet.getString(Tables_in_ fromDb));}for (String tableName : tableNames) {String syncSql DROP TABLE IF EXISTS toDb . tableName ; CREATE TABLE toDb . tableName LIKE fromDb . tableName ;;log.info(syncSql);statement.executeUpdate(syncSql);}} finally {if(resultSet ! null){resultSet.close();}}}配置CI-行云流水线 建议在提测流水线增加不要再日常dev流水线集成测试相对耗时 只执行并发单测用例-Dtest.mode 基于junit5 Tag JUnit 5 User Guide mvn test -Dtest.modeparallel配置IDEA-本地测试 —— 只运行并发测试用例 执行结果 单接口并发单测 多场景并发单测 五. 效能提升 5.1需求交付效率提升 5.1.1降低测试周期阶段时长 2022-02月实践后 因为「并发测试」前置到「研发单元测试」环节所以「测试阶段」时长缩短 2.5 天 - 1 天 2022-Q1 2022-Q2 2022-Q3 2022-Q4 「测试周期」阶段停留时长和占比呈下降趋势 5.1.2缩短需求交付全周期 2022-02月实践后 因为「测试周期」缩短研发单元测试成本几乎不变所以「需求交付全周期」随之缩短55 天 - 35 天 5.2人效提升 5.2.1提升验证全面性 「case by case」 通过单元测试「断言机制」最细粒度全方位验证 在【开发阶段】识别到接口存在并发问题及时编写单元测试进行验证针对分布式锁和乐观锁等常用防并发手段对应不同的assert方式 数据库乐观锁通过判断最终数据保证执行无问题分布式友好锁不会报错会等待最终所有请求处理成功分布式冲突锁直接报错断言异常信息...... 5.2.2降低测试人力成本 减少花大量时间专项测试N个接口并发测试成本「最早发现最早处理最小成本」 根据下图可见从编码阶段、单元测试阶段、接口测试阶段、集成测试阶段、预发布阶段等软件生命周期中越早发现问题付出成本越小。 5.2.3提升需求吞吐量 2022-02月实践后 因为减少人力成本所以会直接提升需求的吞吐量200个 - 225个 5.3过程质量提升 5.3.1降低问题的发生概率 「并发测试前置」 到研发单元测试环节可减少缺陷数降低问题发生概率 5.3.2减少线上问题数 今年线上问题-并发问题 类别为 0 5.3.2减少Bug数 过程质量中并发问题趋势逐步降低 资料获取方法 【留言777】 各位想获取源码等教程资料的朋友请点赞 评论 收藏三连 三连之后我会在评论区挨个私信发给你们~
http://www.hkea.cn/news/14577602/

相关文章:

  • 微信 微网站开发电商平台方案
  • 蝴蝶传媒网站推广四川成都最新消息
  • 韶关微网站建设c 做的网站怎么上传
  • 自己做网站流程微信服务号怎么做商城
  • 福州网站建设 找燕狂徒 04网站建设怎么收费呀
  • 中国公路建设行业协会网站网页特效设计
  • 网站帮助页面设计搜索引擎优化搜索优化
  • 龙华城市建设局网站苏州网站开发公司电话
  • 网站域名到期登不上是怎么回事cnzz统计代码放在网站
  • 水利建设与管理司网站亚马逊网站链接
  • 贵阳市城乡建设厅网站受欢迎的手机网站建设
  • 微信公众平台绑定网站四川网站建设设计公司哪家好
  • 网站数据库到期外链信息
  • 昆明网站建设系统百度广告投放代理商
  • 服务专业公司网站建设服务济南建站公司效果
  • 百度网站推广找谁做关键词挖掘网站
  • 如何网站切换朋友圈转wordpress文章显示缩略图
  • 电子商务网站开发难点中国石油工程建设有限公司网站
  • 网站是专门对生活中的一些所谓常识做辟谣的wordpress获取token方法
  • 阿里云做网站步骤中山网站建设推广
  • 实验一html静态网站开发商城型网站建设代理加盟
  • 有没有专业做特产的网站网站搭建有分谷歌
  • 帮忙建网站的人档案网站建设对比
  • 济南做网站建设做视频网站视频短片
  • 如何用手机做网站魔艺极速建站
  • 品牌网站建设S苏州上海徐汇做网站
  • 做django后台网站岚山网站建设公司
  • 免费扑克网站阿里云 全国网站建设
  • 响应式网站模板 视差浙江建站
  • asp.net 网站 结构网站建设报价方案对比