软件单元测试
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.7 精准测试

精准测试把黑盒测试与白盒测试捆绑在一起,是由苏州洞察云技术有限公司的总经理赵明先生提出的。

1.精准测试的优点

1)快速定位黑盒测试中的缺陷。通常,当在黑盒测试中发现缺陷时,测试工程师需要写缺陷报告,详细描述缺陷所处的环境和版本、发现缺陷的详细步骤和结果,以及截图或相关文件,目的是让开发人员能够快速定位产生缺陷的根本原因,从而快速修复。而有了精准测试后,一旦在黑盒测试中发现缺陷,就可以通过代码示波器查看最近运行的20段代码片段,从而快速帮助开发人员修复缺陷。

2)精准选取回归测试用例。在敏捷和DevOps时代,软件开发过程中的迭代变得非常频繁,我们如何选择回归测试用例?一种方法是全面回归,另一种方法是根据经验选取相关的测试用例。全面回归的缺陷是耗时耗力,根据经验选取相关的测试用例又不够精确,而精准测试可以快速分析新旧版本之间的关系,即新版本涉及旧版本中的哪些代码,并通过反向追溯定位到哪些测试用例应该回归,哪些测试用例可以不回归。

3)提高黑盒测试效率。黑盒测试往往开始会发现大量缺陷,后期很难发现更多的缺陷,而有了精准测试后,可以通过分析代码被覆盖的情况,对没有被覆盖的代码设计测试用例,从而提高黑盒测试效率。

4)有效对测试人员进行考核。针对开发人员,可以通过修复缺陷的平均时间等进行考核,但是业界对于测试人员的考核往往比较困难。而精准测试可以通过统计测试工程师设计/执行测试用例涉及有效代码行的覆盖率,从而对其进行有效的考核。

2.精准测试的缺点

精准测试的缺点也是不可被忽略的。

1)精准测试严重依赖编程语言。当用另一种语言开发一套产品时,就需要另外一套精准测试系统。

2)精准测试仅仅对功能测试发现的缺陷的定位效果好。精准测试仅能定位到功能测试发现的缺陷所对应的代码,而对非功能测试(如性能测试)发现的缺陷进行定位有一定困难。现在,APM(Application Performance Monitor,应用性能监测)工具可以有效定位功能测试中发现的问题,比如可以分析影响功能的代码行、慢SQL等,但是对安全测试、可靠性测试等发现的缺陷还是无法精准定位。

3)精准测试对微服务架构的支持不太友好。针对微服务系统,一旦发现问题也很难定位是哪个服务中的哪段代码出现问题了。

4)精准测试无法定位业务漏洞。与传统的单元测试一样,针对由于开发人员没有理解业务而造成的缺陷,精准测试无法进行定位。

需要强调的是,当前许多人把JaCoCo、APM、Diff等也归属于精准测试工具的理念是错误的,这样的观点仅可以认为是精准化软件测试,而不是精准测试。精准测试的关键因素是紧密结合软件的白盒测试与黑盒测试。