精准化测试

黑盒测试的挑战 
过程:多猜测,不稳定,难控制
效果:个人素质
管理:成本高,难度大
 
白盒测试
门槛高,单兵作战,目标单一(高覆盖率),分析之殇(对用户的影响)
互联网基本不做,迭代测试不允许
 
一.精准化测试思想
 
用非常精准智能的软件来解决软件测试的问题,并从根本上引领软件测试从经验型方法技术性方法的转型。
 
 
精准:测试用例到代码逻辑的精准记录的双向追溯
                函数调用关系计算
 
测试用例-----------------------代码逻辑
                   代码染色
 
 
精准的代码级的缺陷定位和奔溃分析
 
精准的测试充分度分析---测试效果问题
 
智能
回归用例自动筛选
自动化用例筛选与执行
持续集成
 
引入精准化测试的原因
  • 测试人员经验,能力不同
  • 测试范围圈定凭经验
  • 测试用例筛选难。
  • 测试经验沉淀效果差。
 
最初的
  • 精准的圈定测试范围
  • 对影响范围给出建议
  • 自动的筛选测试用例
  • 为黑盒测试实时提供覆盖率结果。
 
(1)筛选测试用例
版本提测-->Diff结果解析(变更函数,函数调用关系)-->测试用例(测试用例,Sanity用例)
 
(2)函数调用关系计算
例如:开发未了实现功能1,同事修改了函数A和函数C,其中函数之间调用关系如下。
功能1:C-》A
功能2:B-》A
 
在做Sanity测试时,如何能够筛选出功能2的测试用例。
语言:java
工具:javacg
目的:通过对class文件的解析,计算函数之间的调用关系。
 
(3)Diff结果解析:
解析Diff结果文件,计算变更文件名和变更代码段位置。
扫描源文件,计算出变更的函数。
结合函数调用关系圈定受影响的函数范围。
 
(4)函数与测试用例的映射:
人工录入  code diff 
代码注释抽取
代码染色(执行黑盒用例->收集覆盖率->解析覆盖结果->代码染色->函数调用关系)
2层调用,3层调用
 
(5)筛选用例流程
 
(6)执行测试用例
 
黑盒测试实时查看覆盖率
Java覆盖率
  • Jacoco
  • On-the-fly
  • class
 
JS覆盖率
  • 基于JSCover二次开发
  • 插桩+上报+proxy
  • 源文件,编译文件(ES6)
 
 
(7)JS覆盖率
代码插桩                                   
  • 源文件插桩                
  • 编译文件插桩  
数据上报
  • 触发事件上报数据
文件映射
  • 线上->proxy->本地
生成报告
  • 解析jscoverage.json
  • 生成html 形式报告
 
 
通过捕获事件进行覆盖率实时上报
  • 页面切换
  • 鼠标切换
  • ...
 
 
(8)ES6标准如何做覆盖率(.vue,  .js)
 
源码(易读,不可执行)-----》编译后(较易读,可执行)-----》压缩混淆后(不易读,可执行)
所以选择编译后文件
 
 
 
posted @ 2022-01-27 17:08  丝瓜呆呆  阅读(333)  评论(0编辑  收藏  举报