简单易懂的讲解一下什么是自动化测试?

news2025/7/25 9:57:17

1.什么是自动化测试

以程序测试程序,以代码代替思维,以脚本的运行代替手工测试。自动化的测试涵盖了:功能(黑盒)自动化测试,功能(白盒)自动化测试,性能测试,压力测试,GUI(Graphical User Interface)测试,安全性测试等

自动化测试是测试思想的一个延伸,为测试工程师提供了一个“触须”,其行为可以看成一个工具,但是本质上自动化测试还是一种思想。

顺便提一句,狭义上的自动化测试指的就是基于GUI的自动化测试,而单元测试跟API测试,你有想过怎么用手工不借助任何工具去做吗?所以它们天生就属于测试自动化的范畴。

2.自动化测试的优势

回归测试更方便可靠 ;可运行更多,更繁琐的测试,且快速高效;可执行一些手工测试执行相当困难或者做不到的测试,如大量的用户并发;更好的利用资源,具有一致性和可重复性的特点,自动化测试脚本完全可复用;提升了软件的可信度;多环境下测试等。

自动化最实在的优势在于——工作好找:有一个测试工程师(并不是本人)发现一个有趣的现象,她申请过的几乎所有测试职位,在招聘时都需要自动化测试经验。但当她开始工作后,就发现这些公司都试图做自动化测试,但是结果大多不怎么地。不过,尽管她参与的都是一些杯具的项目,不过她总能把这些杯具包装成洗具以应对下一次面试。

所以呢,既然自动化测试有那么多优势,为什么还有那么多项目做失败了呢?

我个人有个推论:自动化测试的优势都是自动化测试成功完成得到的结论,而自动化测试的劣势才是自动化项目立项的基础。

还有个优势:自动化测试可以将产品的知识固化到脚本中,以降低测试人员流动对项目造成的影响。但是这个优势的前提是,这些脚本易于维护,这就需要一些必要的文档,这又是另一个议题了。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

3.自动化测试无法做到的事以及劣势

永远不可能完全替代手工测试,自动化测试无法做到手工测试的覆盖率,不是每个测试用例都适合做成自动化,如建议一个页面的布局是否正确、安装测试、文档测试、兼容性测试、恢复性测试。

手工测试发现的缺陷远比自动化多。自动化测试是几乎无法发现新缺陷的,最大的用途是用来回归,确保曾经的bug没有在新的版本上重新出现。

自动化测试工具是死的,它不具备任何想象力。自动化测试的好坏,完全取决于测试工程师。

成本投入高,风险大。对测试人员的技术要求高,对测试工具同样有要求。

关于成本,包括了资金预算,人力资源,人员培训,硬件资源等。下图显示了自动化测试的投入成本与时间的关系,很显然,前面多数时间,成本是很高的。

基于以上劣势,所以虽然“贵为”自动化测试工程师,我有一大半的时间在劝老板,“亲,能不能不做自动化”。这真是个悲伤的故事。

4.合适引入自动化

项目周期长,系统版本不断,并且需求不会频繁变更,此时是适合引入自动化测试的。

系统的测试对象基本可以正常识别,以及对无法识别的控件能否提供一个解决方案。

系统中不存在大量的不可识别第三方控件。

需要反复测试,如可靠性测试、回归测试等需要进行上千次的系统测试

5.不适合自动化

项目周期短,需求频繁变更。即使是周期长的项目,如果经常需求变更,也不适合做自动化。

软件版本还没有稳定的情况下,主功能或大量功能有被重新更改的可能话,也不适合做自动化。

没有明确的项目测试自动化计划,措施和管理。

多数对象无法识别,以及脚本维护频繁与艰难,二者有其一,自动化必定失败。

6.自动化测试的流程

合理的自动化切入点: 通常,项目只有经历了完整的系统测试之后才算具备了基本的引入测试自动化的条件。

个人观点:无论什么测试,越早介入则越有利于降低成本,降低风险。而随着新型的开发模式兴起,自动化测试也具备了尽早介入的条件。比如敏捷开发中,某核心模块核心功能完成后,则可针对该模块的该功能开始实施自动化测试化

7测试脚本设计与开发

测试脚本大致可划分为:

(1)线性脚本:通过录制直接产生的线性可执行的脚本

(2)结构化脚本:具有顺序,循环,分支等结构的脚本

(3)可共享脚本:可以被多个测试用例使用,被其他脚本调用的脚本(即模块化的脚本)

(4)数据驱动脚本:测试数据跟业务流程控制分离的脚本,通过读入数据文件来驱动流程进行的脚本

(5)关键字驱动脚本:脚本,数据,业务分离,数据和关键字在不同的数据表中,通过关键字来驱动测试业务逻辑。关键字驱动的特点是,它更像是描述一个测试用例在做什么,而不是如何做。

(6)混合型脚本:以上任意两种及以上

(7)敏捷自动化测试脚本/框架

​感谢每一个认真阅读我文章的人!!!

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

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

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

相关文章

如何在Linux上安装JDK、Tomcat和MySQL以及部署后端项目

目录 前言 一、JDK和Tomcat的安装 1.JDK安装 2.Tomcat安装 二、安装MySQL 三、后端接口部署 1.将ssh前后端分离项目进行部署 ​2.将单体项目进行部署 3.将ssm前后端分离项目进行部署并修改端口号 前言 随着现代软件开发的快速发展,越来越多的企业和个人开始…

【C语法学习】6 - gets()函数

文章目录 1 函数原型2 参数3 返回值4 读取机制5 示例 1 函数原型 gets():从标准输入流stdin读取一个字符串存储到str指向的内存空间,函数原型如下: char *gets(char *str)2 参数 gets()函数的参数只有一个str: str是一个指向c…

