软件测试流程深度剖析及改进

2024-06-03 05:04刘雪霞
电脑知识与技术 2024年11期

刘雪霞

摘要:软件测试是软件开发生命周期中最重要的组成部分,在软件开发的整个生命周期中举足轻重。敏捷测试是针对敏捷开发的一种测试方式,注重团队的持续反馈和质量保证,促进传统的软件测试流程的改进。针对目前主流的测试流程中存在的难点,文章从测试设计、测试执行、质量评估、自动化防护网等几个方面提出改进意见,可有效解决当前软件测试流程中存在的一些问题,为一线的软件测试人员和软件测试的项目管理人员提供思路和方法。

关键词:软件测试流程;测试设计;测试执行;自动化防护

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

文章编号:1009-3044(2024)11-0042-03

0 引言

软件测试通常消耗40%~50%的软件开发时间,对于可靠性要求更高的系统,它消耗更多的精力[1]。軟件测试流程在有限的时间、成本和人力资源的条件下,如果测试流程设置正确,分配总资源的15%就可以实现适当的测试[2]。软件测试并非在软件产品的代码编写完成之后开始,而是在整个软件产品的研发过程中一直存在。软件测试对软件产品系统地、全面地进行检验,以确保软件产品满足功能和性能的要求。测试流程主要包括五个环节,分别是测试需求分析、测试计划制定、测试用例设计、执行测试用例,编写测试报告。随着敏捷开发的流行,敏捷软件测试越来越受到青睐,敏捷测试常采用迭代和增量的方式进行测试。随着敏捷开发节奏的加快,敏捷测试对整个测试流程和测试人员提出了更高的要求,从而暴露了测试流程中的一些问题,本文着重针对敏捷测试流程在实际的生产中存在的问题提出改进的方案和方法。

1 软件测试

1.1 软件测试定义

软件测试是对软件需求分析、设计规格说明和编码的最终检查,是保证软件质量的关键步骤[3]。软件测试是一种用来判定软件的完整性、正确性、安全性和质量的过程。1983年,IEEE定义的软件测试是使用人工或自动化的手段来运行或测定某个软件系统的过程[5]。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。

1.2 软件测试流程

软件测试的流程管理非常重要,它关系到软件质量是否达标。软件测试的生命周期覆盖整个软件开发阶段,且有一套完整严格的流程来保证项目产品的正确准时交付,软件测试介入得越早,越能节约整个开发的成本。测试流程主要包含:需求分析评审、测试计划制定、测试设计、测试用例评审、测试用例执行、测试报告编写,每一个环节都至关重要。

2 当前软件测试流程深度剖析与改进

2.1 测试设计场景不全

测试设计活动一般分为针对产品新需求的测试设计和产品继承功能的测试设计。测试设计与功能需求的关系如图1所示。测试策略包含测试设计策略和测试执行策略,根据新需求、继承功能特性及场景测试来设计测试用例库,从新需求和继承特性测试设计测试用例的基线库,同时考虑测试因子和可靠性测试,提高测试用例的复用性。

针对测试设计场景不全问题,可以从以下几个方面着手改进。

2.1.1 梳理测试特性树

需求是客户提出的问题,包括需求背景、应用场景等;特性是客户需求的系统实现,通过开发活动把客户问题转变为系统功能。梳理特性树可以帮助准确把握客户需求。测试特性树与软件开发的功能树同源,如图2所示,测试特性树中的一级、二级、三级特性分别对应全量功能树中的一级、二级、三级特性,针对三级特性详细设计测试用例,尽量避免测试场景遗漏问题。

2.1.2 梳理测试因子库

测试因子是指测试设计中需要考量的影响因素,如环境与测试难易程度等。正确地梳理测试因子有助于避免测试遗漏。测试设计本身是一个先发散后综合的过程,在发散阶段,尽可能地考虑所有可能会对测试产生影响的因素,提取测试影响因子;综合阶段通过合适的覆盖方法,把前者整合成测试用例。从几个方面提取测试因子库:分析待测试的新特性,分析继承特性、以往积累的经验,分析测试遗漏等,然后基于测试因子库去做测试设计和测试用例的输出,同时在测试设计过程中提取测试因子,通过对提取的测试因子评审取舍,填充丰富当前的测试因子库。测试因子库需要不断的维护和丰富,便于后续测试设计的可持续使用。

