【文章摘要】 随着信息技术的高速发展,传统的人工编程已满足不了现代对于软件性能及技术的要求。本文提出软件自动化代替人工编程,即在测试工程使用自动化软件,并提出了三种软件自动化测试方法以及与传统的测试方法相比较软件自动化测试的优点,最后提出了软件自动化的应用范围。 【关键词】 自动化 ; 软件 ; 测试 0 前言 随着现代信息技术的高速发展,软件竞争越演越烈,测试系统也日益复杂,在这种情况下软件质量成为了市场竞争力的核心,每个企业都着重关注软件的在开发及测试过程。自动化软件测试在这种情况下产生。自动化测试不仅能缩短软件在开发及测试的时间,也能降低在软件开发及测试的成本,提高产品竞争力。 众所周知“自动化测试”就是使用软件或者其他辅助工具来代替手工进行的一系列测试动作,不仅能剪短研发周期又能取替人工在测试过程中出现不必须的bug。换言之自动化测试的目的是减轻人员工作量,节约资源,缩短测试周期。实际过程中通常是使用脚本或者协议代码驱动软件。在外界我们可以通过用户界面驱动,也可以通过修改代码来完成命令。 1 自动化测试方法 自动化测试主要是采用自动化的工具针对特定目标应用程序的测试。测试脚本由靠编程实现,测试脚本采用特定的编程语言,并在特定的环境下实现编程。测试脚本可以通过其他语言来进行读取,也可以转化成其他用户需求的语言程序片段来满足测试要求,测试语言代码复杂程度根据客户要求决定。当前主要采取的测试方法有三种 : 第一种方式与传统普通的编程原理想类似,通过人工批量化编辑测试,采取特定的编程语言编写,具有相对应的功能,在特定的平台和特定的坏境下进行自动批量处理测试结果,为客户找出错误的代码并提出解决办法,客户接受建议后,测试系统具有记忆功能,再次出现类似错误时,只要客户接受建议后直接修改程序,实现自动化测试的目的,这样能大大的节约人力及缩短相对应的研发周期。 第二种方法不需要人工进行脚本编程,采取可视化界面操作或者测试工具自动产生测试脚本。这种方法类似逆向工程,此类方法要先取得被测软件的源代码程序,针对这类代码程序进行自动化测试,为客户提出一个或者多个脚本,用户通过可视化操作界面或者测试工具对代码进行处理。这种方法可以根据用户的风格进行定义,用户输入要测试的单位、名称、数值、单元等都可以实现,真正实现人性化自动化测试。 还有一种方法进行软件测试可逆化,类似录制回放功能,这种方法也是先主流自动化测试技术。测试人员在测试工具平台手工对应用目标程序进行一个测试,测试记录操作的的每一步骤及每一个测试对象的工作状态,在测试过程中客户发现问题直接进行修改,软件记录工作状态后进行机械重复操作,提高测试效率,减少重复测试的工作量,缩短生命周期。 2 自动化测试的优点 软件自动化测试具有以下几个方面的优点 : 2.1 提高工作效率 传动测试容易出错,并且属于密集性工作,需要大量的测试人员,而且对应于测试人员的技术水平高,测试人员培训时间长、测试人员个人能力不一。引入软件自动测试能够用更有效、可重复的自动测试替代人工,提高软件测试的工作效率,使客户在更少的时间内完成 更多的测试工作。 2.2 减少研发成本 现代信息量大,对于软件的性能、可靠性要求提高,软件也越来越复杂。现代软件也是迭代增量开发,每一个新版本都是对已有版本的升级及优化,每一个新版本大部分功能及界面与已有版本相似和完全一致。此类软件属于重复性工作,采用软件自动化测试能减小测试的开销,而且人工操作可能具有遗忘,软件测试自动化具有记忆功能,特别适合此类研发。与人工测试相比研发成本大大减少。 2.3 完成手工测试难以完成的测试。 软件测试常常会遇到测试非功能性的测试及一些抽象的测试,比如磁场测试、压力测试、发动机转速测试、大数据量测试、电压电流测试等等这些手工测试,非功能性的测试及一些抽象的测试是人工不可能完成的,但对于软件自动化测试这些很容易就能完成。 2.4 可重复性 软件自动化具有记忆功能,软件记忆性对于大量重复的工作具有不可忽视的重要性。重复测试能缩短人工成本、缩短研发周期。对于不同的测试脚本执行的测试具有一致性,将繁复的工作简单化,这是人工测试难以企及的。 2.5 可信度增加 软件自动化测试最开始可能会出现一些错误的代码,进行修正后就能保持高度的一致性,对于出现的故障能及时的处理,更彻底解决测试效果,提高软件质量 3 软件自动化测试应用范围 手工测试难以完成的性能测试是自动化软件测试最具有潜力和最能体现价值的地方,而早期的单元测试如果引用自动化软件测试也将大大提高效率。 (1)单元或组件测试,此类测试为早期开发人员的职责,它主要是一个测试框架,开发人员在编写代码前编写不同的单元测试或组件测试。通过使用正确的自动化单元测试,不仅能帮户开发人员编写出正确的代码,也能很好的提高整体测试质量。 (2)构建版本测试,此类测试一般为验证性测试,测试的背后的思想是确保单元和组件的基础是正确的、是卡伊工作的,以保证测试工作能够正确开展,为产品构架做好准备工作。 (3)功能测试,此类测试的关注点是在单元或组件测试完成后,把所有组件构建在一起在功能上能实现。通常在被测试系统更加复杂测试基础上进行,已避免在大量边缘测试被合并造成的不同的错误处理。 (4)系统测试,此类测试主要是在形成可视化界面之后进行的。测试系统具有用户被期望的功能,由于环境及客户要求是固定的(即客户输入的信息是一致的)故不需要手工完成,只需要自动化处理即可 (5)回归测试,此类主要是测试已存在的测试,这里完全有潜力应用自动化的测试,能够在每次构建完成后执行自动化的回归测试,验证系统测试是否与其他功能想干涉。 (6)性能测试,此类测试主要应用于高密集度的性能测试,如前面提高的负载测试、压力测试、磁场测试等。 4 总结 针对以密集型劳动为特征的传统手工测试已不能满足软件的高速发展的现象,本文提出了应用自动化软件测试解决改现象。主要概况介绍了自动化软件测试的方法、自动化软件测试与传统手工测试相比较的优点、自动化软件测试的应用范围,供其他学者参考。 【参考文献】 [1]李康,“企业内部实现软件测试自动化的发方案讨论”,四川大学,2005 [2] Pettchord,Bret,“Seven Steps to text automation success ”,July 16,2000 [3] 胡圣厦,“基于 XML 的录制 - 回放技术研究与实现”,四川大学,2005 |