APP下载

基于改进V模型的软件测试过程研究

2021-04-25申晓彦郭佳旭曹春芳杨薇姚素娟王霞邢璐张晔

电脑知识与技术 2021年9期
关键词:测试计划

申晓彦 郭佳旭 曹春芳 杨薇 姚素娟 王霞 邢璐 张晔

摘要:软件测试过程在软件开发中发挥着重要作用,传统的基于V模型的软件测试过程比较滞后,在软件代码完成之后才开始测试活动,当发现软件缺陷时需要付出较大的代价。该文提出了一种改进的软件测试过程,将测试过程中的确定测试需求、制定测试计划、设计测试用例三个环节,与软件需求分析、软件概要设计、软件详细设计活动并行开展,有助于在软件开发早期发现潜在的缺陷,能够有效提升软件质量、缩短软件开发周期、降低软件开发成本。

关键词:测试需求;测试计划;测试设计;分析与总结

中图分类号:TP311       文献标识码:A

文章编号:1009-3044(2021)09-0081-02

开放科学(资源服务)标识码(OSID):

随着软件规模的攀升、软件功能的复杂化、软件缺陷的影响加剧,软件测试的重要性日益凸显。为了保证软件测试的效率及质量,需要采用规范化的软件测试过程。

软件测试过程指一个定义好的、受控制的、由人来执行的过程,集成了测试概念、测试策略、测试技术和测试度量。软件测试过程支持测试活动,为测试小组提供从测试计划到测试输出评价的指导。

本文对软件测试过程进行了深入的研究和分析,在原有V模型软件测试过程[1]的基础上,提出一种改进的软件测试过程,使软件测试的设计阶段与软件开发过程并行开展,可在软件开发早期发现潜在的缺陷,如:软件需求的不可测试性、异常情况下软件的缺陷等问题,能够有效提升软件质量、缩短软件开发周期。

1 概述

传统的基于V模型的软件测试过程如图1所示,它将软件测试与软件设计阶段分开,且软件测试在软件开发过程中处于比较靠后的阶段,由此使得软件设计阶段的缺陷,在软件开发后期才能被发现,而此时修改软件将要付出较大的代价,容易导致软件开发周期延长。

为使软件测试尽早介入软件开发过程,本文中提出在软件开发过程的早期阶段,开展软件测试设计,与软件需求分析、软件概要设计、软件详细设计活动并行开展,改进后的软件测试过程如图2所示。

由上图可知,软件开发的每个阶段都有与之对应的测试活动,软件测试与软件开发紧密相关,且贯穿于整个软件生命周期。

2 软件测试过程

根据测试对象与软件开发过程,可将测试过程划分四个阶段,即单元测试、集成测试、配置项测试、系统测试。

每个阶段的测试过程基本一致,可概括为:确定测试需求、制定测试计划、设计测试用例、执行测试、分析测试数据、总结测试活动[2-4],如圖3所示。其中,确定测试需求、制定测试计划、设计测试用例三个环节,可在软件开发过程早期开展。即确定系统测试需求、制定系统测试计划、设计系统测试用例,可与系统需求分析并行开展;确定软件测试需求、制定软件测试计划、设计软件测试用例,可与软件需求分析并行开展;确定集成部件测试需求、制定集成部件测试计划、设计集成部件测试用例,可与概要设计并行开展;确定单元测试需求、制定单元测试计划、设计单元测试用例,可与详细设计并行开展。

2.1 确定测试需求

根据软件任务书、软件需求说明、软件设计说明等相关内容,从软件功能、软件性能、软件外部接口、各软件之间的接口、软件模块之间的接口、软件可靠性、软件安全性、语句或分支覆盖率等方面,在软件开发阶段早期,确定各项测试需求。

2.2 制定测试计划

根据测试需求的内容,按照如下步骤,规划具体的测试活动,制定测试计划:

1)确定参与测试的人员及分工;

2)提出测试所需的软、硬件工具与设备;

3)规划测试所需的环境,该环境可以是实际运行环境,也可以是模拟的运行环境。如果采用模拟环境,则应将测试环境与真实环境进行比较,对二者之间的差异性进行分析说明;

4)按照测试需求,确定测试范围,策划需要开展测试内容,以及测试进展顺序;

5)针对测试内容,预计测试开展时间及进度安排;

6)制定测试评价准则与测试终止条件。

根据上述内容,制定软件测试计划,用于指导测试工作。

2.3 设计测试用例

根据软件测试需求、测试范围、及测试内容,设计测试用例,测试用例的类型可从以下几方面考虑[3,5]:

1)功能测试;2)性能测试;3)外部接口测试;4)内部接口测试;5)可靠性、安全性测试;6)边界测试;7)余量测试;8)强度测试;9)时序测试。

按照测试级别的不同要求设计测试用例,可采用等价类划分、边界值分析、错误推测法[6]、因果图等方法设计测试用例。测试用例应兼顾测试的充分性和测试的效率,以及测试的可操作性和可复用性。设计测试用例时,应重点关注以下内容:

