测试工程执行时间优化

发表于:2013-10-30 09:49

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:秦广    来源:51Testing软件测试网原创

  * 分析: SkuDB#deleteSkuByItemId()方法实现的不好,我们都是逻辑删除(status = -1),当初写的时候为了省事,查询出所有sku再遍历调用update(因为先实现query, update 再实现delete,图省事少写几行代码@\_@),而update为了通用性会先查一把数据是否存在,也就是调用一次queryCountBySkuId()。由于这个设计的存在,所有的操作(删、改、查)最终都会调用一次queryCountBySkuId(),造成了query方法调用次数膨胀。
  执行时间20ms也超出预期,review queryCountBySkuId()方法,发现拼出的sql里没有带上item_id,没用到索引。
  * 解决方案:调整deleteSkuByItemId()方法的实现,直接拼sql更新status字段,缩短调用链;
  修改sku、auction\_image这2张大表的所有sql,利用索引提升性能;
  * 收益: CSellerChangeItemPropertyTest 执行时间从340s降到10s,提升约6min;
  3.增加日志打点,提取更多数据
  从现有日志数据中发现的问题已经解决,添加更丰富的日志,输出@Before-->@Test-->@After的时间,@Test的时间,由于我一直怀疑数据清理耗时太多,顺带也打出了数据清理的时间,见下

……………………

查看全文请点击下载:http://www.51testing.com/html/88/n-853288.html

  maven surfire输出了每个类执行的总时间,日志输出了Junit所有注解的执行时间,因此可以计算出@ITestxx各种注解的执行时间,分析一次30min的日志(实际test时间为27min),Junit时间为10min,ITest时间为17min。
  数据清理时间总共才1min(含在Junit时间内),日志提取的数据告诉我,数据清理速度很快,不需要再继续优化了。
  >(ps:这里的运行时间指的是一次构建所用的全部时间,从调度开始到运行日志回写结束,调度开始、启动脚本、更新代码、回写日志时间约1min,由于sell-test测试的是web工程,还有一个打包过程,约2min,因此有约3min的时间差)
......
    查看全文请点击下载:http://www.51testing.com/html/88/n-853288.html
   版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号