软件自动化测试浅析

(整期优先)网络出版时间:2023-11-30
/ 2

软件自动化测试浅析

张骕李禀津冯之昂

云南省信息技术发展中心 云南 昆明 650000

摘要:自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。自动化测试使用自动化测试工具来执行测试用例套件,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,可以记录该测试套件并根据需要重复执行,最后评估运行结果。自动化测试采用的是以程序测试程序,以代码代替思维,以脚本的运行代替手工测试。自动化的目标是减少手动运行的测试用例的次数,而不是完全消除手动测试。

关键词:软件;自动化测试

一、引言

软件测试最早可以追溯到1958年的美国第一个载人航天计划-水星计划,当时在该计划中首次诞生了软件测试团队。这个时候软件也只是萌芽阶段,各种软件的理论,标准都还没有诞生,因此很长一段时间内,软件测试时间内是没有什么发展的。1975年,这一年,微软的诞生,让软件开发得到了快速发展。在1989年,一家叫Mercury Interactive的公司在美国的加利福尼亚州成立,同年这家公司发布一款工具LoadRunner。随着软件行业的发展,特别是IEEE标准的完善,CMM模型,V模型,Rational模型的诞生,软件测试也被提到了一个比较高的地位上。软件测试的发展也催生了众多流派的诞生,单元测试、功能测试、性能测试和自动化测试可谓百花齐放。时隔6年,1995年,Mercury Interactive发布了另一款重磅产品winrunner,实现了录制/回放功能的自动化测试工具,而早期的自动化测试也大多以录制/回放这种架构来进行。我们现在一说起自动化测试,更多第一想到的是自动化测试工具,其实这种现象也是很正常的,因为从一开始就是软件测试工具推动着软件自动化测试在不断地发展。

二、软件自动化测试的意义

对于功能已经完整和成熟的软件,每次发布一个新的版本,其中大部分功能、界面都和上一个版本相似或完全相同,这部分功能特别适合于自动化测试,从而达到测试每个特征的目的,提高软件测试的效率。软件版本的发布周期往往比较短,也就是开发周期只有短短的几个月,而在测试期间是每天或每两天都要发布一个版本供测试人员进行测试,一个系统的功能点有几千个甚至上万个,人工测试非常耗时和繁琐,这样的测试效率相对较低。

解决测试与开发之间的矛盾。通常在开发的末期,进入集成测试阶段,由于在每次发布一个版本的初期,测试系统的错误比较少,这时开发人员等待测试人员测试出错误需要一段时间。理想的自动化测试能够按计划完全自动的运行,在开发人员和测试人员不可能实行三班倒的情况下,自动化测试可以胜任这个任务,完全可以在周末和晚上执行测试,这样充分利用公司的资源,也避免了开发和测试之间的等待。事实上在迭代周期很短的开发模式中,存在更多的矛盾,但自动化测试可以解决其中的主要矛盾。将烦琐的任务转化为自动化测试。大量重复的测试是非常繁琐的,并且需要消耗大量的人力才能够完成。自动测试能够很好的解决这个问题,不需要繁琐的劳动,不需要大量的人员。增加软件信任度。只有经过大量测试案例测试过的版本才是可靠的,而只有使用自动测试才能够保证在短时间内完成大量的测试案例。

三、软件测试自动化

软件测试是指在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

软件自动化测试[1]是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。自动测试技术,与测试技术存在着很大区别。自动化的程度与测试的质量是独立的。无论自动执行还是手动执行测试都不影响测试的有效性和仿效性。测试本身的有效性直接导致测试的成败,而自动测试只对测试的经济性和修改性有影响,自动测试通常要比手动测试经济得多,自动测试的方法越好,长期使用获得的收益就越大。测试质量取决于测试执行者实现测试质量的技术;而自动化质量取决于测试自动化者的自动化技术。

自动化测试的实现原理[2],针对不同的类型(静态测试和动态测试)来区别对待。动态测试的自动化实现主要通过特定的程序来模拟软件的操作过程或操作行为,然后对软件所做出的反应或输出结果进行检查或验证。而静态测试的自动化实现,是按照代码规范和软件开发的最佳实践建立各种代码规则,然后依据这些规则对代码进行自动扫描,发现和规则不匹配的各种问题。

动态测试,关键是识别测试的对象、模拟操作和对结果进行验证:

1)识别对象,包括调用Windows API来识别GUI对象,以及使用其他工具(IE DOM InspectorFirebug )来识别WebDOM对象;

2)通过测试脚本来模拟操作,能捕获鼠标和键盘的操作,或者通过调用API来直接操作所识别的对象;

3通过自动比较技术,验证实际获得的测试结果和事先定义的期望结果是否一致。如果不一致,将记录所执行的具体日志(log),报告错误。比较技术包括静态比较和动态比较、简单比较和复杂比较、敏感性测试比较和健壮性测试比较、比较过滤器等。

四、软件自动化测试的优缺点

自动化测试是借助于测试工具、测试规范,从而局部或全部代替人工进行测试及提高测试效率的过程。自动测试相对于手工测试而言,其主要进步在于自动测试工具的引入。自动测试的一般定义为:各种测试活动的管理与实施,包括测试脚本的开发与执行,以便使用某种自动测试工具来验证测试需求。测试活动的自动化在许多情况下可以获得最大的实用价值,尤其在自动测试的测试用例开发和组装阶段,测试脚本被重复调用,可重用脚本可能运行很多次。因此,采用自动测试可以获得很高的回报。系统测试级上的回归测试是有效应用自动测试的情况。回归测试设法验证改进后的系统提供的功能是否按照规定执行,系统在运行中没有出现非预期变化。自动测试几乎可以不加改动地重用先前的测试用例和测试脚本,以非常有效的方式执行回归测试。

自动测试具有以下优点:

1)能执行更多更频繁的测试,使某些测试任务的执行比手动方式更高效,可以更快地将软件推向市场;

2)能执行一些手动测试困难或不可能做的测试;

3)更好地利用资源,利用夜间或周末空闲的设备执行自动化测试;

4)将烦琐的任务自动化,让测试人员投入更多的精力设计出更多更好的测试用例,提高测试准确性和测试人员的积极性;

5)自动测试具有一致性和可重复性的特点,而且测试更客观,提高了软件的信任度。

但自动化测试仍然存在着一定的局限性:

1)不能取代手工测试,不可能自动化所有的测试。如测试只是偶尔执行,或待测系统经常变动、不稳定,测试需要大量的人工参与时,就不适宜采用自动测试。

2)自动测试工具本身不具有想象力,只是按命令执行。而手工测试时测试执行者可以在测试中判断测试输出是否正确,以及改进测试,还可以处理意外事件。

3)自动测试对测试质量的依赖性较大,在确保测试质量的前提下,实施自动化测试才有意义。

4)自动测试在刚开始执行时,工作效率并不一定高于手动测试,只有当整个自动测试系统成熟,且测试工程师熟练掌握测试工具后,工作效率才会随着测试执行次数的增加而提高。

5)自动测试的成本可能高于手工测试。自动测试的成本大致有以下几个部分组成:自动测试开发成本、自动测试运行成本、自动测试维护成本和其他相关任务带来的成本。软件的修改带来测试脚本部分或全部修改,就会增加测试维护的开销。

参考文献:

[1]李明泽.浅谈软件自动化测试技术[A].涡阳一中安徽·毫州,233600

[2]刘宇轩.软件测试方法研究.科技风,2018年第04期

1