热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一文读懂测试自动化

测试是软件开发过程的关键部分,允许开发人员验证软件功能,衡量性能并识别缺陷以进行修复。但是,随着软件项目变得越来越复杂,项目开发周期越来越快,传统的手动质量保证(QA)测试可能不够

测试是软件开发过程的关键部分,允许开发人员验证软件功能,衡量性能并识别缺陷以进行修复。但是,随着软件项目变得越来越复杂,项目开发周期越来越快,传统的手动质量保证(QA)测试可能不够快或不够完整,无法在可接受的时间范围内满足测试目标。

 

因此,软件开发人员越来越多地转向自动化测试工具和工作流程,以加快测试方案,同时确保QA过程中更好的一致性和完整性。

为什么自动化测试很重要?

一文读懂测试自动化

 

自动化软件测试既是一种工具,也是一种过程。自动化测试工具提供了在软件产品上执行测试所需的机制和功能。测试可能会有所不同,从简单的脚本到详细的数据集和复杂的行为模拟。所有测试都旨在验证软件是否提供了预期的功能,并在可接受的参数内按预期运行。诸如Selenium,Appium,Cucumber,Silk Test等工具允许创建可以满足软件特定需求的定制测试。

 

从流程的角度来看,自动化测试将测试自动化工具和操作添加到常规软件开发工作流中。例如,交付到存储库的新版本可以使用一个或多个规定的工具自动进行自动测试方案;测试可以在非工作时间实施,几乎没有开发人员干预(如果有的话)。与以前的测试运行相比,自动测试结果会被仔细记录下来,并交付给开发人员进行审查。根据结果,可以将软件循环回给开发人员进行进一步的工作,或批准为部署的候选软件。这些示例与依赖于持续集成/持续交付管道的 DevOps 环境特别相关。

 

虽然自动化软件测试很有用,但它并没有取代手动软件QA测试。成功需要高水平的维护和关注。自动测试过程可以比手动测试过程进行得快,但是一个现实且可维护的测试自动化计划需要大量的时间和精力。开发人员必须了解软件需求,规划测试用例,设置测试优先级,并确保创建的任何测试都将产生准确且有意义的结果。

 

大多数软件项目仍将受益于熟练的QA测试人员的关注,他们可以执行难以使用自动化工具模拟的测试,或者频率低到足以证明自动化它们所需的投资是合理的。在整个开发周期中,自动和手动测试通常以不同程度一起执行。

 

测试自动化的优势是什么?

 

一文读懂测试自动化

 

自动化软件测试可以为开发团队提供一系列潜在的好处,同时还可以更广泛地为业务提供价值。主要优点与其他自动化工具的优点相呼应,包括准确性、报告、范围、效率和可重用性。

 

理想情况下,自动化测试消除了人工测试固有的大部分手动交互。每次都以相同的方式进行相同的测试。消除了错误和疏忽,从而提高了测试准确性。同时,自动化支持和执行的测试数量远远超过人类测试人员可以处理的数量。创建测试后,可以重用其脚本、数据、工作流和其他组件,以测试未来的构建以及其他软件项目。自动化测试的准确性、范围和可重用性将取决于在规划、创建和维护自动化测试套件方面的投资。

 

其他好处包括更好的日志记录和报告功能。手动测试人员可能会忘记表示条件、模式和结果,从而导致测试文档不完整或不准确。自动测试不会错过日志记录和报告,这可确保记录每个结果并进行分类以供开发人员查看。结果是每个测试周期的测试更全面,错误检测更好 - 特别是当结果可以与以前的结果进行比较以衡量分辨率的有效性和效率时。

 

自动化测试有哪些类型?

 

自动化软件测试可以应用各种测试类型来检查集成、接口、性能、特定模块的操作和安全性。测试不限于单个测试类型,并且可以同时应用分层或快速连续执行多个测试类型以测试多个问题。

 

