一、什么是软件测试的覆盖率?
软件测试覆盖率是软件测试技术有效性的一个度量手段,用来度量测试完整性。
意思概括的说,软件测试的工作中会有非常非常多的item(任务),执行过的任务和总任务数的一个比值,这就是覆盖率。
计算公式:覆盖率=(至少被执行一次的item数)/item的总数
比如从大的角度来说,我的一个需求现在有一万个功能点,那这一次测试了9000个功能点。用9000除以1万,证明这轮测试的功能点覆盖率达到了90%,这就是一个最简单的计算模式。
二、测试覆盖率的特点
当然覆盖率也没有这么简单,覆盖率他会有一些自身的特点。
1、通过覆盖率数据可以特别清晰地判断出一轮测试到底是不是足够充分。
一般情况下来说,如果在一次迭代也好,在一次版本发布也好。手工测试可能没有完全覆盖项目中的功能,需要用一些自动化的手段来补足,来保证覆盖率达到某一个标准之上,才能够证明这一个版本的测试是通过的。
2、可以通过覆盖率分析出测试的弱点在哪些方面。
说有的人每一次测试都能覆盖到80%,有的人可能覆盖到60%,这两个人在对于这次测试工作的衡量上,会产生一些问题,这个衡量度的把握,到底是覆盖率高的人最后正确,还是覆盖率低的人正确,这个不能够草率地去下结论,要根据实际情况去深入的分析。这一次的程序修改到底会影响哪些方面,才能够分析出应该覆盖哪些方面的测试。如果有遗漏,就能够分析出这次测试里面的弱点,到底在于测试的设计阶段,还是的执行阶段。
3、测试覆盖率能够指导增加设计测试用例。
测试用例的增加,会有效的提高测试质量。但是测试的目的不是一味的去追求覆盖率,因为测试成本本身会随着的测试覆盖率的增加而增加。
三、测试覆盖率对于黑盒测试
测试覆盖率对于黑盒测试来说主要标识的两个方面,一个是需求覆盖,一个是用例覆盖。
1、需求覆盖
从需求覆盖角度上讲定义很简单,就表示在测试过程中,有哪些需求方法,有哪些函数被测试到了,他被测试到的概率(频率)到底有多大,这些函数在系统所有函数中的占比是多少。并且还要制定一个标准,有多大的概率,多大的通过率,才能够叫做这一版本的测试完成,这是需求覆盖的内容。
需求覆盖本质上在计算的时候,是根据需求文档为依据的。需求文档里会有一些需求点的拆解,根据这些点来决定来判断测试需求覆盖率。也就是说哪些需求是被验证到的,哪些需求没有被被验证到。我一共有100个需求,但是其中可能有一个需求的点我没有测试到,当然这其中的原因有很多,有可能是开发没有提交,有可能是这方面就完全忽视了,用例也没有涉及到,所造成的需求遗漏。
用下面公式计算需求覆盖率是多少。
计算公式:需求覆盖=(被验证到的需求数量)/(总的需求总数)
一般来说一个程序在第一次发布的时候,发布到线上给其他客户使用时候的需求覆盖率一定要达到百分之百。如果是后续迭代的时候,就要去考量每一次代码修改所影响到的范围。通过分析这个影响范围来决定到底应该覆盖哪些需求,这个时候的覆盖率就不一定是百分之百。但是仍然需要有一定的覆盖率,即便其他的模块可能跟这次修改没有任何影响,那我也需要从测试角度去考虑。在有条件的情况下,去完成更多需求方面的基本覆盖。
2、用例覆盖
用例覆盖就很明显,它主要体现的就是在每轮测试验证的过程中,通过用例数在总用例数中的比重计算得出。
计算公式:用例覆盖=(验证通过的用例数量)/(总的用例总数)
验证过的用例是包含两方面,除了手工测试的用例,还包含自动化测试的用例。测试覆盖率不是说用例覆盖越高越好,还是要经过判断之后,在得出结论。但是用例覆盖是一个非常关键的度量因素,尽量的保证覆盖要全面。一般情况下,每一次上线要求自动化加手动测试的用例覆盖,要高到80%以上,才能够教这一轮测试的完成。