如何借助知乎平台开展问答口碑营销?

知乎作为一个开放性的问答社区,把各行各业的用户链接在一起,用户可以在知乎平台分享自己的经验,也可以在知乎上搜索自己感兴趣的问题,因此就会有很多企业想要在知乎上进行问答营销推广自己的产品,但这些企业自己亲身试…

【C语法学习】7 - fgets()函数

文章目录 1 函数原型2 参数3 返回值4 读取机制5 比较6 示例6.1 示例16.2 示例26.3 示例3 1 函数原型 fgets():从指定流stream读取一个字符串存储到str指向的内存空间,函数原型如下: char *fgets( char *str, int n, FILE *stream );2 参数 …

一篇文章认识【性能测试】

一、 性能测试术语解释 1. 响应时间 响应时间即从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间。响应时间按软件的特点再可以细分,如对于一个 C/S 软件的响应时间可以细分为网络传输时间、应用服务器处理时间、数据库服务器…

一文带你了解自动化测试是什么?

本章主要讲解自动化测试的含义、分类、项目使用,以及自动化测试工具的优势。 一、自动化测试概述 1、什么是自动化测试? 自动化测试是软件测试活动中的一个重要分支和组成部分。随着软件产业的不断发展,市场对软件周期的要求越来越高&…

Android页面周期、页面跳转

1.什么是Activity? Activity是Android的四大组件之一,它是一种可以包含用户界面的组件,主要用于和用户进行交互。Activity用于显示用户界面,用户通过Activity交互完成相关操作,一个APP允许有多个Activity。 2.Activi…

CRM客户管理系统助力企业全流程精细化运营

效率是每一家企业都十分关注的重点。要想提高工作效率就要鄙弃粗放的管理模式,采用CRM客户管理系统赋能企业全流程精细化运营,让销售环节高速运转起来。 全流程精细化运营从哪些方面出发? 每一家企业的内部流程都不尽相同,客户管…

mfc140u.dll丢失怎么修复,mfc140u.dll文件有什么作用

今天我想和大家分享的是关于mfc140u.dll文件丢失的解决方法。在我们使用电脑的过程中,有时候会遇到一些错误提示,其中比较常见的就是“无法找到mfc140u.dll文件”。那么,这个文件是什么呢?它有什么作用呢? 首先&#…

双轮差速模型机器人通过线速度、角速度计算机器人位姿

已知上一时刻机器人位置P_OLD (x,y,),机器人当前时刻的线速度和角速度(v,),短时间内t内,机器人在线性部分和非线性部分的增量为 线性部分: 非线性部分: 由于可能非常小,导致非线性部分数值不稳定&#xf…

关于preempt count的疑问

Linux中的preempt_count - 知乎 https://www.cnblogs.com/hellokitty2/p/15652312.html LWN:关于preempt_count()的四个小讨论!-CSDN博客 主要是参考这些文章 之前一直认为只要是in_interrupt()返回非0值,那么就可以认为当前在中断上下文。即…

Spring Cloud Alibaba 之 Sentinel

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

小黑子—spring:第四章 事务控制与整合web环境

spring入门4.0 四 小黑子基于AOP的声明式事务控制1. Spring事务编程概述2. 搭建测试环境3. 基于XML声明式事务控制3.1 入门操作3.2 声明式事务控制详解 4. 基于注解的声明式事务控制 五 小黑子用spring进行web环境整合5. JavaWeb三大组件作用及其特点6. Spring整合web环境的思路…

Java作业一

编写程序实现如下界面效果: import java.util.Scanner;public class Test01 {public static void main(String[] args) {String name;Scanner input new Scanner(System.in);System.out.println("请输入您的姓名:");name input.nextLine();S…

算法学习打卡day39|动态规划:62.不同路径 、 63. 不同路径 II

62.不同路径 力扣题目链接 题目描述: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。…

Python图像处理【15】基于非锐化掩码锐化图像

基于非锐化掩码锐化图像 0. 前言1. 使用 scikit-image filters 模块执行非锐化掩码2. 使用 PIL ImageFilter 模块执行非锐化掩码3. 使用 SimpleITK 执行拉普拉斯锐化4. 使用 OpenCV 实现非锐化掩码小结系列链接 0. 前言 非锐化滤波器是一个简单的锐化算子,通过从原…

ArcGIS制作土地利用现状图

一、现状图成果 土地利用现状图是规划制图中一种基本的图件,基于ArcGIS制作的现状图如下所示: 二、现状图制作 1. 数据准备 (1)土地利用数据 (2)地形图 (3)影像地图 (4)其他数据 2. 符号化 加载现状地块数据。 双击地块图层,切换到符号系统,选择类别下的唯…

kubernetes-控制器

目录 一、replicaset 二、deployment 1、版本迭代 2、回滚 3、滚动更新策略 4、暂停与恢复 三、daemonset 四、statefulset 五、job 六、cronjob 一、replicaset ReplicaSet用于保证指定数量的 Pod 副本一直运行 vim rs-example.ymlapiVersion: apps/v1 kind: Replic…

Chat2DB Web版 服务器端安装部署启动流程

目录 前言安装部署过程下载安装包下载JDK17启动登录 可能出现的报错启动报错Java版本低flyway的bean创建失败登录失败无法执行二进制文件 前言 Chat2DB是款数据库连接工具,主要就是使用JDBC做数据库连接,外加多对接了几个聊天AI网站,把数据库…

敏捷开发框架Scrum-概述

如果你是一个程序员,可能会觉得这是个程序开发框架。我开始也是这样认为的。后来学习了PMP、敏捷后,才知道Scrum是一个用于管理团队工作的敏捷框架。Scrum可以理解成一个团队在一段时间里完成工作的方式。这里的一段时间通常很短,一到两周&am…