自动测试可以执行以下类型的测试:

一文读懂测试自动化

 

  • 回归测试

回归测试本质上是确保新代码不会破坏任何现有代码的艺术。添加新代码或更改现有代码时,回归测试会验证其他代码或模块是否继续按预期运行。回归测试通常在每次生成后重复。它通常为测试自动化提供出色的价值。

 

  • 单元测试

单元测试通常检查应用程序代码库的特定部分,如子例程或模块。例如,单元测试可以初始化模块,调用方法或函数,然后评估任何返回的数据,以验证编码标准,例如模块和函数的编写方式。

 

单元测试的成功通常意味着代码按预期编译和执行。单元测试通常是测试驱动开发策略的一部分,其中成功意味着预期的功能或特性按软件需求规范中的计划或要求存在。

 

  • 冒烟测试

冒烟测试通常是简单的通过/不进入测试,旨在确保应用程序在新构建完成时仍正常运行。测试通常用于确定应用程序最重要的特性或功能是否按预期运行,以及应用程序是否适合进一步、更详细的测试。

 

例如,冒烟测试可以确定应用程序是启动、界面是否打开、按钮是否正常工作或对话框是否打开等。如果冒烟测试失败,则应用程序可能损坏得太厉害,无法证明进一步测试的合理性。此时,应用程序将返回给开发人员进行重新装备。冒烟测试通常称为生成验证测试或生成验收测试。

 

  • API和集成测试

通信和集成是现代软件的重要方面。API测试用于验证应用程序API的请求和响应的交互。这些端点可能涉及各种端点,包括数据库、大型机、UI、企业服务总线、Web 服务和企业资源规划应用程序。API 测试不仅会查找合理的请求和响应,还会检查异常或边缘情况,并评估延迟、安全性和正常错误处理方面的潜在问题。

 

API测试通常包含在集成测试中。这提供了对应用程序的模块和组件的更全面的测试,以确保一切按预期运行。例如,集成测试可以模拟一个完整的订单输入过程,该过程将测试订单从输入到处理,从计费到发货,再到以后,以便从头到尾都涉及应用程序的每个部分。

 

  • 用户界面和输入/输出测试

用户界面(UI)表示任何应用程序的前端,允许用户与应用交互。UI 本身可以像命令行界面或精心设计的图形用户界面(GUI)一样简单。UI测试可能是一项复杂且非常详细的工作;可能的按钮按下序列或命令行变化的数量可能是惊人的。

 

输入/输出(I/ O)测试基本上将输入数据转换为输出数据。例如,用于执行计算和派生输出的应用程序可能会使用示例数据集并检查输出以确保基础处理功能正确。I/O 测试通常与 UI 测试相关联,因为数据集经常通过 UI 选择,并且结果可能会绘制图形或以其他方式显示在UI中。

 

  • 安全和漏洞测试

安全测试有助于确保应用程序及其组成数据在应用程序故障和故意尝试未经授权的访问后保持安全。安全测试可以检查授权行为以及常见的攻击媒介,如SQL注入和跨站点脚本。

 

漏洞测试通常在执行生成之前在代码库上执行。这将检查代码是否存在已知缺陷,例如子例程中缺少错误处理或不安全的配置设置。漏洞测试通常与渗透测试或渗透测试相关联,作为检查应用程序或数据中心环境安全就绪情况的一种手段。

 

  • 性能测试

应用程序可能正确通过功能测试,但在压力下仍会失败。性能测试旨在衡量应用程序的关键性能指标,其中可能包括计算负载、流量级别和可伸缩性。实际上,性能测试旨在模拟真实情况,通常会推动应用程序超出其要求,直到其失败。这种评估为进一步的开发提供了基准,也为添加限制或警告以防止意外问题提供了基准。

 

  • 验收测试

