三、精准化测试第一式:差异化
- 关注实现,明确测试对象,指哪打哪
- 寻找测试对象差异,寻找最小精准测试对象
测试对象:指测试的源程序、目标程序、数据和相关文档
精准测试对象:迭代之间的差异部分(需求差异、技术实现上的差异)、差异部分影响的其他功能
- 需求差异分析
功能流图:使用图形表示功能与功能之间的关系,及功能走向关系
数据流向图:从数据传递和加工角度,以图形表达系统的逻辑功能、数据在系统内部流向和逻辑变换过程
状态变迁图:指明外部事件的结果系统如何运作
- 技术实现差异
系统设计上的差异:时序图(又名序列图/循序图/顺序图等)-描述对象之间发送消息的时间顺序显示多个对象之间的动态写作关系,包括活动者、对象、生命线、控制焦点和消息。
工程上的差异:代码(两个迭代间的代码差异),文件(编译后的文件差异)
实用分析方法:
SVN-diff
文件对比方法(基于反汇编的基本块跳转关系的二进制对比)
最佳实践--自动化分析二进制文件差异化(IDA pro反汇编工具):
* 基本块(普通指令-move、add等指令,子函数调用-call指令)
一条或数据指令的组合,有唯一一个指向块起始位置的入口点和唯一一个指向块结束位置的退出点。函数包含一个或多个基本块。
* 跳转边(条件跳转,非条件跳转)
基本块之间的映射关系。
- 精准测试杀手:耦合(对软件结构内各个模块之间互连程度的度量)
高手之间见招拆招,请看下一章:技术治理