当一个软件从雏形到真正的在一台计算机上运行的时候,谁也不能保证计算机软件能一步到位的满足人们的需求。所以就有了软件测试。以下是小编整理的软件的自动化测试论文,希望能让你更加了解软件的自动化测试。
1、软件测试自动化简介
谈到自动化测试,一般就会提到测试工具。许多人觉得使用测试工具就是实现了测试自动化,这种理解是不对的,至少是片面的。的确,测试工具的使用是自动化测试的一部分工作,但“用测试工具进行测试”不等于“自动化测试”。
自动化为测试而存在的,所以自动化测试的真正含义可以理解为“一切可以由测试是相对手计算机系统自动完成的测试任务都已经由计算机系统或软件工具、程序来承担并自动执行”。它包含了下列3层含义:
“一切”,不仅仅指测试执行的工作——对被测试的对象进行验证,还包括测试的其它工作,如缺陷管理、测试管理、环境安装、设置和维护等。
“可以”,意味着某些工作无法由系统自动完成,如脚本的开发、测试用例的设计,需要创造性,其工作需要手工处理。
即使由系统进行自动化测试,还少不了人的干预,包括事先安排自动化测试任务、测试结果分析、调试测试脚本等。
严格意义上,“自动化测试(Automated Testing)”不等于“测试自动化(Test Automation)”。自动化测试,模拟手工测试步骤,通过执行程序语言编制的测试脚本自动地测试软件,自动地实施软件的单元测试、功能测试、负载测试或性能测试等。自动化测试集中体现在实际测试执行(test execution)的过程,也就是由手工逐个地运行测试用例的操作过程被测试工具自动执行的过程所代替。自动化测试,强调借助工具(不仅仅是工具,有时包括策略和工件)来完成测试的执行,也就是用工具来帮助或辅助测试,这个执行过程可能是全自动的,也可能是半自动的。
测试自动化的要求高得多,侧重说明将测试用自动化设计和实现的过程,即所有的测试工作都能有计算机系统自动完成,包括:测试环境的搭建和设置,如上载安装包到服务器;脚本自动生成,如根据UML状态图、时序图等生成可运行的测试脚本;测试数据的自动产生,例如自动产生数据负载测试所需要的大量数据;测试操作步骤的自动执行,包括测试执行过程的控制;测试结果分析,实际输出和预期输出的自动对比分析;测试流程的自动处理,即测试工作流的自动实现,包括测试计划复审和批准、测试任务安排和执行、缺陷生命周期等流程的自动化处理。测试报告自动生成功能等。
这样,测试自动化意味着测试全过程的自动化和测试管理工作的完全自动化,是测试工程师所追求的一种理想境界,但是很难实现的。
自动化测试方案选择需要考虑的方面:
自动化测试和手工测试都不影响测试的有效性和仿效性,自动化测试只是对测试的经济性和修改性有影响,自动化测试通常要比手动测试经济得多,自动化测试的方法越好,长期使用获得的收益就越大。
2、采用什么样的自动化测试方案,需要考虑以下几个方面的因素
1)项目的影响:自动化测试能否帮助你的项目进度、覆盖率、风险,或者让开发更敏捷?
2)复杂度:自动化是否容易实现,包括数据和其他环境的影响。
3)时间:自动化测试的实现需要多少时间?
4)早期需求和代码的稳定性:需求或早期的代码是否能证明是在范围内变化的?
5)维护工作量:代码是否能长期保持相对稳定?功能特性是否会进化?
6)覆盖率:自动化测试能否覆盖程序的关键特性和功能?
7)资源:测试组是否拥有足够的人力资源、硬件资源和数据资源来运行自动化测试。
8)自动化测试的执行:负责执行自动化测试的小组是否拥有足够的技能和时间去运行自动化测试。
3、适合自动化测试的场景主要为
1)测试任务明确,不会频繁变动。2)每日构建后的测试验证。3)回归测试、压力测试、性能测试。4)软件系统界面稳定,改动较少。5)需要在多种平台上运行相同的测试案例、组合遍历型的测试、大量重复的测试任务。6)软件维护周期长。7)待测软件系统开发比较规范,能够保证系统的可测性。8)项目进度压力不大。9)具备大容量的自动化测试平台。10)测试人员具备较强的编程能力。
4、软件测试自动化的实施步骤
我们对自动化测试充满了希望,然而,自动化测试却经常带给我们沮丧和失望。虽然,自动化测试可以把我们从困难的环境中解放出来,在实施自动化测试解决问题的同时,又带来同样多的问题。本文介绍自动化测试的6个步骤:改进自动化测试过程,定义需求,验证概念,支持产品的可测试性,具有可延续性的设计(design for sustainability),有计划的部署等。
首先了解下几个使自动化测试项目陷入困境的原因:
1)自动化测试时间不充足。
2)缺乏经验:尝试测试自己的程序的程序员经常采用自动化测试。由于缺乏经验,很难保证自动化测试的顺利开展。
3)更新换代频繁(High turnover):当自动化测试更新换代频繁的时候,你就丧失了刚刚学习到的自动化测试经验。
4)不愿思考软件测试:很多人发现实现产品的自动化测试比测试本身更有趣。自动化工程师不参与到软件测试的具体活动中。
5)关注于技术:如何实现软件的自动化测试是个技术问题。不过,过多的关注如何实现自动化测试,导致忽略了自动化测试方案是否符合测试需要。
在自动化测试开发过程中遵守已经建立的软件开发规则,按照在软件开发项目中采用的标准步骤,实现测试自动化:
步骤一:改进软件测试过程。
采用列有产品特性的列表,然后对照列表检查。回归测试检查列表可以告诉应该测试哪些方面。在开始测试之前,需要完善回归测试检查表,并且确保已经采用了确定的的测试方法,指明测试中需要什么样的数据,并给出设计数据的完整方法。确认可以提供上面提到的文档后,需要明确测试设计的细节描述,还应该描述测试的预期结果。在开始更为完全意义上的测试自动化之前,必须已经完成了测试设计文档。测试设计是测试自动化最主要的测试需求说明。
步骤二:定义需求。
应该有一份自动化测试需求,用来描述需要测试什么。测试需求应该在测试设计阶段详细描述出来,自动化测试需求描述了自动化测试的目标。
步骤三:验证概念。
尽可能快地验证采用的测试工具和测试方法的可行性,站在产品的角度验证所测试的产品采用自动化测试的可行性。需要尽快地找出可行性问题的答案,需要确定你的测试工具和测试方法对于被测试的产品和测试人员是否合适。
验证概念的试验主要有:
回归测试:回归测试是最宜采用自动化测试的环节。
配置测试:你的软件支持多少种不同的平台?你打算在所有支持的平台上测试执行所有的测试用例吗?那么采用自动化测试是有帮助的。
测试环境建立:对于大量不同的测试用例,可能需要相同的测试环境搭建过程。在开展自动化测试执行之前,先把测试环境搭建实现自动化。
非GUI测试:实现命令行和API的测试自动化比GUI自动化测试容易的多。
步骤四:支持产品的可测试性。
软件产品一般会用到下面三种不同类别的接口:命令行接口(command line interfaces,缩写CLIs)、应用程序接口(API)、图形用户接口(GUI)。
无论你需要支持图形界面接口、命令行接口还是API接口,如果你尽可能早的在产品设计阶段提出产品的可测试性设计需求,你很可能成功。
步骤五:具有可延续性的设计。
自动化测试设计中考虑自动化在未来的可扩充性是很关键的,不过,自动化测试的完整性也是很重要的。把注意力放在通过设计保证测试的可延续性上,选择一个合适的测试体系架构,将进一步迈向成功的自动化测试。主要从以下几方面考虑,测试的可检视性、测试的可维护性、测试的完整性、测试的独立性、测试的可重复性。
步骤六:有计划的部署。
需要提供自动化测试程序的安装文档和使用文档,保证自动化测试程序容易安装和配置。
5、结束语
最后,我们还不得不承认,自动化测试和手工测试往往交织在一起,相互补充,工具执行过程往往需要人工分析,手工测试时也可以借助工具处理某些数据、日志或显示某些信息。也就是说,不是试图用自动化测试来代替所有的手工测试,而应该在尊重手工测试的同时,遵守已经建立的软件开发规则,按照在软件开发项目中采用的标准步骤,实现测试自动化。