系统测试是软件开发过程中的一个重要的组成部分,是贯穿整个软件开发生命周期、对软件产品进行验证和确认的活动过程。目的是尽快尽早发现在软件产品中所存在的各种问题:与用户需求、预定义的不一致性问题。
测试发现问题后,要找出其错误原因和位置,进行改正。
系统测试主要包括以下几部分:
静态测试方法包括软工检测和计算机辅助分析;动态包括黑盒(功能测试)和白盒测试。本篇文章重点介绍一下白盒测试的逻辑覆盖。
逻辑覆盖分为语句、条件、判定/条件、条件组合、路径覆盖。
以下面图为例进行说明:
1)语句覆盖
这是起码要做要的覆盖。程序里的每条语句至少执行一次。
测试用例:
{x=3, y=3}可以执行到语句块1和语句块4,所走的路径:a-b-e-f{x=-3, y=0}可以执行到语句块2、语句块3和语句块4,所走的路径:a-c-d-f
从图中可以看出语句里的判定、分支等就没有什么意义了。可以说这个是测试的最低要求了。
2)判定覆盖
每个判断的真假分支至少执行一次。
测试用例:
覆盖率要比语句覆盖高近乎一倍,但是在判定语句中也会遗漏许多路径。
3)条件覆盖
和判定的覆盖思路一样,只是把重点从判定移动到条件上来了,每个判定中的条件可能至少满足一次。
测试用例:
4)判定/条件覆盖
每个条件所有可能至少出现一次,并且每个判定本身的判定结果也要出现一次。判定取真假就就覆盖了判定,可是条件去真假两次完全不能满足条件的各种组合。所以条件组合覆盖出现了。
测试用例:
达到100%判定条件覆盖一定能够达到100%的条件、100%判定和100%语句覆盖。
5)条件组合覆盖
每个判定中条件的各种可能组合至少满足一次。
测试用例:
条件的各种可能都出现了,必然把判定给覆盖了,它覆盖了上面的四种,用例数量大大增加了。
6)路径覆盖
把所有可能路径至少都走一遍
测试用例:
覆盖错误能力是由弱至强的。
随着软件测试技术的不断发展,测试方法也越来越多样化,针对性更强;选择更合适的软件测试方法可以让我们事半功倍。
软考复习之路——软工之系统测试