【自动化测试基础知识】什么是自动化测试?

news2024/9/23 22:40:57

什么是自动化测试?

自动化测试是一种软件工具的应用,用于自动化由人驱动的检查和验证软件产品的手工过程。大多数现代敏捷和DevOps软件项目现在都包括从一开始就进行自动化测试。然而,为了充分理解自动化测试的价值,先学习下在它被广泛采用之前的测试是什么样的。

在手工测试还是标准做法的时候,软件公司雇佣全职QA团队是很常见的做法。这个团队将开发一个“测试计划”的集合,或者一步一步的检查列表,以断言软件项目的某个特性的行为符合预期。然后,QA团队将在每次将新的更新或更改推送到软件项目时手动执行这些检查列表,然后将测试计划的结果返回给工程团队,以进行审查和任何进一步的开发以解决问题。

这个过程缓慢、昂贵且容易出错。自动化测试为团队效率和质量保证团队的投资回报率带来了巨大的收益。

自动化测试将所有权责任交给了工程团队。测试计划与常规的路线图特性开发一起开发,然后由软件持续集成工具自动执行。自动化测试促进了精益QA团队规模,并使QA团队能够专注于更敏感的特性。

持续交付(CD)就是尽可能快地向客户交付新的代码版本。自动化测试对于实现这个目标至关重要。如果在交付过程中有一个手动的、耗时的步骤,那么就没有办法自动地向用户交付。

CD是更大的部署管道的一部分。CD是持续集成的继承者,也依赖于持续集成。CI完全负责对任何新的代码更改运行自动化测试,并验证这些更改不会破坏已建立的特性或引入任何新的错误。一旦持续集成步骤通过自动化测试计划,就会触发CD。

自动化测试、CI和CD之间的这种关系为高速软件团队带来了许多好处。自动化测试通过确保新的提交不会引入任何错误来确保每个开发阶段的质量,因此软件始终保持部署就绪。

自动化测试完成后,持续集成基于自动化测试的执行结果达到预期后才开始集成。然后才是基于代码增量的持续交付。

首先应该自动化什么样的测试?

1. 端到端测试

可以说,最有价值的测试是端到端(E2E)测试。端到端测试模拟整个软件产品堆栈的用户级体验。端到端测试计划通常涵盖用户级别的故事,如:“用户可以登录”“用户可以存款”“用户可以更改电子邮件设置”。这些测试的实现是非常有价值的,因为它们可以保证真正的用户有一个流畅的无错误的体验,即使是在推送新的提交时。

端到端测试工具捕获并重放用户操作,因此端到端测试计划就成为关键用户体验流的记录。如果一个软件产品缺乏任何类型的自动化测试覆盖,那么它将通过实现最关键的业务流的端到端测试来获得最大的价值。为了捕获和记录用户流序列,端到端加密测试可能会非常昂贵。如果软件产品没有进行快速的每日发布,那么让一个人工团队手动执行E2E测试计划可能会更经济。

2. 单元测试

顾名思义,单元测试涵盖代码的各个单元。代码单元最好在函数定义中度量。单元测试将覆盖一个单独的功能。单元测试将断言函数的预期输入与预期输出相匹配。具有敏感计算的代码(可能与金融、医疗保健或航空航天有关)最好由单元测试来覆盖。单元测试成本低,实现速度快,投资回报高。

3.集成测试

通常情况下,一个代码单元会对第三方服务进行外部调用。正在测试的主要代码库将无法访问此第三方实用程序的代码。集成测试处理模拟这些第三方依赖项,并断言与它们接口的代码行为符合预期。

集成测试在编写方式和工具方面类似于单元测试。集成测试可以是E2E测试的廉价替代品,然而,当单元测试和E2E的组合已经到位时,投资回报是有争议的。

4. 性能测试

在软件开发环境中,“性能”用于描述软件项目的反应速度和响应能力。性能指标的一些例子是:“页面加载时间”,“首次呈现时间”,“搜索结果响应时间”。性能测试为这些示例用例创建度量和断言。自动化性能测试将跨这些指标运行测试用例,然后提醒团队任何倒退或速度损失。  

哪些类型的软件测试应该手动完成?

任何可以自动化的测试都应该被自动化,这是有争议的。这在生产力和人力时间成本方面是一个巨大的收益。尽管如此,与执行手动测试相比,开发自动化测试套件的ROI有时是不值得的。

1. 探索性测试

