【从零开始学习计算机科学】软件测试(三)回归测试、系统测试 与 验收测试

回归测试

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其它代码产生错误。
回归测试的目的是测试所做的修改达到了预定的目的,如错误得到了改正,新功能得到了实现,能够适应新的运行环境等;不影响软件原有功能的正确性等等。
回归测试的方法主要有再测试全部用例、基于风险选择测试、基于操作剖面选择测试、再测试修改的部分等等。
测试阶段可能发生于软件开发的任一阶段。

回归测试的组织和实施

首先,通过代码相依分析,识别软件中被修改的部分。然后,从原有测试用例库中,排除不适用的测试用例,建立新的测试用例基线库 T 0 T_0 T0。其次,基于风险和操作剖面选择相结合,从新的测试用例基线库中选择测试用例构造有效的套件,测试被修改的软件。最后,若回归测试套件达不到所需的覆盖要求,必须补充新的测试用例,则生成新的测试用例集 T 1 T_1 T1,然后用 T 1 T_1 T1测试修改后的软件。

回归测试集

回归测试集是指能够测试软件的所有功能的代表性测试用例,是专门针对可能会被修改影响的软件功能的附加测试和针对修改过的软件成分的测试。

回归测试的范围

测试所有修改或修正过的功能模块;测试与被修改的模块相关的模块;测试所有新增加的功能模块;测试整个系统。
回归测试的一般方法是再测试全部用例,即选择测试用例库中的全部测试用例组成回归测试包。其优点是安全,最低遗漏回归错误风险;缺点是测试成本最高、工作量大、时间进度受影响。
除此之外,还可以选择基于风险选择测试方法,即基于一定的风险标准从测试用例库中选择回归测试包。其思想是首先运行最重要的、关键的和可疑的测试,而跳过那些非关键的、优先级别低的或者高稳定的测试用例。

回归测试的方法还有基于操作剖面选择测试。用例分布情况反映了系统实际使用情况,因此,优先选择那些针对最重要或最频繁使用功能的用例,释放和缓解最高级别的风险,有助于尽早发现那些对可靠性有最大影响的故障。
当然,针对再测试修改的部分,当测试者对修改的局部化有足够的信心时,可以通过相依性分析识别软件的修改情况并分析修改的影响,将回归测试局限于被改变的模块和它的接口上。

自动回归测试框架

自动回归测试执行策略主要包括以下几个方面:测试用例设计、脚本生成器、业务流管理器、数据管理器、测试调度。
自动回归测试框架的作用是降低管理难度,使用一个管理界面,隐藏管理细节;测试设计和测试实现分离;具备自动脚本生成功能;集成数据驱动、关键字驱动和功能分解测试的最好特征;支持人工测试和自动测试;分离技术性测试人员和非技术性测试人员的工作。

自动回归测试框架的技术特点

基于自动测试工具的测试框架,具有测试计划驱动技术的所有优点;充分利用测试工具的功能,与测试管理集成;基于业务流的测试,数据也是基于业务流配置的;应用与自动测试框架分开;可支持技术性测试人员和非技术性测试人员使用;脚本与数据分开;自动测试开发与运行环境分开;有专门的数据管理模块,数据维护简便;自动生成代码,基本不需要编码,效率极高;使用数据库,不需要人工管理大量文件;采用基于组件的技术,提供预制组件;支持业务功能脚本和录制脚本。

回归测试克服的几个问题

组织回归测试时需要注意的问题主要是:各测试阶段发生的修改一定要在本测试阶段内完成回归,以免将错误遗留到下一回归测试阶段;回归测试期间应对该软件版本冻结,将回归测试发现的问题集中修改、集中回归。
重新进行回归测试时需要注意的问题主要是:安排新的测试者完成回归测试;分配更有经验的测试者开发新的回归测试用例;在不影响测试目标的前提下,鼓励测试者创造性地执行回归测试用例(变化的输入、按键和配置有助于激励测试者揭示新的错误);在回归测试当中,可以将回归测试与兼容性测试结合起来进行。

回归测试人员应掌握的测试手段

要熟悉系统的业务流程,对业务需求以及相关联模块要非常清楚,保证回归测试的质量和效率;及时更新和维护回归测试用例库当中的测试用例,确保执行的回归测试用例是最新的;要掌握回归测试的测试用例优先级别,对优先级高的功能模块优先进行回归测试测试;使用回归测试自动化工具进行测试;回归测试人员应及时与开发人员进行有效的沟通,及时地反馈回归测试测试情况;回归测试人员应该熟悉并掌握系统开发的各种计算机类语言。