APP下载

软件自动化测试实施过程与问题研究

2021-07-19张晓敏

电脑与电信 2021年5期
关键词:测试用例用例阶段

张晓敏

(福建信息职业技术学院,福建 福州 350003)

1 引言

在企业软件测试发展过程中,伴随着软件产品种类、功能与版本的增多,手工测试难以满足测试效率与质量的要求,一方面会提高开发成本,导致人工费用占比不断扩大;另一方面无法保证最终的软件质量,降低测试效率,增加项目风险[1]。在软件质量与效率的双重压力下,自动化测试开始提上日程,其实施过程呈螺旋形上升态势,主要包含原型启动、向上爬升、蓬勃发展、暂时阻滞与新的上升5个阶段。整个自动化测试开展的时间跨度依测试团队与软件规模的不同需要2年到数年不等,本文以作者在一家数据通信产品研发生产企业主持承担的网络设备嵌入式软件自动化测试团队组建、技术开发及项目实施为主要研究对象,分析过程中遇到的主要问题与解决对策。

2 自动化测试实施过程

2.1 原型启动阶段

启动阶段进行自动化测试框架与设计方法的探索,输出自动化测试原型,验证思路的可行性,这个阶段历时近1年。

(1)需求与可行性分析:输出初步的自动化测试需求,进行可行性分析,依据资源与技术难度判断短中长期能取得的预期效果。

(2)前期调研与原型开发:选取具有典型意义且实现周期较短的测试用例作为自动化测试开发对象,选取专用网络设备测试仪表为自动化测试基础,输出总体规划与开发指南第一稿。

(3)自动化测试用例编写:在原型可行的基础上,完成部分优先级高的测试用例自动化,并输出第一版自动化测试公共库,用于支撑后续开发。

(4)前期经验总结:制订自动化测试软件开发流程与规范,明确手工测试用例自动化转化要求与做法。

该阶段相关测试用例自动化后执行时间缩短50%以上,初期自动化测试用例数量还很少,自动化率低于10%。

2.2 向上爬升阶段

设定初期的自动化测试目标,并在项目中正式引入自动化测试。

(1)已有测试用例的自动化:提升旧功能的自动化测试率是提升项目回归测试效率的重点。

(2)项目新增用例的自动化:成为项目提升测试效率的重要组成部分。

(3)自动化测试质量提升:减少由于自动化测试用例导致的测试失败。本案例自动化测试失败率从实施前半年的65%降至30%,准确性与易用性有效提高。

(4)自动化测试方法优化:前期更多依赖专业的网络产品测试设备,该阶段开始基于PC 开发自动化测试。测试条件预判断、测试日志分析工具等手段的引入,提升了自动化执行效率;自动化测试统一管理平台的预研与设计,完善了自动化测试管理过程。

在本案例中,该阶段历时18 个月左右,自动化率达到40%,可节约40%左右的手工测试资源。

2.3 蓬勃发展阶段

自动化测试对项目测试效率的提升作用日益明显,自动化测试的发展进入蓬勃茁壮期,主要工作如下:

(1)自动化测试用例大幅增加:每周、每月、每年的自动化测试用例产出按目标稳步提升,积累到较为可观的数量。

(2)自动化测试纳入软件开发流程:自动化测试成为项目的固化环节,每个项目必须设定自动化测试用例设计、编写与执行的目标。自动化测试在受到流程规范与项目目标约束的同时,也为项目目标的达成做出更大的贡献。

(3)自动化测试技术提升:公共库优化、自动化统一管理平台、应对新产品的自动化测试框架、故障注入工具[2]等一系列技术研发在这个阶段持续开展。

这是自动化测试发展的“黄金时代”,大致持续2年时间,自动化测试用例近1万个,自动化率达到75%。项目全面使用自动化测试,回归测试效率大幅提升,自动化测试优势明显[3],为测试质量与效率提供有力支撑。表1给出前3个阶段的自动化测试用例数量、覆盖率与测试失败率等数据,可看出数据上升明显。

表1 前3个阶段自动化测试统计数据

2.4 暂时阻滞阶段

自动化测试经历了4~5年的发展后,进入了相对停滞的状态。主要表现在自动化测试仍在运行,但新增用例少,自动化覆盖率下降,主要原因有:

(1)自动化测试问题积累而未决。自动化用例执行失败过多、测试环境不稳定、测试结果不准确等问题层出不穷,项目组对自动化测试失去信心。

(2)自动化测试技术未跟上产品发展的需求。网络设备中双(多)机备份、应用层技术等较复杂的功能对自动化测试技术提出了新的要求。

(3)自动化测试资源相对减少。主要是新产品、新功能手工测试占用了更多的测试人力资源,这种情况与自动化测试启动初期相似。

该阶段自动化测试用例的数量少量增加,但自动化率下降,如果要提升自动化率,则相关的自动化测试程序以及设施维护成本也会在很大程度上有所提升[4]。

2.5 新的上升阶段