2.1.3 梳理故障模式库

可靠性测试的主要目的是评估产品或系统在特定条件下的可靠性和稳定性。测试软件功能的异常情况,可以帮助确定产品或系统在正常使用期间的故障率,并确定是否需要进行改进以提高可靠性和稳定性。针对可靠性测试梳理故障模式库,在后续版本中复用,提高测试效率和软件版本质量。

2.1.4 现网问题回溯改进

针对现网问题及时复盘,进行测试的回溯和改进,完成测试遗漏,考虑是否加入因子库,防止后续出现类似现网问题,确保不断提升软件产品质量。

2.1.5 知识技能地图

软件测试是一个知识密集型的过程,因而可使用对知识管理的原则和技术来管理软件测试知识[5]。针对团队业务,梳理测试人员需要掌握的技能和知识,以此构建测试知识地图,便于团队成员业务能力的提升,提高测试效率,同时需要定期维护和更新知识技能地图。

2.2 测试执行进展跟踪烦琐

测试执行是软件测试过程中的重要环节,很多原因会导致测试执行进展跟踪烦琐,比如测试过程中,测试人员需要对不同平台和不同版本的功能模块进行测试;测试工具的不完善,已有的测试工具不足以覆盖当前的测试内容,需要手工测试,并详细记录测试过程和结果,无疑增加了测试的难度;多个开发迭代,测试用例多及用例可自动化率低等。可以从以下几个方面改善测试执行进展跟踪烦琐。

1) 提前准备测试环境。提前准备测试环境,可提高测试人员的执行效率,缩短测试执行时间,从而有效提高产品质量。

2) 跟踪开发人员转测,提前反馈风险。有效的沟通和协作是确保软件质量的关键之一。及时准确地跟踪开发的需求转测具体时间,有助于软件质量的保证,若有风险,提前反馈,避免时间和人力成本的过度投入,节约成本。

3) 重视测试进展同步,严把回归测试。迭代开发周期短,任务紧,确保每个版本所有需求,例行同步测试的进展,识别阻塞问题,并及时组织开发人员合入解决,严把回归测试。

2.3 自动化防护网

自动化防护网能有效解决修改引入问题,软件开发的过程中,经常会出现开发版本修改某些bug之后,需要测试人员再次测试版本的情况。这个过程引入的一些修改,有可能导致一些潜在的问题或错误,甚至影响修改前软件的正常运行。解决此问题,重点关注建立健全自动化防护网,确保全量用例自动化每版本例行运行,实时发现修改引入问题,这将极大地提高软件质量和交付效率。

2.4 用例自动化完成缓慢

软件自动化测试是目前软件开发生命周期中应用最广泛的方法,这是确保软件质量的主要手段。软件测试用例自动化完成缓慢的原因可能有多种:测试用例复杂度高、缺乏统一的测试框架和测试规范、自动化依赖配置和测试环境问题。可以从以下几个方面着手加速测试用例的自动化完成:1) 测试团队成员赋能,纳入测试人员必备能力,测试执行完成的同时要求自动化写作完成。2) 制定明确可行的测试计划和测试预期目标。3) 采用合适的自动化框架,提升代码复用率。4) 测试用例优先级排序,将优先级高的用例先完成自动化,有助于更早地发现问题。

2.5 测试质量评估

软件测试过程中的关键任务之一是测试质量评估,测试质量评估是为了说明某个阶段的测试开展的充分性和质量目标是否达标,并且给出质量总结结论输出,帮助测试团队改进测试策略和流程,为软件质量提供有力的支撑和保证。测试质量评估除了常规的测试用例设计和覆盖、测试执行的有效性、缺陷的管理、测试结果的分析报告等,还可以通过侧重以下质量度量指标,提升测试质量评估的有效性。

