【自动化测试总结】优点、场景、流程、项目人员构成
一、自动化测试的概念
以程序测试程序,以代码代替思维,以脚本的运行代替手工测试,可以大大提高工作测试的效率。
二、自动化测试的优点
1.回归测试更为方便,可靠。自动化测试最主要的任务和特点,特别是在程序修改比较频繁的时,效果最为明显。由于回归测试的业务流程流程操作和测试用例是预先完全设计好的,预期结果也是完全在项目人员掌握之中的,将回归测试交给计算机自动运行,可以极大提高测试效率,缩短回归测试时间。但是,上述说的程序修改比较频繁指的是新功能不断加入,而老公能的逻辑是不变或者很少变化的,不是指整个程序全部或者大批量的改动。因为这样是违反自动化测试原理的。
2.可运行更多,更为繁琐的测试,且快速高效。自动化测试可以实现在短暂的时间运行更多的test case。我们知道,有很大一部分业务功能由于业务逻辑极其繁琐,使用手工测试往往耗费大量的时间,测试1次,2次,3次还可以,但是如果测试10次以上或者更多,耐心会达到极致。
3.可以执行对于手工测试来说相当困难或者根本做不到的测试。比如,对于大量用户的测试并发,不可能同时让足够多的测试人员同时进行测试,但是却可以通过对自动化测试模拟同时有许多用户并发点击某一功能,从而达到测试的目的。再比如,人工不可能24小时不眠不休进行测试,但是计算机则不同休息。当然,类似的例子还有很多,无法全部列举出来。
4.更好地利用资源,使资源的使用更有价值。将方所的任务自动化,可以提高准确性和测试人员的积极性,将测试技术人员 解脱出来,投入更多精力设计更好的测试用例。有些测试不适合于自动化测试,仅适合手工测试,将可自动化测试的测试自动化后,可以让测试人员在专注于手工测试部分,提高手工测试的效率。
5.自动化测试脚本完全更有信任度。
6.自动化测试脚本完全具有复用性。
7.多个环境下进行测试。我们知道,一个系统,往往会被要求能够支持各种不同的环境并稳定运行,但是这么多不同的环境,比如常用浏览器有IE6,IE7,IE8,FireFox等,系统有Windows 2003,Windows XP,Windows Vista,Windows 7等,甚至还有杀毒软件,如卡巴斯基,360,诺顿等,这么多环境的组合,如果每一种环境组合我们都需要花人力,物力去把功能测试一遍,会无形加重负担。
三、适合引入自动化测试的条件
1.项目周期长,系统版本不断。如果你目前躲在测试的项目或者系统是属于一个周期比较长的项目的时候,可以说,的确非常适合引入自动化测试,把大量的回归测试托付给测试自动化是一个比较明智的选择。还有一种根据是从系统的版本数得来的,曾经测试领域专家有过相关的研讨并最后得出结论,一般自动化测试耗费的时间是手工测试的6-10倍,所以,如果你所在的项目版本数在10个以上,纳闷,引入测试自动化也同样非常的睿智。
2.需求变更不频繁,当项目的需求非常稳定,不会进场出现变更的时候,此时也很适合引入测试自动化。
3.系统中的测试对象基本可以正常识别。
4.系统中不存在大批量第三方控件。有实际项目经验的人一定会发现,无论什么系统,B/S架构也好,C/S架构也好,多少存在一些第三方控件,但是如果这些第三方的控件数量不多的话,经过详细的计划与评估后,完全可以引入测试自动化,当然,如果第三方控件数量庞大或者刑事种类庞大的话,就会带来很多麻烦。
5.需要反复测试。
PS:多数对象无法识别以及脚本维护频繁与艰难,二者有其一,自动化测试注定失败。如果项目中存在大量无法识别的空间(这种情况基本是发生在系统中存在大量的第三方控件)或者项目中没有获得相应的对象识别插件,是没有办法写出自动化测试脚本的。当然,对象的识别不一定要靠插件,还有其他解决方法,比如SDK插件扩展,或者让开发人员提供相应的DDL来识别等。
自动化测试工具对系统具有有效性。如果项目时间并不紧迫,项目需求也较为稳定,项目周期也较长,那么可想尝试开发自动化测试脚本,必须具备一款匹配的自动化测试工具,那么可以是开源的也可以是商业化的,甚至是自主研发一款。此时,就需要确切的了解这款测试工具是否真的能够应付项目需求,假设你所在的公司购买了一款商业化的自动化测试工具,项目系统中全部是一些java控件,但是测试工具自带的插件中又不包含java控件的识别插件,那么此时就算拥有这款自动化测试工具,但是由于无法有效的识别到项目中的控件,所以,对于项目来说是毫无作用的。
四、自动化测试的一个流程
1.合理的自动化测试切入点。通常,项目只有在经历了完整的系统测试后才算具备了基本的引入测试自动化的条件。一般也就在这个时间段,项目经理与测试经理才会以此定位自动化测试开始筹划与准备的时间点。到目前为止,绝大部分的公司都以系统测试完成为标准来作为自动哈UC屙屎的切入点,因为在这之前的任何阶段中都不是非常适合做自动化测试。
2.测试自动化分析
(1)可行性分析
(2)抽样demo分析 demo已经是一个实体案例,所以完全可以通过透析demo来发现是否存在技术上的致命问题通常在demo完成之后,有经验的自动化测试工程师或者组长就能对这个项目的自动化测试工作有一个答题的把握了,关于demo的选取,一般直接选择猫眼测试用例写成测试脚本,检查脚本是否能够成功运行通过,已设计的测试点是否全部执行到即可。
(3)测试需求分析 我们需要分析项目中具体哪些测试需求(功能点)准备进行自动化测试,一条测试需要可以包含多条自动化测试用例,通过测试需求分析来判定项目中此时自动化要做到什么程度。举个例子,在自动化测试用例的设计上,大体是一正向,反向划分,我们知道自动化测试是不需要也没有必要做到100%覆盖率,所以在测试需求分析这个阶段,确定测试覆盖率以及自动化测试粒度,测试用例上筛选等都是重点工作。
PS:正向测试用例就是正常的业务操作流,几乎没有什么非正常的情况,反向及时一场的业务操作流。
3.测试计划的定制
4.自动化测试设计阶段
(1)自动化测试框架设计,开发与搭建 自动化测试框架对于整个自动化测试项目来说就相当于一个架构,这个架构越好,功能越强大和使用,呢就可以给今后整个自动化测试项目的工作过程带来更多的好处,自动化测试框架是能保证测试的分布执行,脚本模块化,数据驱动,日志分析,错误截图,报表回收,共享对象库,公共函数库,环境配置,同一设计模式,异常处理,场景回复等一个无人值守,针对每个肚里项目的测试框架。
(2)自动化测试用例设计三部曲
.筛选手工测试用例的过程 首先要根据测试需求分析阶段得出的分析结果筛选出所有要被测试自动化的手工测试用例,在全部筛选完毕后,再分成两部分,一部分是可以直接二次复用的手工测试用例,不要客气,直接拿来即可,另外一部分则要经理下一个过程,实际上,大多数还是需要经历改造的,毕竟自动化测试用例的设计方法和手工测试用例的设计方法有点出入,哪怕是冒烟测试用例多少也要修改。
.转换手工测试用例的过程
.新增和补充自动化测试用例的过程
5.测试脚本设计与开发
在自动化测试中,测试脚本大致可以划分为5种
(1)线性脚本:通过录制直接产生的线性执行的脚本
(2)结构化脚本,具有顺序,循环,分支等结构的脚本
(3)可共享脚本:可以被多个测试用例使用,被其他脚本调用的脚本
(4)数据驱动脚本:测试数据和业务流程控制分离的脚本,通过读入数据文件来驱动流程进行的脚本
(5)关键词驱动脚本:脚本,数据,业务分离,数据和关键字在不同的数据表中,通过关键字来驱动测试业务逻辑,关键字驱动脚本的特点是,她看起来更像描述一个测试用例在做什么,而不是如何做
6.自动化测试执行
所有的自动化测试脚本全部开发完毕后会进入合并联调阶段,脚本联调成功后方能进入这一阶段。
脚本联调是一个关键的时期,联调如果不通过是无法进行下一个环节的,毕竟都到了这个阶段了,已经花了很多工时了
(1)无人值守的测试
.环境搭建,部署与配置
.自动化测试用例和测试脚本互相绑定
.自动化测试用例执行顺序排列与组合
(2)异常处理和场景恢复
(3)一个自动化测试执行实例,举一个QC自动化测试框架(Quality Center 一款集测试解决方案,测试流程管理,缺陷管理的工具,其本身也是一个自动化测试框架的例子)我们将测试脚本上传到QC服务器与相应测试用例绑定,最后,可以生成一个测试集,测试集里可以导入之前设计的测试用例,如果导入的用例和脚本有过绑定,则脚本也随之自动加载到测试集中,只需要点击执行按钮即可如果在执行过程中发生意外秦光,只要预先设置了各种异常情况及处理应对方式,QC就会自动进行处理,并把测试场景恢复到预置的状态重新自动执行测试。等测试集中的测试用例全部运行完毕后,QC就会显示这些测试用例的运行结果并生成图标,然后自动将缺陷提交到服务器中,方便测试工程师了解自动化测试运行以及完成的情况乃至发现的缺陷情况。
7.提交自动化测试产物
8.测试脚本维护
五、自动化测试项目的人员构成
1.自动化测试组长:自动化测试团队的最高管理,拥有发言权
2.高级测试开发工程师:团队中技术最牛的角色,通常负责自动化测试框架的设计与搭建,负责自动化项目实施过程中各类技术难点的解决;负责公共数据的提炼和开发,如公共函数库等
3.自动化测试用例设计人员:由团队中对业务和手工测试情况最熟悉的人员担当,负责自动化测试用例的设计开发工作,及今后的测试用例维护工作;负责测试脚本的验收工作,监督测试脚本业务逻辑时候与设计好的自动化测试用例一致
4.脚本开发人员:负责自动测试脚本的设计与开发;负责脚本合并联调工作,负责后期的脚本维护工作
5.自动化项目库管理人员:类似文职人员,可以没有代码开发经验,负责整个子弟欧诺个话团队中日常工作中的文档变更记录的整理,公共对象库管理,代码版本管理与公共函数库管理等
自动化测试用例的范围往往是核心业务流程或者重复执行率较高的
自动化测试用例的选择一般以正向为主
不是所有的手工测试用例都可以使用自动化测试来实现的
手工测试用例可以不用回归原点,而自动化用例往往是必须的
自动化测试用例和手工测试用例不同,不需要每个步骤都写预期结果
感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