自动化测试由脚本编写,并遵循一系列步骤来验证行为。探索性测试更随机,尝试无脚本的序列来发现bug或意外行为。虽然有软件工具来建立软件探索性测试套件,但它们还没有完全成熟,也没有被广泛采用。指派一名手工QA测试人员,并利用人类的创造力来探索如何破坏软件产品,这可能会更有效。

2. UI回归测试

当软件UI引入视觉设计缺陷时,就会发生视觉回归。这可能是错误定位的UI元素,错误的字体,错误的颜色或更多。与探索性测试一样,有一些工具可以编写自动化测试来捕获这些回归。这些工具从软件产品的各种状态中捕获屏幕截图,然后使用OCR将它们与预期结果进行比较。这些测试的开发成本很高,而且这些工具没有被广泛采用。让一个人来检查一些东西,看看是否有任何视觉问题,可能会更有效。

3.为DevOps团队构建一个测试自动化框架

自动化测试没有包罗万象的解决方案。当为您的团队计划一个自动化测试解决方案时,有几个关键的考虑因素需要考虑。

4. 发布频率

以固定的时间间隔发布的软件产品,比如每月或每周,可能会发现手动测试更适合。快速发布的软件产品将极大地受益于自动化测试,因为CI和CD依赖于自动化测试。

5. 可用的工具和生态系统

每种编程语言都有自己的互补工具和实用程序生态系统。每种类型的自动化测试模式都有自己的工具集,这些工具在特定的编程语言生态系统中可能可用,也可能不可用。自动化测试模式的成功实现将需要语言和工具支持的交集。

6. 产品市场适应性和代码库成熟度

如果您的团队正在构建一个尚未证明其目标受众或业务模型的新产品,那么投资自动化测试可能没有意义。自动化测试作为一种保险机制来限制意外的代码回归。如果您的团队正在以高速移动,那么当代码发生巨大而迅速的变化时,更新和维护自动化测试的成本可能会令人沮丧

让自动化测试成为CD管道的一部分

自动化测试是标准的现代软件开发实践。最好的团队和公司使用自动化测试。CI/CD依赖于自动化测试,对于帮助最好的团队向客户交付可靠和健壮的软件至关重要。

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/728140.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优化|一阶方法:求解不具有凸性和lipschitz连续性的复合问题

论文解读者:陈康明,赵田田,李朋 编者按:​ 对于大多数一阶算法,我们会在收敛性分析时假设函数是凸的,且梯度满足全局 Lipschitz 条件。而本文中,对于某一类特殊函数。我们不仅不要求函数是凸的…

基于信号博弈模型的区块链赋能下中小企业融资问题

​ 我国的金融体系是银行主导性,银行信贷是企业融资的首要来源。然而银企之间存在着严重的信息不对称,根据经典的微观银行理论,银行与企业之间的信息不对称会引发道德风险和逆向选择问题。因此在银行信贷市场中,当中小企业需要融资…

MySQL实现数据炸裂拆分(类似Hive的explode函数的拆分数组功能)

MySQL实现数据炸裂拆分(类似Hive的"explode"函数的拆分数组功能) 需求背景 背景描述 ​ 在Hive中,"explode"函数用于将数组类型的列拆分为多行,以便对数组中的每个元素进行处理。然而,在MySQL中,并没有直接…

前置微小信号放大器怎么用

前置微小信号放大器是一种用于将微弱信号从传感器转换成足够强度的信号以便更好地进行检测和处理的设备。它主要应用于各种传感器领域,例如温度传感器、压力传感器、光学传感器和生物传感器等。前置微小信号放大器的作用是提高信号的信噪比,减小噪声干扰…

天津热门大数据培训班 大数据选课技巧

大数据开发技术的应用时时刻刻都会影响我们的生活,所以很多想转行做大数据开发,大数据开发技术不断更新和发展,很多企业在开发过程中需要的大数据开发技术不断提高要求,因此市面上缺少的是要全面技能的大数据开发人员。 什么是大…

使用 Docker Desktop 安装 Centos 系统

一、前言 由于 Docker 是一个容器,它支持在一个服务器进行多服务部署,并且还能保持服务的独立性,那么,在Docker 上的运用时 我们也是可以 独立部署多个系统来做不同是其他,这样环境独立的情况下,也就不会造…

投票评选活动小程序v2-用户报名图片上传

投票评选活动小程序v2-用户自行报名收集材料页面 主要收集项目或者作品图片及其描述,可以在后台进行统一录入,也可以是在用户界面,让用户自行报名上传。 这里开发了一个“我要报名”页面,在首页点击“我要报名”按钮跳转过来。 …

