Ultrawise软件测试SoftwareTesting自动化测试IBMSoftwareInstituteUltrawiseSoftwareTesting前言提到软件测试自动化,人们可能会认为这是一件容易的事情:只需购置一种流行的测试执行工具,记录手工测试过程,然后在需要时回放录制的过程。不幸的是,在实践中并非如此简单。正如软件设计比学习编程语言困难一样,自动化测试要比学习测试工具困难。自动软件测试可以大大减少测试开销,同时大大增加在有限时间内的测试。IBMSoftwareInstituteUltrawiseSoftwareTesting讲授内容概述如何实现测试自动化的计划何时对什么进行自动化IBMSoftwareInstituteUltrawiseSoftwareTesting前言成熟的测试自动化机制,可以在机器空闲时通过“按钮触发”执行夜间测试。本课程将通过成功的自动化软件测试,讨论测试中遇到的问题。强调有关自动的测试件(automatedtestware)技术设计问题。测试件(testware)为用于自动测试的一组文件,包括脚本、输入、期望输出、设置和释放过程、文件、数据库、环境及其他用于自动测试的附加软件和实用程序。IBMSoftwareInstituteUltrawiseSoftwareTesting测试与测试自动化概念不同测试是一种技术。好的测试方法应该是开发好的测试事例。什么样的测试事例是好的测试事例?有四个特性可以描述测试事例的质量:最重要的一个方面是检测软件缺陷的有效性,是否能发现缺陷,或至少可能发现缺陷。其次测试事例应该是可仿效的。可仿效测试事例可以测试多项内容,因而减少了测试事例的数量。另外两个方面是开销,测试事例的执行、分析和调试是否经济,以及测试事例的修改性.即每次软件修改后对测试事例的维护成本。IBMSoftwareInstituteUltrawiseSoftwareTesting测试与测试自动化概念不同许多组织发现自动测试比执行一次手工测试的开销大得多。如希望从自动测试中获得收益,则需要仔细选择和实现自动测试。自动化的程度与测试的质量是独立的。无论自动执行还是手工执行测试都不影响测试的有效性和仿效性。IBMSoftwareInstituteUltrawiseSoftwareTesting测试与测试自动化概念不同手工执行的测试事例用实线表示。第一次自动执行相同测试事例时,其修改性和经济性较低(由于在自动化上费功夫)。自动化测试运行许多次后,就比手工执行相同的测试经济得多。IBMSoftwareInstituteUltrawiseSoftwareTestingV模型软件开发的v模型说明了何时应进行测试。v模型指出每个开发活动都有相应的测试活动。每一层的测试检验都对应于相应的开发活动。无论使用哪种软件生命周期模型,这一模型都适应。例如,快速应用开发(RAD)就是一系列的小v模型。IBMSoftwareInstituteUltrawiseSoftwareTestingV模型IBMSoftwareInstituteUltrawiseSoftwareTesting支持生命周期测试的工具IBMSoftwareInstituteUltrawiseSoftwareTesting测试自动化的承诺测试自动化可以使某些测试任务比手工测试执行高效得多。对程序的新版本运行已有的测试(回归测试)。可以运行更多更频繁的测试。可以执行一些手工测试困难或不可能做的测试。更好地利用资源。测试具有一致性和可重复性。测试的复用性。可以更快地将软件推向市场。增加软件信任度。IBMSoftwareInstituteUltrawiseSoftwareTesting测试自动化普遍存在的问题不现实的期望。缺乏测试实践经验。期望自动测试发现大量新缺陷。安全性错觉。自动测试的维护性。技术问题。组织问题。IBMSoftwareInstituteUltrawiseSoftwareTesting测试自动化普遍存在的问题测试自动化是一个根本问题,不仅仅只与项目有关。在大型组织中,测试自动化很少根据一个项目进行评价,因为项目面临所有启动资金和扯皮问题而有可能收效甚微。如果测试自动化只是针对一个项目,一个项目完成后,人员将重新分配新项目,这样会丧失推动力。测试自动化经常在最能够发挥作用的时候(即软件更新时)陷入困境。应有标准确保组织中使用工具的方法一致。否则每个小组可能开发不同的测试自动化方法,这样在小组测试人员之间很难互通或共享自动测试。IBMSoftwareInstituteUltrawiseSoftwareTesting测试活动-需要自动化的活动。IBMSoftwareInstituteUltrawiseSoftwareTesting标识测试条件第一个活动首先确定测试“什么”并最好定义这些测试条件的优先顺序。测试条件(testcondition)取决于被测试验证的项目或事件。一个系统可能有许多不同的测试条件,并且测试有不同的类型,如功能测试、性能测试、安全性测试等。和试技术可以帮助测试者确定较严格、系统的测试条件。测试条件是被测环境的描述。注意标识测试条件的活动最好与开发活动(即v模型左边描述的活动)并行开展。IBMSoftwareInstituteUltrawiseSoftwareTesting设计测试事例设计测试事例确定“怎样”测试。测试事例(testcase)是按一定顺序执行的与测试目标(testobject,,测试理由或目的)相关的一系列测试。测试事例设计将产生许多测试所包括的输入值、期望结果及其他任何运行测试的有关信息,如环境要求。注意期望输出包括应输出或建立的内容,应修改或更新的内容或应删除的内容。期望输出集可以是一个很大的集合。每个测试都应说明期望输出(expectedoutcome)。如果运行前没有说明期望输出,为检查软件的正确性,应首先认真验证实际输出(actualoutcome)。这就要求测试考对被测试软件具有一定的了解,才能对输出结果做出正确判断。IBMSoftwareInstituteUltrawiseSoftwareTesting建立测试事例测试事例包括准备测试脚本、测试输入、测试数据以及期望输出。测试脚本(testscript)是具有正规语法的数据和指令的集合,在铡试执行自动工具使用中,通常以文件形式保存。一个测试脚本可以实现一个或多个测试事例,导航、建立或撤消过程以及验证等。测试脚本可以手工也可以不是手工执行(一个手工测试脚本就是一个测试过程(testprocedure)。测试输入和期望输出可包括在脚本中,也可以是脚本外的一个文件或数据库。建立测试的任何工作可以提前(相对V模型左边的活动)进行,以后可以节省时间。IBMSoftwareInstituteUltrawiseSoftwareTesting执行测试事例在被调软件运行时使用测试事例。对于手工测试来讲,测试者按事先准备好的手工过程进行测试。测试者输入数据、观察输出、记录发现的问题。对于自动测试,可能只需启动测试工具,并告诉工具执行哪些测试事例。测试执行只能在软件开发完成后进行,即v模型右边的活动。IBMSoftwareInstituteUltrawiseSoftwareTesting将测试结果与期望输出比较应该对每次测试的实际输出进行分析研究,判断软件功能是否正确。这种验证可以是非正式的测试者主观判断,也可以是将实际输出与期望输出进行严格准确的比较。一些信息比较,如可以在执行测试时进行显示屏幕上的消息。另一些输出比较,如修改数据库记录,只能在测试执行结束后进行。自动测试一般结合了这两种方法。一般情况下,假定如果实际输出与期望输出一致,则软件通过调试;如果不一致,则软件没有通过测试。IBMSoftwareInstituteUltrawiseSoftwareTesting自动测试设计测试执行和比较活动重复许多次,而标识调试条件和设计测试事例只执行—次(由于活动中的错误的返工除外)。IBMSoftwareInstituteUltrawiseSoftwareTesting自动测试事例设计测试事例设计也可以自动化吗?测试工具有许多方法可以进行部分测试事例自动化。这类工具有时也称测试输入生成工具,而这种方法也可以应用到某些场合,但自动工具不可能完全取代智力的测试活动。所有测试事例设计方法都存在一个问题,即工具可能产生大量的测试。即使测试是自动化的,也没有时间运行100%的自动测试。所有测试生成工具依赖于生成测试的算法。IBMSoftwareInstituteUltrawiseSoftwareTesting测试设计自动化小结自动测试用例生成的好处:自动化测试用例生成用于设计的繁琐部分,如激活每个菜单项或从已知的数据范围计算边界值。可以生成针对源程序的一套完整的测试事例(代码,界面或规格说明)。可以发现某种类型的缺陷,如丢失连接,非工作窗口项或不符合规格说明的软件。IBMSoftwareInstituteUltrawiseSoftwareTesting测试设计自动化小结自动测试用例生成的限制:基于代码方法不能生成期望输出。基于界面方法只能产生部分期望输出。基于代码和基于界面方法不能发现规格说明的缺陷。基于规格说明的方法依赖于规格说明的质量。所有的方法可以产生大量的测试,而实际操作起来很困难。测试前仍然需要专家判断产生的测试的必要性,并考虑任何工具都无法产生的测试。IBMSoftwareInstituteUltrawiseSoftwareTesting软件测试自动化的限制不能取代手工测试在下列情况下不适合自动化:1.测试很少运行。2.软件不稳定。3.结果很容易通过人验证的测试,但自动化这类测试可能很困难甚至是不可能的。例如彩色模式的合适程度,屏幕轮廓的直观效果。4.涉及物理交互的测试,例如在读卡机上划片,断开某些设备的连接,开/关电源等。IBMSoftwareInstituteUltrawiseSoftwareTesting软件测试自动化的限制手工测试比自动测试发现的缺陷更多对测试质量的依赖性极大测试自动化不能提高有效性测试自动化可能会制约软件开发工具本身并不具有想象力IBMSoftwareInstituteUltrawiseSoftwareTesting讲授内容概述如何实现测试自动化的计划何时对什么进行自动化IBMSoftwareInstituteUltrawiseSoftwareTesting捕捉回放并不是软件测试自动化如果对自动测试不太了解,那么了解自动测试最快捷的方法是使用捕获回放工具的录制功能。捕获回放工具可以回放录制的内容,因此可以执行与手工执行完全相同的测试。不幸的是,许多人认为这就是测试自动化。IBMSoftwareInstituteUltrawiseSoftwareTesting测试自动化就是捕获和回放吗按照成熟度自动化的测试可以被划分为5个级别。级别1:捕获和回放级别2:捕获、编辑和回放级别3:编程和回放级别4:数据驱动的测试级别5:使用动作词的测试自动化IBMSoftwareInstituteUltrawiseSoftwareTesting级别1:捕获和回放这是使用自动化测试的最低的级别,同时这并不是自动化测试最有用的使用方式。当测试的系统不会发生变化时-小规模的自动化。用法你会拥有大量的测试脚本,同时当需求和应用发生变化时相应的测试脚本也必须被重新录制。缺点自动化的测试脚本能够被自动的生成,而不需要有任何的编程知识。优点IBMSoftwareInstituteUltrawiseSoftwareTesting级别2:捕获、编辑和回放在这个级别中,你使用自动化的测试工具来捕获你想要测试的功能。将测试脚本中的任何写死的测试数据,比如名字、帐号等等,从测试脚本的代码中完全删除,并将他们转换成为变量。当进行回归测试时,被测