软件测试(Software Testing):SQA的子领域,一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。通常通过划分等价类和临界值的方法进行测试,比较实际输出结果和预期结果是否一致,从而对软件进行审核修改,提高软件质量。软件测试的对象可能是中间版本也可能是最终版的计算机软件(整体或部分均可),目的在于更确切地满足软件开发的需求和规格。软件测试人员通过软件测试能对系统进行较为全面的了解。
在软件尚未完成时就可以通过软件规格说明先进行一部分测试,有时候软件规格说明以外的测试有时候也是有必要的。
下面是一些概念性的总结:
黑盒测试(Function Testing)
用于检测程序功能是否能够正常使用,黑盒:不考虑程序内部结构和内部特征(内部逻辑结构)的情况下,主要针对软件界面和软件功能进行测试。就此看来黑盒测试是从用户角度出发的测试。
常用的黑盒测试方法有等价类划分、边界值分析、决策表测试。
白盒测试(Structural Testing)
基于代码的测试。
白盒测试的主要方法:
代码检查法
静态结构分析法
静态质量度量法
逻辑覆盖法
基本路径测试法
域检测
符号测试
路径覆盖
程序变异
白盒测试中逻辑覆盖的方法:
语句覆盖:语句覆盖每条语句至少执行一次。
判定覆盖:判定覆盖每个判定的每个分支至少执行一次。
条件覆盖:条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖:判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖:条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖:路径覆盖使程序中每一条可能的路径至少执行一次。
六种覆盖标准能力(发现错误)由弱至强。
测试用例(Test Case)
为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下要制造极端状态和意外状态,如网络异常中断、电源断电等。
回归测试
修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
1.重复以前的全部或部分的相同测试。
2.新加入测试的模组,可能对其他模组产生副作用,故须进行某些程度的回归测试。
3.回归测试的重心,以关键性模组为核心。
群集现象(软件测试过程中应该重视)
软件测试中一个功能部件已发现的缺陷越多,找到它的更多未发现的缺陷的可能性就越大。
软件测试过程中应注意的事项:
根据满足用户需求的目的,测试应该从需求阶段开始介入。
软件测试应该由第三方(非编写代码的程序员本人)进行。
严格的而具有指导性的测试计划是必要的。
等价类(常用的黑盒测试用例设计方法,主要关心输入数据及输出结果)
把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一个部分选取少数具有代表性的数据作为测试用例。常用的黑盒测试用例设计方法,也是基于规格说明的测试。
划分等价类的方法
在每个等价类中,各个输入数据对于揭露程序中的错误都是等效的。所以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。
有效等价类:
是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
无效等价类:
与有效等价类的定义相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。
设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。
划分等价类的标准
所谓等价类是指输入域的某个互不相交的子集合,所有等价类的并集便是整个输入域。
划分等价类要注意集合的划分,划分为互不相交的一组子集,而子集的并是整个集合。
并是整个集合,保证完备性
子集互不相交,保证一种形式的无冗余性
同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径"。
边界值(常用的黑盒测试用例设计方法,主要关心输入数据及输出结果)
对输入或输出的边界值进行测试的一种测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
与等价划分的区别
边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
为什么使用边界值分析法
大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。
边界值分析
使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价 类中的典型值或任意值作为测试数据。
常见的边界值
对16-bit 的整数而言 32767 和 -32768 是边界
屏幕上光标在最左上、最右下位置
报表的第一行和最后一行
数组元素的第一个和最后一个
循环的第 0 次、第 1 次和倒数第 2 次、最后一次