软件测试过程中,产品需求到交付测试执行这个流程中,测试设计是重中之重,结合自己的工作经验,个人认为:测试设计就是软件需求转换成测试需求,通过建模,从测试角度罗列功能对象,了解,分析被测对象,并不断和相关者沟通,确认,最终得到验证该模型的测试用例过程.
引用Rick D. Craig and Stefan P. Jaskiel大师的一张图,说的是白盒测试+黑盒测试能改进软件的质量达60%,如图:
所以,测试之前很有必要对测试对象进行分析设计,以下是我在黑盒测试设计以及白盒(目前做SDK项目)测试设计的心得:
黑盒设计经验总结:
1.设计过程是一个反复沟通,反复确认的过程.多问几个为什么
2.关注重点和难点,单个测试风险和整体测试风险,80%的精力集中到重点和难点,一定不要低估这个地方.
3.白盒的手段,黑盒的思想.看代码为补充.
4.白盒的思想,黑盒的手段,基于功能点分析.
5.黑盒思想,黑盒手段,场景很重要.
6.根据线上bug设计保持最新状态,个人认为:测试设计有效性,以项目上线1-3个月为维度,调整设计,激发测试思想.
7.探索性测试为补充(取消法,后退法,逆向思考很重要)
8.单元脚本也是测试设计的参考
9.测试设计历程(个人理解):基于需求的设计->基于经验的设计->基于风险的设计.
10.设计评审很重要,测试设计很有必要专门安排时间
11.设计过程关注单模块,多模块之间的耦合(bug都来自此)
12.根据不同项目,熟练使用测试用例方法,增强测试用例发现bug几率.(一般情况,开发自测测到的点不容易发现问题,考虑没测到的点容易发现问题.).
13.设计过程考虑测试类型,安全,性能,兼容.
14.不同产品测试设计特性不同,web产品(缺陷容忍度高)电信,金融产品(业务复杂,流程重.修复长,具体到某个sql字段)移动app产品(适配).
白盒或者说接口设计经验总结:
1. 熟悉代码,一个SDK的代码量不是很多,通过不断和开发沟通,弄清楚分支,然后特定场景是否有异常处理;
2. 如果一个SDK有UI层,有接口层,先做UI层的黑盒测试 设计,然后做接口层基于接口入参,出参设计,以及基于核心function的测试设计,因为在做黑盒也就是业务层的设计时,反馈给开发,提升开发代码的兼容和遗漏.SDK目前个人归纳为这么四类: 有UI层的SDK, 集成mtop接口的SDK,包含so包的SDK,以及只包含java层的SDK,不同的SDK产品,测试设计的重点不同. UI层的SDK侧重适配测试, 集成mtop的SDK侧重异常处理,包含so包的侧重接口和适配,java层的sdk侧重接口.
3.SDK设计,看代码同时除了学习设计模式外,更重要是为做测试设计分析服务,发现沟通漏洞.
4.基于底层的function设计,有些逻辑复杂的,要细分,想办法把每个节点测试到.
5.测试过程中,白盒测试不要脱离了黑盒测试,有些系统复杂的,白盒测试单个节点测试了没问题,但是联调有问题.
6.SDK Demo测试不能覆盖所有的逻辑,一定要针对Demo也要有测试思路,争取全面覆盖接口分支,代码逻辑分支.
7.写好的用例后,加入持续集成,能有度量工具对代码度量(satement coverage,分支度量,路径度量),关注未测试到的代码.
最后,推荐这几天一直在看的几篇文章,很有思考价值:
<<不能成为专业测试的十大理由>>,
<<怎样做测试?>>
<<测试人员需要经历的阶段>>
最新内容请见作者的GitHub页:http://qaseven.github.io/