2.5.1 代码覆盖率

基于代码覆盖率提升产品测试质量和测试工程能力。代码覆盖率着重显示未覆盖的代码有多少。开发人员借助代码覆盖率分析未覆盖的代码,以此帮助测试人员完善和补充测试用例和场景,通过代码覆盖率,测试人员和开发人员建立协同和纽带。

2.5.2 代码缺陷密度

软件代码缺陷密度用来评估软件代码中缺陷的数量,它统计在特定代码范围内,缺陷数量与代码行数或者函数数量的比率。缺陷密度值越大,代码范围内存在的缺陷数量越多,代码质量越低,反之,缺陷密度值越小,代码质量越高,对项目进展影响相对较小。

2.5.3 缺陷分析

缺陷数据是最有效的质量分析手段之一,反映被测对象的质量信息。缺陷分析是对软件产品质量进行定量表示和定性分析,缺陷分析可以更准确地把控产品的开发成本、进度和质量。缺陷分析的作用和目的是:理解、评估、预测、改进。通过对缺陷数据的定量和定性分析,获得对软件产品的内在规律的认识,便于预测后续的基线。对比实际缺陷与质量目标的偏差,评估产品质量。建立缺陷模型,为后续制定测试计划和调整测试策略提供依据。基于缺陷分析结果提炼改进点,对问题进行溯源,并制定改进措施。缺陷分析的方法可分为以下維度:根因分析、过程改进、分类分析、质量评估。

2.6 云测试报告

软件测试的主要工作除了测试计划制定、测试方案和用例设计、测试执行、回归测试等,测试报告输出也是关键性的工作之一,且必不可少。测试报告要详细记录测试过程和结果,包括测试用例的执行情况、缺陷的发现和修复情况等。为了确保报告的准确性和完整性,测试团队需要投入大量的时间和精力,对测试数据进行收集、分析和整理。由于软件版本迭代快和测试场景的复杂性等,测试报告单纯由人工输出,势必占用太多时间,需要采取有效的方法应对。

采用自动化云平台或者工具,自动统计需求编号,管理用例执行情况,需求发现的问题及闭环情况,做到一键式生成测试报告,从而减轻测试工作人员的负担。云测试报告平台,如图3所示,由三个模块组成:云测试报告模块、云文档管理模块、云测试数据源管理模块。其中,云测试报告模块是核心模块。云文档管理模块负责管理上传的测试报告模板,云测试数据源管理模块负责管理测试数据,如测试用例、缺陷汇总、缺陷分析等,云测试报告模块通过模板新建云测试报告,使用云测试数据源导入相关测试数据,并进行云测试报告的在线编辑,最终生成测试报告。

3 结束语

本文针对软件测试的部分流程进行了深刻的分析,并对测试流程中的痛点提出了改进的措施和方法,对测试场景设计不全,测试执行进展的跟踪、自动化防护网建立与维护、用例自动化完成缓慢、测试质量评估、云测试报告等分别进行分析,提出改进措施,为一线的软件测试人员和软件测试的项目管理人员提供思路和方法。

参考文献:

[1] BHADAURIA S S,KOTHARI A,PRASAD L. Design architecture class diagram for a comprehensive testing tool[J]. Oriental Journal of Computer Science and Technology,2011,4(2):281-292.

[2] VUKOVIC V,DJURKOVIC J,TRNINIC J. A business software testing process-based model design[J]. International Journal of Software Engineering and Knowledge Engineering,2018,28(5):701-749.

[3] 宫云战. 软件测试教程[M]. 3版. 北京:机械工业出版社,2022.

[4] 王娜,万嵩,胡君. 软件测试:双色版[M]. 哈尔滨:东北林业大学出版社,2020.

[5] DE SOUZA ? F,DE ALMEIDA FALBO R,VIJAYKUMAR N L. Knowledge management initiatives in software testing:a mapping study[J]. Information and Software Technology,2015,57:378-391.

【通联编辑:朱宝贵】