相关文章:
【自动化测试总结】优点、场景、流程、项目人员构成
一、自动化测试的概念 以程序测试程序,以代码代替思维,以脚本的运行代替手工测试,可以大大提高工作测试的效率。 二、自动化测试的优点 1.回归测试更为方便,可靠。自动化测试最主要的任务和特点,特别是在程序修改比较…...
杨中科 ASP.NETCore Rest
什么是Rest RPC 1、Web API两种风格: 面向过程(RPC) 、面向REST (REST) 2、RPC:“控制器/操作方法“的形式把服务器端的代码当成方法去调用。把HTTP当成传输数据的通道,不关心HTTP谓词。通过QueryString请求报文体给服务器传递数据。状态码。比如/Persons/GetAll…...
RTU数据采集终端
在现代工业控制系统中,数据采集是一个至关重要的步骤。RTU(远程终端单元)作为一种常用的数据采集终端设备,不仅可以实现数据的采集和传输,还可以实现现场设备的远程监控和控制。 一、RTU数据采集终端的工作原理 RTU数据采集终端是一种将现场…...
双指针--- 数组元素的目标和
目录 数组元素的目标和思路:暴力做法思路:双指针做法: 代码: 原题链接 数组元素的目标和 给定两个升序排序的有序数组 A 和 B ,以及一个目标值 x 。 数组下标从 0 开始。 请你求出满足 A[i]B[j]x 的数对 (i,j) 。 数据保证有唯…...
你的网站或许不需要前端构建(二)
前一阵,有朋友问我,能否在不进行前端编译构建的情况下,用现代语法开发网站界面。 于是,就有了这篇文章中提到的方案。 写在前面 这篇文章,依旧不想讨论构建或不构建,哪一种方案对开发更友好,…...
flutter 使用adb 同时连接 多个模拟器
MUMU模拟器 MuMu模拟器官网_安卓12模拟器_网易手游模拟器 传统只需要 连接一个 默认命令是 默认端口是7555 adb connect 127.0.0.1:7555 但是需要同时连接调试多个模拟器的时候 就需要连接多个 这里可以使用自带的多开 多开后 使用 1 是对应多开的序号 这样就可以查看对…...
网络四元组
文章目录 网络四元组 今天我们来聊聊 网络四元组 网络四元组 四元组,简单理解就是在 TCP 协议中,去确定一个客户端连接的组成要素,它包括源 IP 地址、目标 IP 地址、源端口号、目标端口号。 正常情况下,我们对于网络通信的认识可…...
[实践总结] 限制正则表达式匹配次数/时间 防止DoS攻击
思路 1、优化正则表达式 2、正则表达式无法优化的话,可以考虑限制匹配次数,或者限制匹配时间 限制 匹配次数 public class CountedCharSequence implements CharSequence {private final CharSequence charSequence;private long count;public Counte…...
ffmpeg 5.0版本调试 ffmpeg 5.01 static版本
ffmpeg 5.0版本调试 写法:ffmpeg -rtsp_transport tcp -re -i rtsp://admin:BYTtest2019192.168.1.2:554/h264/ch1/main/av_stream -q 5 -f mpegts -fflags nobuffer -c:v mpeg1video -an -s 960x540 http://127.0.0.1:12345/demo本地写法 ffmpeg -timeout 5000000…...
应用在游戏机触摸屏中的触摸感应芯片
触屏游戏机的屏幕是由液晶屏和触控层组成的。触控层分为电容式触屏和电阻式触屏两种。电容式触屏是将悬空电极和屏幕玻璃上的电极组成静电场,当人体接近屏幕时,就会改变静电场分布,从而实现触摸的位置探测。而电阻式触屏则是利用玻璃上的两层电极之间通电形成一个电阻值,当手指…...
D-Link DES-108 交换机
D-Link DES-108 交换机 1. 百兆交换机 8 口References D-Link Corporation is a Taiwanese multinational networking equipment manufacturing corporation headquartered in Taipei, Taiwan. Taiwanese:adj. 台湾的 n. 台湾人 headquarter [hedkwɔ:tə]&#…...
VIT用于图像分类 学习笔记(附代码)
论文地址:https://arxiv.org/abs/2010.11929 代码地址:https://github.com/bubbliiiing/classification-pytorch 1.是什么? Vision Transformer(VIT)是一种基于Transformer架构的图像分类模型。它将图像分割成一系列…...
MongoDB Certified Associate Developer 认证考试心得
介绍 前段时间通过了 MongoDB Associate Developer 考试,也记下了一些心得,结果忘记发出来了,现在重新整理下。通过考试后证书是这样的: MongoDB 目前有两个认证证书 1. MongoDB Associate Developer 认证掌握使用MongoDB 来构建现代应用…...
基于Java车间工时管理系统(源码+部署文档)
博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…...
2024.1.5
今天真是狂学了一天的C,什么期末考试,滚tmd(就一门政治,不能影响我c的脚步),今天还是指针,主要是函数指针和函数指针数组,将简单的两位数计算器程序用此方式更加简单的实现了&#x…...
水库大坝安全监测设计与施工经验
随着我国的科技水平不断上升,带动了我国的水电建设向更高层次发展。目前,我国的水电站大坝已有上百座,并且大坝安全检测仪器质量与先进技术不断更新发展,如今水电站大坝数据信息采集与观测资料分析,能够有效提高水库大…...
媒体捕捉-拍照
引言 在项目开发中,从媒体库中选择图片或使用相机拍摄图片是一个极为普遍的需求。通常,我们使用UIImagePickerController来实现单张图片选择或启动相机拍照。整个拍照过程由UIImagePickerController内部实现,无需我们关心细节,只…...
Typora+PicGo+Gitee构建云存储图片
创建Gitee仓库 首先,打开工作台 - Gitee.com,自行注册一个账户 注册完后,新建一个仓库(记得仓库要开源) 然后创建完仓库后,鼠标移动到右上角头像位置,选择设置,并点击ÿ…...
【话题】ChatGPT等大语言模型为什么没有智能2
我们接着上一次的讨论,继续探索大模型的存在的问题。正巧CSDN最近在搞文章活动,我们来看看大模型“幻觉”。当然,本文可能有很多我自己的“幻觉”,欢迎批评指正。如果这么说的话,其实很容易得出一个小结论——大模型如…...
通过大量生物、地球、农业、气象、生态、环境科学领域中案例,一起探索如何优雅地使用大模型吧!
以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...
spring boot使用HttpServletResponse实现sse后端流式输出消息
1.以前只是看过SSE的相关文章,没有具体实践,这次接入AI大模型使用到了流式输出,涉及到给前端流式返回,所以记录一下。 2.resp要设置为text/event-stream resp.setContentType("text/event-stream"); resp.setCharacter…...