精耕细作的运维资源成本管控方法-互联网企业的Finops思考与实践

当前,降本增效成为各大互联网公司的重要方向,IT成本则占据了互联网成本的大头。随着IT资源成本花费越来越高,很多公司意识到掌握管控成本和优化成本的重要性。 如何有效的降本?如何做好成本的洞察管控?如何掌握资源成…

5000字干货!让你一次搞懂什么是高保真原型

在产品设计领域,尤其是在用户体验设(UX)中,高保真原型至关重要。它是一种几乎按照产品最终的呈现模样制作出来的原型,包含产品的细节、真实的交互和完善的UI。正因为高保真原型最接近真实产品,因此成为企业…

使用Streamlit和OpenAI API构建视频摘要

本文提供了使用Streamlit和OpenAI创建的视频摘要应用程序的概述。该程序为视频的每个片段创建简洁的摘要,并总结视频的完整内容。 要运行应用程序,需要安装以下依赖项: Python(3.7或更高版本)StreamlitOpenAI API密钥llama_indexyoutube_transcript_api…

Vue3+Vite+Pinia+Naive项目搭建之二:scss 的安装和使用

前言 如果对 vue3 的语法不熟悉的,可以移步 Vue3.0 基础入门,快速入门。 1. 安装依赖 yarn add sass -D // or npm install sass -D 2. 页面样式初始化 reset.scss /* 新建 src/assets/style/reset.scss */ /* 页面样式初始化 */ html, body, div, s…

Linux VS Windows 孰优孰劣?

目录 1. 开源 vs. 闭源:2. 用户界面:3. 软件兼容性:4. 系统安全性:5. 社区支持和文档资源: Linux和Windows是两个主要的操作系统,它们在很多方面都有不同的特点和使用体验。以下是对Linux和Windows进行比较…

python_day1

单行注释规范,#号后留一空格 # 单行注释多行注释,三个单引号或三个双引号 duo hang zhu shi 赋值给变量时为字符串 n 123print(n)查看类型:type() a 111 b "111" if a b:print("true")print(a)print(type(a)) el…

Ubuntu20.04+Docker+ROS Noetic 可视化容器管理工具Portainer

1. 安装docker 官网教学安装网址:Install Docker Engine on Ubuntu | Docker Documentation 2. 安装noetic镜像 ros镜像网址 https://hub.docker.com/r/osrf/ros https://hub.docker.com/r/osrf/ros/tags sudo docker pull osrf/ros:noetic-desktop-full 3. 创…

高效提升控制效率 | 基于ACM32 MCU的LED灯箱控制器方案

前言 LED灯箱上各种文字、图案有序跳跃、交替辉映,产生强烈的视觉冲击力,被广泛应用于商场、美容美发、宾馆、娱乐场所等地方。 锁存器的工作原理 在LED和数码管显示方面,要维持一个数据的显示,往往要持续的快速的刷新。尤其…

vant省市区引入@vant/area-data官方数据报错问题解决

我们依照官方流程引入数据 yarn add vant/area-dataimport { areaList } from vant/area-data;Page({data: {areaList,}, });我们正常引入后会发现报错为 module ‘node_File/area-data/dist/data1.js’ is not defined 按照网上的vant-weapp的Area 省市区选择组件无法显示进行…

Segmentation fault (core dumped)问题解决

torch:1.10.0cu111 pandas:1.3.3 报错: 定位: df pd.DataFrame(columns[epoch, model.sigma1.cpu().detach().numpy(), model.sigma2.cpu().detach().numpy(),model.sigma3.cpu().detach().numpy(),iter,avg_ssim, avg_psnr,model.current…

LeetCode 75 —— 98. 验证二叉搜索树

LeetCode 75 —— 98. 验证二叉搜索树 一、题目描述: 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子…

【MYSQL高级】Mysql的SQL性能分析【借助EXPLAIN分析】

性能分析 要说sql有问题,需要拿出证据,因此需要性能分析 Mysql查询优化器(Mysql Query Optimizer) Mysql中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息&#xf…

Mali Offline Compiler - 官方视频教学 - 笔录

文章目录 目的Mali Offline Compiler 使用实例视频分析 shadermalioc 命令制定你想要分析的 shader制定你想要分析的着色器对应的 GPU实例解析内容硬件结构 & 驱动 & Shader 类型信息寄存器、是否堆溢出、16-bit 算术占比寄存器的使用量减少浮点精度优化堆溢出与否16-b…