软件是使用软件需求规范 (SRS) 开发的。SRS 包含概述应用程序预期的特性和功能的验收标准。验收测试通常用于验证条件是否符合 SRS 或其他客户端文档。换句话说,验收测试确定项目何时完成。由于验收测试可能极难自动化,因此它们通常保留在项目开发周期的后期。

 

如何执行自动化测试

 

任何自动化的目标都是降低构建产品或开展活动所需的成本和时间,同时保持或提高产品质量。这个概念应该指导组织实施自动化软件测试。

 

但是有许多类型的测试,每种类型的测试都给开发人员和 QA 专业人员带来了挑战和要求。组织在使用自动化时应该明智,当投资回报率最高时,这最容易证明是合理的。这通常发生在数量大且范围狭窄的测试活动中。

一文读懂测试自动化

 

一个常见的敏捷测试自动化金字塔以测试驱动的开发单元测试的形式说明了这一概念,其中一小部分代码被重复测试,有时一天几次。相反,需要高度主观意见或标准的测试,并且不能轻易编纂,可能不适合自动化。此处的一个常见示例是 GUI 测试,其中脚本可以测试 UI 的按钮和其他物理元素,但无法确定 UI 是否正常。

 

开发人员和软件QA/测试专业人员通常负责准备测试,而测试代码通常与其他代码段无法区分。在大多数情况下,测试代码采用脚本的形式,旨在按规定的顺序执行某些行为。某些测试也可以自动生成。一个流行的例子是记录和回放测试工具,它根据用户操作或行为创建测试。

 

通常,记录和回放工具将用户活动与对象库进行匹配,这些对象对行为进行分类,然后将对象转换为代码。该代码构成了脚本或其他测试数据集的基础。工具生成测试后,可以重复使用、编辑该测试或将其与其他测试合并。

 

记录和回放测试可帮助 QA 团队开发模拟用户活动的测试。这些测试可以是 UI 测试、回归测试或集成测试,用于实现和重复复杂的操作序列。此类工具还可用于检查性能问题,例如确保特性或功能在适当的时间范围内响应。

 

一个常见的敏捷测试自动化金字塔以测试驱动的开发单元测试的形式说明了这一概念,其中一小部分代码被重复测试 - 有时一天几次。相反,需要高度主观意见或标准的测试,并且不能轻易编纂,可能不适合自动化。此处的一个常见示例是 GUI 测试,其中脚本可以测试 UI 的按钮和其他物理元素,但无法确定 UI 是否正常。

 

开发人员和软件 QA/测试专业人员通常负责准备测试,而测试代码通常与其他代码段无法区分。在大多数情况下,测试代码采用脚本的形式,旨在按规定的顺序执行某些行为。某些测试也可以自动生成。一个流行的例子是记录和回放测试工具,它根据用户操作或行为创建测试。

 

通常,记录和回放工具将用户活动与对象库进行匹配,这些对象对行为进行分类,然后将对象转换为代码。该代码构成了脚本或其他测试数据集的基础。工具生成测试后,可以重复使用、编辑该测试或将其与其他测试合并。

 

记录和回放测试可帮助 QA 团队开发模拟用户活动的测试。这些测试可以是 UI 测试、回归测试或集成测试,用于实现和重复复杂的操作序列。此类工具还可用于检查性能问题,例如确保特性或功能在适当的时间范围内响应。

 

测试自动化框架

 

一文读懂测试自动化

 

自动测试不会在真空中发生。自动测试工具的选择和实施不足以提供结果。成功的测试自动化需要仔细注意测试执行环境中涉及的指南、编码标准、报告、流程和工作流以及其他基础工作。这种概念的混合称为测试自动化框架。

 

如果实施得当,测试自动化框架可以帮助开发人员和测试人员跨项目和业务部门高效、统一地创建、执行和报告测试自动化事件。经过深思熟虑的框架的其他好处包括更好的代码可重用性,有机会跨更多代码(模块,组件甚至整个项目)自动进行测试,更容易维护和支持测试自动化工具,以及更少的人为干预手动QA测试。

 

