软件自动化测试探讨

工程论文 2021-03-12 点击:

  软件测试论文范文四:

  题目:软件自动化测试研究
 

  摘    要: 本文在介绍了软件自动化测试的概念和发展的基础上, 着重介绍了自动化测试的优点和局限性, 并针对软件自动化测试的需求, 阐述了自动化测试方案的设计流程以及自动化测试用例的设计原则等。

  关键词:自动化测试; 设计原则; 设计流程;
 

软件测试
 

  1、引言

  随着软件技术的发展, 软件功能不断丰富扩大, 软件更新换代的速度逐步加快。用户对软件的功能、性能、稳定性以及使用体验的要求越来越高, 对软件测试的重视程度也越来越迫切, 传统的手工测试已经难以满足软件发展的需要。因此, 自动化测试应运而生, 它具有快捷、方便、可重复、覆盖率高等许多优点, 将繁琐、枯燥、冗长的操作一并交由测试系统, 从而大大提高了测试效率。随着软件测试技术的发展, 自动化测试也正处于快速发展的过程。

  2、软件自动化测试概述

  2.1 软件自动化测试的概念

  软件测试是软件开发的重要环节, 也是保障软件质量的关键步骤。软件测试发展的初期, 全部使用手工测试, 测试人员往往需要花费大量的时间和精力, 限制了软件质量的提升以及软件版本的更新。软件测试具有重复性, 不仅要检查之前发现的故障和缺陷是否得到修复和改进, 还要检查在修复过程中是否引入了新的故障和缺陷, 这些重复回归测试促进了自动化测试的快速发展。

  自动化测试的概念是“一切可以由计算机系统自动完成的测试任务都已经由计算机系统或软件工具、程序来承担并自动执行”。自动化测试将人工执行测试转化为机器执行测试, 其原理为通过模拟测试工程师的测试行为和测试过程, 开发设计出特定的程序, 由软件工具完成对系统的测试和评估。自动化测试的发展经历了以下四个阶段。

  (1) 编写简单测试用例

  自动化测试发展初始, 测试工程师仅编写一个简短的程序, 代替人工测试的部分操作。随着软件功能的不断强大, 测试用例数量不断增多, 测试用例的管理变得异常繁琐和困难。为解决这一问题, 出现了自动化测试框架, 包括自动化测试基础模块、自动化测试管理模块和自动化测试分析模块, 具有更好的可维护性和扩展性。

  (2) 录制回放的自动化测试

  自动化测试框架开始时, 测试工具通过录制手工测试的操作, 生成测试脚本。这种模式操作简单, 无需编程即可快速上手, 但灵活性较低, 无法进行调试和修改, 并不适合大型自动化测试。

  (3) 数据驱动的自动化测试

  这是自动化测试框架发展的新阶段, 在数据驱动下, 测试脚本和测试数据分离, 测试灵活性大大提高, 测试代码也能够得以重复利用。这种方法适合大型项目的测试, 但前期数据准备和脚本编辑需要花费大量的人力和时间。

  (4) 关键字驱动的自动化测试

  这是数据驱动的自动化测试的扩展, 将数据与关键字结合起来执行测试, 具备数据驱动测试的优势, 所有测试均由同一个框架执行, 同时框架支持多接口库, 可灵活实现扩展功能, 但初始成本很大, 适合大型项目测试。

  软件自动化测试系统除了满足功能需求外, 在非功能性需求方面也有要求, 包括以下六方面。

  (1) 可靠性:正确执行测试用例, 保证测试结果准确可靠。

  (2) 易用性:系统各个模块操作流畅简单, 交互方便, 用户体验好。

  (3) 可扩展性:可以调用其他自动化测试工具, 也可以用不同语言进行开发。

  (4) 兼容性:能够支持不同的操作系统, 如果是Web自动化测试还需要兼容主流浏览器等。

  (5) 稳定性:系统稳定, 频繁修改或编辑不会造成系统报错。

  (6) 安全性:一方面确保不同角色对系统各模块有不同的权限, 保证信息系统的安全性;另一方面要保证系统数据的安全性, 禁止随意更改系统资源以及配置信息。

  2.2 软件自动化测试的发展

  随着自动化测试技术的迅速发展, 出现了一些典型的常用自动化测试工具, 如表1所示。

  有些测试工具还支持测试需求管理、测试用例管理、测试计划管理、测试执行、测试结果查看和测试结果分析等功能。自动化测试系统正朝着通用化、标准化、网络化和智能化的方向迈进。

  国内自动化测试的起步较晚, 但发展迅速, 目前一些研究机构和科技公司在软件测试方面都取得了很大的成绩, 如百度、搜狐、华为和中兴等都建立了自己的自动化测试平台。国内自动化测试技术的研究主要用于以下三方面。

  (1) 版本周期短的软件产品, 重复性测试较多。

  (2) 功能趋近完整和成熟的软件, 只需要对比前期版本修复部分缺陷。

  (3) 对一致性要求较高的软件, 自动化测试由于使用相同的脚本进行测试, 很容易发现被测软件的改变, 能保证一致性。

  目前自动化测试系统已经开始使用云技术, 未来将更多地使用云计算来处理、存储、分析和显示测试数据。可以利用云计算将自动化测试系统产生的所有原始数据都交给云进行集中处理、存储和分析。随着个性化需求的增多, 未来将出现越来越多的定制自动化测试服务。

  3、软件自动化测试的特点

  软件自动化测试与手工测试相比, 具有明显的优点, 体现在以下五方面。

  (1) 提高测试效率。某些复杂的软件系统, 具有成千上万个功能和模块, 若采用人工测试, 需要投入大量的人力、物力和时间。而自动化测试工具能够快速和可靠地执行事先规划的测试任务, 大大减少测试工程师的工作量。软件产品的发布周期一般都较短, 自动化测试能够高效完成可重复的测试, 提高测试效率。

  (2) 提高测试质量。软件开发过程是个不断改进和集成的过程, 期间要经过多次修改, 每一次修改都需要对整个软件重新进行回归测试。自动化测试中的回归测试, 能够简单快速地识别出软件中的新错误, 保证测试案例具有一致性, 有效防止了人为因素的干扰, 确保了测试质量。

  (3) 提升测试需求点的覆盖率。根据测试工具的回访录制及数据驱动对系统进行测试, 能够明显地提升测试覆盖率, 通过深入数据分析, 大大扩展测试的深度。

  (4) 实现某些手工测试较难完成的任务。如负载测试和压力测试等。

  (5) 更高的一致性和可重复性。任何一次自动化测试都运行相同的脚本, 测试具有高度一致性。方便软件升级或多版本测试, 降低了回归测试成本。

  图1 软件自动化测试设计流程图

  但自动化测试并不是万能的, 不能完全替代手工测试, 其具有一定的局限性, 体现在以下四方面。

  (1) 对于简单、直观性高的内容, 手工测试的优势更明显。

  (2) 自动化测试缺乏想象力, 只进行机械的判断, 无法对易用性、感官舒适程度和界面美观进行测试。

  (3) 自动化测试只能觉察已知问题, 无法发现新的缺陷, 并且无法对测试过程中遇到的突发情况进行及时地处理。

  (4) 自动化测试系统一旦完成, 能够提升效率、减少测试时间, 但前期的开发工作需要花费大量的时间。

  因此测试工作需要将自动化测试和手工测试相结合, 在测试过程中准确地判断何时需要自动化测试, 何时需要手工测试, 达到最好的测试效果。

  4、软件自动化测试的设计流程

  尽管软件测试因不同的软件具有不同的测试内容, 具体细节可能会有差异, 但总体上软件测试流程包括需求分析、概要设计、测试环境搭建、设计测试用例、自动化测试工具开发和测试等。软件自动化测试是在软件测试流程的基础上, 通过开发自动化测试工具并使之尽可能灵活方便地覆盖后期整个测试过程, 包括单元测试、集成测试、回归/系统测试等。软件自动化测试设计流程图如图1所示。

  4.1 测试需求分析

  无论是手工测试还是自动化测试, 开始之前都需要做一个完整的测试安排和需求分析, 其中需要确定测试目的、测试对象、测试范围、测试内容、测试方法以及测试进度等。对于自动化测试还需要考虑完成自动化测试需要的前提条件, 如前置资源和数据等。

  表1 常用自动化测试工具

  4.2 测试概要设计

  在对测试进行全面系统地需求分析后, 为便于后期确保测试的关键核心点以及尽可能地覆盖所有需求点, 需要对系统进行关键的概要设计。

  4.3 测试用例设计

  根据需求分析和概要设计, 分析可以进行自动化测试的测试点, 并将这些测试点归类汇总, 形成自动化测试用例。测试用例可以自由配置参数以及动态调整测试范围, 测试用例的颗粒度要设计合理, 既要确保测试充分, 又要尽量保证各个测试用例的独立性和松耦合特性。

  4.4 测试环境搭建

  在设计用例的同时, 根据被测对象的特点, 确定为黑盒测试还是白盒测试, 并行搭建测试环境。包括测试工具的设置、测试环境的设备部署, 信号、网络环境的提供等。

  4.5 自动化测试工具开发

  对自动化测试而言, 自动化测试工具的开发是自动化测试环节中最为关键的内容, 是软件测试中的核心节点, 决定了后期测试执行的具体内容和实现方法。根据测试阶段的不同, 以及测试对象的不同, 选择开发语言和开发工具。具体的自动化测试技术开发路线包括线性自动化方法、数据驱动自动化方法、关键字驱动化方法等。工具开发完成后, 需要对自动化测试结果进行分析, 尽早发现缺陷, 及时修改BUG。

  5、自动化测试用例设计原则

  自动化测试工具最大的优点是能够减少实现和维护测试的成本, 自动化测试用例设计的优劣将直接决定自动化测试的效果甚至是成败。因此自动化测试用例开发设计需要考虑以下三个原则。

  5.1 优先考虑核心测试点和需重复执行的测试点

  在设计自动化测试用例时, 很多测试人员由于过分依赖自动化测试, 认为自动化测试的覆盖率应该会达到百分之百。这其实是一个误区, 这样的设计往往会导致自动化测试的失败。在一些大型项目中, 测试用例的数量一般都比较大, 如果遇到一些繁杂的被测程序, 自动化测试用例的开发工作往往会相当耗时, 并且很多测试用例甚至根本就不能通过自动化来实现。如果软件版本更新快, 测试用例数量就会增加很多, 这大大增加了后期的维护工作量。因此, 往往需要重点考虑核心测试点和需重复执行的测试点, 从而充分发挥自动化测试的优势。

  5.2 优先考虑以正常情况为主

  测试用例设计一般分正常情况和异常情况, 正常情况涉及的问题一般较少, 但异常情况往往比较复杂, 会对应几个甚至几十个测试用例。如果将这些异常情况全部设计为自动化测试用例, 其代码量以及今后的维护任务都会非常繁重。因此, 在具体自动化测试设计中, 会尽量少纳入反向测试用例。

  5.3 需重视数据的初始化

  自动化测试不同于手工测试, 每次测试完成, 可能会有数据的变更, 所以每次执行完自动化测试, 需要考虑数据的初始化回归, 否则可能会出现无法预知的错误。比如在数字电视直播中删除所有SI信息功能测试, 在测试完成后, 需要重新进行频道搜索完成SI信息的回归重置。

  6、结束语

  目前我国软件行业仍然存在“重开发, 轻测试”的问题, 追求眼前短期功能的实现, 而对软件的性能和质量优化等考虑较少。软件测试技术仍处于相对落后的状态, 测试仍以手工测试为主。因此在软件设计之初应该选择合理的自动化测试策略, 设计自动化测试流程, 充分利用自动化测试的优势, 将重复性、繁琐性的测试工作, 交由软件系统自动完成。使测试人员可以有更多精力与软件开发人员密切配合, 设计高效测试用例, 提高测试效率, 缩短软件修改所需的时间, 降低修改成本。

  参考文献

  [1]干晓鸣.软件自动化测试的合理应用[J].计算机应用与软件, 2010 (27) :172-174.

  [2]付晓, 杨海根.自动化测试实现研究[J].中国市场, 2016 (34) :96-98.

  [3]易敏捷.软件测试国内外发展现状及趋势研究[J].电脑知识与技术, 2013 (26) :6020-6022.

  [4]徐泊.一种自动化测试系统的辅助测试工具的分析与设计[D].北京邮电大学, 2017.

  [5]田鸿运, 刘青凯, 成杰, 等.一种面向高性能数值模拟软件的自动化测试平台[J].计算机工程与科学, 2017 (39) :1980-1985.

  范文一:软件测试论文
  范文二:嵌入式软件测试的结构体系和研究方法
  范文三:软件测试与提高产品质量的考虑
  范文四: 软件自动化测试探讨
  范文五:基于遗传算法的软件测试用例自动生成研讨

软件自动化测试探讨

http://m.rjdtv.com/gongchenglunwen/5080.html

相关推荐

猜你喜欢

大家正在看