51Testing软件测试论坛

标题: 自动化测试概述——自动化测试精解(1) [打印本页]

作者: lsekfe    时间: 2020-12-31 10:08
标题: 自动化测试概述——自动化测试精解(1)
第一章 自动化测试概述
  顾名思义,自动化测试是指软件测试的自动化,它是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果,并与期望结果进行比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,引入了自动化测试。
  1.1 自动化测试发展史
  1.记录回放
  记录回放流行于商业工具之中,无须掌握编程技能即可快速上手。然而,这种方法的使用范围有限,一旦被测系统发生变化,测试就会受到影响,分散的脚本不可重用且难以维护,而且被测系统在测试前必须可用,这也就意味着无法使用验收测试驱动开发(Acceptance Test-Driven Development,ATDD)的方法。因此,这种方法并不适合大型自动化测试。
  2.线性脚本
  线性脚本允许使用各种语言来编写非结构化脚本,脚本直接与被测系统交互。这种方法易于快速上手,灵活性强。但是编写非结构化脚本需要编程技能,测试脚本本身的质量无法通过别的测试系统保证,被测系统中的一个改动通常会影响多个脚本,没有经过模块化或重用的大量脚本难以维护。因此,这种方法适合简单的测试任务,不适合大型自动化测试。
  3.模块化脚本
  模块化脚本由驱动脚本和测试库函数两部分组成。驱动脚本执行测试,测试库函数完成与被测系统的交互。驱动脚本编写起来非常简单,这样可以更快地建立新测试,并且降低维护成本。然而,需要花时间建立测试库,并将测试数据嵌入脚本,一旦建立新测试就需要新的测试脚本。因此,这种方法适合大型自动化测试,但不适合无编程技能的人员。
  4.数据驱动
  数据驱动能将数据与测试脚本分离,基于模块化的测试库,一个驱动脚本可以执行多个相似测试,这样非常容易建立新测试。其维护工作可以分离,测试人员负责数据,开发人员负责写测试库。然而,不同类型的测试仍需要新的驱动脚本,初始建立数据解析器和重用组件需要花费大量人力。因此,这种方法适合大型自动化测试,且只需要较少的编程技能。
  5.关键字驱动
  关键字驱动可将数据与关键字结合起来描述如何使用数据执行测试。这种方法具备数据驱动的优势,同时非编程人员也能建立新测试。所有测试由同一个框架来执行,不需要不同的驱动脚本。虽然这种方法初始成本很高,但是可以使用开源方案,因此非常适合大型自动化测试。
  1.2 TDD与ATDD
  测试驱动开发(Test-Driven Development,TDD)是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD是指在开发功能代码之前,根据需求先编写具体的测试用例,而后编写产品代码使测试用例成功执行,从而用测试用例来驱动编写什么样的产品代码。这种开发方法能有效避免提交一些不是为了某个需求而写的冗余代码。
  ATDD是指用户(或产品经理)、开发人员、测试人员在开发软件之前一起制定出每个需求的验收标准,并总结、提取出一组验收测试用例。然后开发人员根据测试用例用TDD方法编写产品代码。与此同时,测试人员也根据测试用例编写自动化测试脚本或手动测试步骤。如果产品代码通过了所有的测试用例,就表示这个需求已满足。
  TDD一般只涉及开发者本人以及和他结对的开发人员。如果开发人员对业务需求的理解不正确,写出的测试用例也将是错误的。ATDD是用户(或产品经理)、开发人员、测试人员一起讨论并制定出的验收标准和测试用例,能有效地保证大家对业务需求的一致性理解。





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2