尽管有潜在的好处,但自动化软件测试可能会给组织带来严峻的挑战。制定一个定义和优化测试的测试自动化框架至关重要,这样它们就可以在最少的人为干预下运行。

 

成功的测试自动化框架取决于一个计划,该计划记录了测试的开发、存储(保护)和执行方式。此类计划通常定义测试创建中涉及的可用资源、工具、语言、报告和测试存储或保留目标。这可能需要花费大量精力来决定谁编写和执行测试,谁维护工具,执行特定测试类型的时间和情况,测试媒体的存储位置以及如何管理测试版本。

 

测试自动化框架需要强大的报告、日志记录和维护策略。这有助于开发人员了解在何处快速查找测试结果报告或执行日志,还可以加快下一个版本的修复和修复工作。该工具通常会生成错误日志以响应脚本问题(不一定是应用程序问题),因此随着时间的推移,访问这些相关日志可以帮助脚本和测试维护。最终,一个强大的框架需要定期测试,以确保测试是充分和适合正在开发的应用程序。

 

测试自动化的未来

 

一文读懂测试自动化

 

自动化软件测试工具不断发展,系统地增加了人工智能和机器学习功能,帮助工具自主创建合适的测试用例。智能可帮助工具将测试重点放在与开发中的软件最相关的领域,使开发人员和测试人员能够为边缘情况创建脚本和更传统的测试媒体,并为性能、安全性和其他优先事项进行战略测试。

 

工具已经开始在测试创建、测试数据管理和分析方面具有自主功能。最终, 工具 可能 能够 扫描 代码 并 获得 测试 覆盖率, 或 创建 仿真 和 模型, 而 这些 仿真 和 模型 是 无法 使用 现有 工具 手动 实现 的。此外,人工智能可以帮助找到测试中的差距,甚至提出填补这些差距的方法。

 

自动化软件测试的另一个发展途径是机器人过程自动化或RPA,旨在根据需要执行重复操作。对于软件开发,RPA技术可以模仿用户操作并测试不同系统之间的交互。目标是将复杂的多步骤、多系统操作转换为可重复和脚本化的流程。实际上,RPA可以支持端到端测试,评估客户活动和对软件行为的期望。RPA的一个新兴用途是在低代码软件开发平台中,其中工具将现有模板拼接在一起以生成然后执行更复杂的业务功能。

 

测试自动化、AI、RPA 和低代码技术仍处于起步阶段。这些技术的未来最终将取决于它们的商业价值和解决业务问题的创造力。具有讽刺意味的是,成功将取决于人类对业务及其内部运作的深刻理解,以便找到低效或乏味的任务,这些任务将从未来的测试平台中受益。


推荐阅读
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • 老牌医药收割AI红利:先投个15亿美元抢中国人才
    萧箫发自凹非寺量子位报道|公众号QbitAI没想到,一场大会把我的“刻板印象”攻破了。2021世界人工智能大会现场,能看见不少熟悉的身影, ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 驭势科技签约禾赛科技,携手推进“全场景”自动驾驶商业化
    2021年12月8日,全球领先的激光雷达公司禾赛科技和自动驾驶商业化全球领跑的公司驭势科技共同宣布,双方达成战略合作协议。根据协议,禾赛将 ... [详细]
  • 周鸿祎火力全开
    “在这个IoT时代,只是孤立地搞大数据,孤立地搞云,或谈AI,或做一个智能硬件,我觉得都是不完备的,必须将这几项技术综合运用起来,才是一个真正的IoT时代,也是IoT真正的春天。” ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 物联网、工业互联网大数据的特点-随着数据通讯成本的急剧下降,以及各种传感技术和智能设备的出现,从手环、共享出行、智能电表、环境监测设备到电梯、数控机床、挖掘机、工业生产线等都在源 ... [详细]
author-avatar
宋文哲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有