1)测试输入及条件,应包含正常范围、异常范围的输入,以及输入的时间与顺序;

2)测试步骤,即测试执行的具体过程;

3)预期测试结果,对每一步产生的结果均应给出预期结果;

4)评价结果的准则,包括输出可能的变化范围、最大/最小测试持续时间等;

5)测试终止条件,即正常或异常结束测试的条件。

与此同时,提出需求文档、设计文档中存在的各种缺陷,如:某项需求不具备可测试性、多个需求点之间存在逻辑矛盾、软件对于异常情况的防御能力不足等,以便于软件需求开发人员、软件设计人员尽早发现并修改相关缺陷。

2.4 执行测试

当软件代码满足执行测试条件时,按以下顺序执行测试活动:

1)将测试所需的各项软、硬件资源准备到位,并搭建测试平台;

2)编写测试所需的驱动程序、桩程序;

3)根据设计的测试用例,按步骤逐项执行;

4)记录每一步的测试结果,并将其与预期测试结果进行比较,按照评价结果的准则,对测试结果进行判定;

5)如果测试结果正确,测试全部通过,则可进入下一环节“分析测试结果”;否则进入第6步;

6)记录并提交测试发现的Bug;

7)修正处理Bug,并记录Bug的原因分析及解决措施;

8)针对修改的内容进行影响域分析,确定回归测试用例,避免因更改引发新的缺陷。在确定回归测试用例时,应根据测试充分性对已有的测试用例集进行约简,减少测试用例集的冗余度,提高软件测试的效率[7];

9)执行回归测试用例,如果测试用例通过,则可进入下一环节“分析测试结果”;否则转入第6步。

2.5 分析测试数据

每个阶段测试结束后,采集测试相关数据,如:测试用例通过情况、测试用例新增或修改情况、缺陷数、缺陷的分布、缺陷关闭情况、测试实际执行时间等。

并对采集数据进行综合分析,得出相关的分析与统计结果,如:缺陷发现的效率、缺陷率、缺陷密度、缺陷关闭率等。必要时,可对各个模块(或功能、接口)进行缺陷分析。测试经验表明,测试缺陷越多的部分,其隐藏的缺陷也越多。

在采集与分析测试数据时,可采用测试过程管理平台自动收集相关数据[8],有助于提升采集、分析数据的效率与准确率。

通过上述分析,可以为开发人员提供清晰的软件分析结果,使其了解缺陷主要集中在哪些软件功能、接口或模块,以便于在后续开发时予以关注,避免同类问题重复发生。

2.6 总结测试活动

对各阶段的测试活动进行总結,根据测试结果和通过准则,从以下方面评价测试工作和被测软件,并形成测试报告。

1)测试的充分性;2)测试执行及通过情况;3)测试发现的缺陷、缺陷分析及缺陷关闭情况;4)测试遗留缺陷描述,及其对软件的影响;5)测试环境与实际环境的差异,以及差异对测试结果的影响;6)提供测试结论,测试是否通过;并可描述各项测试的测试结果、测试中出现的问题及处理情况等;7)从被测软件的设计、编码等方面,提出改进建议。

3 结论

软件测试的目的就是发现软件的缺陷、提高软件的质量。改进后的软件测试过程,在尽早发现软件缺陷、提高软件质量、缩短软件研制周期等方面,具有显著的优势。

经统计,在软件研制项目中采用上述软件测试过程,可在软件需求分析、软件概要设计、软件详细设计阶段,发现多项软件缺陷,约占软件缺陷总数的15%—20%;从而可以有效降低修改软件缺陷而耗费的人力、物力资源,并可使软件研制周期缩短约10%—20%。

参考文献:

[1] 周童,方彦军.一种新的软件测试过程模型—“跑道”模型[J].计算机测量与控制,2015,23(10):3347-3349.

[2] 王树义,南建国,黄雷.航空软件测试过程模型应用研究[J].计算机测量与控制,2013,21(6):1443-1445.

[3] 王艳军,王勇利,顾滨兵.基于GJB2725A的军用软件测试管理系统设计与实现[J].计算机测量与控制,2018,26(8):133-137

[4] 杨薇,曹春芳,姚素娟,等.柴油机电控系统软件测试设计及用例复用方法研究[J].自动化仪表,2018,39(9):79-82.

[5] 马海云,张少刚.软件质量保证与软件测试技术[M].北京:国防工业出版社,2011:122-124.

[6] 郑炜,杨喜兵,胡圣佑,等.基于变异分析和覆盖准则的回归测试用例集缩减[J].西北工业大学学报,2017,35(3):494-499.

【通联编辑:朱宝贵】

猜你喜欢

测试计划
基于J2EE+Flex技术的JFTest系统分析与实现
基于ECU-TEST和Jenkins的自动化测试方法研究
法国增加EPR压力容器测试内容
大众VAS5054诊断仪操作介绍(四)
R&S CMW PQA测试平台实现PTCRB和GCF要求
基于TestLink的测试管理系统研究
软件测试流程研究