新产品的不断出现对自动化测试提出新的要求,自动化测试支持嵌入式、C/S(Client/Server,客户端/服务器)、B/S(Browser/Server,浏览器/服务器)、云端软件,满足瀑布或敏捷等多种开发模式,不同的自动化测试框架齐头并进。

(1)注重自动化测试技术的积累与投入,包括建立灵活、可扩展的自动化测试框架[5],新产品线与新功能所需测试技术的分析实践等。

(2)问题解决及时闭环。每个自动化测试执行失败项都能够在计划时间内完成分析、得出结论并解决。

在这个阶段,测试团队不仅关注自动化测试用例数量或比例,而开始通过各条产品线自动化测试的均衡性、测试问题的解决情况、自动化测试技术积累的程度等综合考量自动化测试的实施水平与效果。

3 自动化测试问题与解决方法分析

从上文可以看出,自动化测试实施的5个阶段均存在着不同类型、不同程度的问题,结合实际实施情况对相应问题进行原因分析,并探索解决方法。

3.1 问题与原因分析

3.1.1 自动化测试目标定位不准确

(1)认为自动化测试是缩短软件项目周期的“银弹”:自动化测试对缩短项目周期的帮助与项目的成熟度、类型等密切关联,对于需求变化大的新功能、新产品类项目,由于需求、设计与代码都在快速变更,自动化测试投入产出比较低。

(2)要求自动化测试发现新缺陷:自动化测试一般用于重复执行已执行过的测试用例,发现新缺陷的可能性很小,目标重在提升测试效率。当释放出更多的人力用于改进测试设计质量,或运行更多手工测试用例,从而对发现缺陷产生间接贡献。

(3)过于关注旧用例自动化:随着新增用例的大幅增长,项目自动化率提升较为缓慢。

3.1.2 自动化测试效率低

(1)执行与分析时间长:主要原因在于测试环境不稳定导致测试用例无效执行,失败信息匮乏导致结果分析时间耗费大。

(2)自动化测试用例维护更新慢:自动化用例数量增加,修改维护工作量加大。

3.1.3 自动化测试质量不足

(1)测试质量制约自动化质量:在测试方案储备少,测试覆盖率低、测试缺陷遗漏多的情况下,自动化测试作用无法充分发挥。

(2)重“量”轻“质”:前期以提升自动化测试率为主要目标,自动化测试用例数量达到一定水平,质量重视不足。自动化测试的可维护性也是质量的一部分,应充分保证自动化用例的正确性与有效性。

(3)自动化测试技术不适应软件更新需求:大部分资源投入在自动化测试用例编写上,自动化测试技术更新相对缓慢,无法适应新版本软件的测试需求。

3.2 解决方法小结

针对自动化测试常见的目标、效率与质量方面的问题及原因,在实施过程中从认识、技术、数据分析等多个方面寻找、实践解决方法,归纳总结如表2所示。

表2 自动化测试问题与解决方法分析表

4 最佳实践过程探索

通过本自动化测试案例的实施,摸索、总结适用于网络设备相关软件产品的自动化测试实践过程,主要包含5大部分工作:

(1)前期准备:进行自动化测试启动基础分析及需求调研。

(2)原型开发:自动化测试工具调研,选取少量有代表性的测试用例进行原型开发、验证,储备相应技术、设计与开发规范。

(3)纳入项目流程:遵循软件项目开发流程进行自动化测试设计、开发与执行。

(4)自动化测试技术更新:使用各类新的自动化测试技术、方法与工具,提升自动化测试质量与效率。

(5)新产品自动化测试:适应软件产品更新需求,自动化测试进入可持续、良性发展。

最佳实践过程如图1所示。

图1 软件自动化测试实践过程

5 结束语

本文以一个测试团队组织、开展自动化测试的真实过程为案例,分析自动化测试实施过程中在目标定位、测试效率与测试质量等方面的常见问题,并从项目管理的目标设定、数据分析,自动化测试统一管理平台、日志分析工具、测试环境固化等技术,以及人员培训等方面提出相应的解决方法,可供软件测试团队从无到有构建自动化测试时参考。虽然本案例的实施持续了7、8年,但自动化测试的脚步仍未停歇,我们期望构建适应性更强的自动化测试框架,实现软件开发测试全过程的自动化,使得大规模软件团队的协作和硬件资源的使用效率[5]得到进一步提升。

猜你喜欢

测试用例用例阶段
关于基础教育阶段实验教学的几点看法
UML用例间包含关系与泛化关系的比较与分析
UML用例模型中依赖关系的比较与分析
基于SmartUnit的安全通信系统单元测试用例自动生成
在学前教育阶段,提前抢跑,只能跑得快一时,却跑不快一生。
联锁软件详细设计的测试需求分析和用例编写
從出土文獻用例看王氏父子校讀古書的得失
基于混合遗传算法的回归测试用例集最小化研究
基于依赖结构的测试用例优先级技术
大热的O2O三个阶段,你在哪?