第八章 软件测试自动化
一、学习目的与要求
通过本章的学习,了解自动化测试应考虑的各种因素及如何衡量自动化测试成本,掌握自动化测试和手工测试的优缺点,能正确选择软件测试策略,了解测试工
具的分类和使用目的,熟悉常用的测试工具,了解自动化测试的过程。
二、考核知识点与考核目标
(一)自动化测试概述(一般)
- 理解:自动化测试的时机
并非一律用自动化测试就好,要考虑经济性、有效性,适当的进行自动化测试。
- 理解:自动化测试成本
创建一次自动化的测试所花费的时间要比一次手工测试所花费的时间多得多。测试成本因产品
的架构以及自动化测试的方式不同而异。由高到低
- 通过图形用户界面来测试产品;
- 使用GUI捕捉/回放工具来跟踪测试与产品之间的交互,同时建立脚本;
- 测试的是一个编译器;
- 理解:自动化测试生命周期 (创建测试——运行测试——代码改变——运行测试…——测试中止)
- 理解:自动化测试价值:自动化测试的价值必须要超过所有因此而放弃的手工测试的价值。
(二)自动化测试的特点(次重点)
- 理解:自动化测试与手工测试的比较:很多方面都有很大的不同,在执行测试和产生测试报告方面尤为突出
- 理解:自动化测试的优缺点
优点
- 对程序的新版本运行己有的测试,即回归测试。
- 可以运行更多更频繁的测试。
- 可以进行一些手工测试难以完成或不可能完成的测试。
- 充分地利用资源。
- 测试具有一致性和可重复性。
- 测试具有复用性。
- 缩短软件发布的时间。
- 增强软件的可靠性。
缺点
- 自动化测试不能取代手工测试,测试主要还是要靠人工的。
- 新缺陷越多,自动化测试失败的几率就越大。
- 工具本身不具有想象力
- 技术问题、组织问题、脚本维护
- 测试工具与其他软件的互操作性
(三)自动化测试工具的选择和使用(重点)
- 应用:自动化测试工具的选择和使用
目的:
- 提高测试质量;
- 减少测试过程中重复的手工劳动,提高测试效率;
- 实现测试自动化,充分利用测试资源。
分类:白盒测试工具、黑盒测试工具和测试管理工具三大类。
选择:
- 功能
1)报表功能;
2)自动化测试工具的集成能力;
3)操作系统和开发工具的兼容性;- 价格
- 对自动化测试工具进行评估。
- 引入自动化测试工具的目的是使测试自动化
应用:很多引入测试软件的公司并没有能够让测试软件发挥应有的作用,其原因主要有三个方面
- 没有考虑公司的实际情况,盲目引入自动化测试工具
- 没有形成一个良好的使用自动化测试工具的环境
- 没有进行有效的自动化测试工具的培训
(四)常见的自动化测试工具(次重点)
- 应用:JUnit
介绍:单元级的白盒测试工具
- 快速的编写程序
- 使用简单
- 检验测试结果并立即提供反馈
- 可以组成有层次的测试系统架构
- 开发测试成本低
- 提升软件稳定性
- 免费的
- 应用:C++Test
是C++单元测试工具
特性:
- 即时测试类/函数。
- 支持极端编程机模式下的代码测试。
- 自动建立类/函数的测试驱动程序和桩调用。
- 自动建立和执行类/函数的测试用例。
- 提供快速加入和执行说明和功能性测试的框架。
- 执行自动回归测试。
- 执行部件测试(COM)。
优点
- 帮助用户立即验证类功能性和构造。
- 将用户从编写测试驱动程序、桩和测试用例的繁重工作中解放出来。
- 自动化极端编程和其他编程模式的单元测试过程。
- 能够实现和执行100%的代码覆盖性。
- 支持紧急和短线开发项目。
- 降低调试和维护时间。
- 改善应用的可靠性。
- 防止简单错误的扩大。
- 应用:LoadRunner
介绍:LoadRunner是一种预测系统行为和性能的负载测试工具。通过模拟成千上万名用户和实施实时性能监测来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。其主要功能如下:
- 轻松创建虚拟用户
- 创建真实的负载
- 定位性能问题
- 分析结果精确定位问题所在
三、习题
- 自动化测试工具中,______是最难自动化的。
A. 测试执行
B. 实际输出与预期输出的比较
C. 测试用例生成
D. 测试录制与回放 - 下列()不是软件自动化测试的优点。
A.速度快、效率高
B.准确度和精确度高
C.能提高测试的质量
D.能充分测试软件 - 使用软件测试工具的目的不包括______。
A. 帮助测试寻找问题
B. 协助问题的诊断
C. 节省测试时间
D. 提高设计质量 - 简述软件测试自动化的意义。
- 提高测试效率;
- 降低对软件新版本进行回归测试的开销;
- 完成手工测试不能或难以完成的测试;
- 具有一致性和可重复性;
- 更好地利用资源;
- 降低风险,增加软件信任度。
- 在运用软件自动化测试时,应注意哪些缺点和事项?
- 软件自动化测试可能降低测试的效率;
- 测试首次运行时,可能发现大量错误,但当进行过多次测试后,发现错误的机率会相对较小,除非对软件进行了修改或在不同的环境下运行;
- 如果缺乏测试经验,测试的组织差、文档少或不一致,则自动化测试的效果比较差;
- 技术问题。作为第三方的技术产品,如果不具备解决问题的能力和技术支持或者产品适应环境变化的能力不强,将使得软件自动化工具的作用大大降低。
- 请解释LoadRunner下最大并发用户数、业务操作响应时间、服务器资源监控指标的含义与用途。
- 最大并发用户数是指应用系统在当前环境下能承受的最大并发的用户数。用来考察某系统的最大负载;在LoadRunner“事务性能摘要”图中可以获得业务操作的响应时间最大值、最小值和平均值,重点用于确定在方案执行期间响应时间过长的事务;
- 服务器资源监控指标包括内存和处理器。
- 内存:Linux资源监控中指标内存页交换速率(Paging rate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。也可能是内存访问命中率低。实际测试中,当并发点击数出现突然剧增前后,内存的PR值则居高25不下。说明目前测试的系统中内存存在瓶颈!
- 处理器:Linux资源监控中指标CPU占用率持续超过80%(对该值的要求,根据具体应用和机器配置而要求不同,有资料表明95%),表明瓶颈是CPU。实际测试中,当并发点击数出现突然增加前后,CPU的占用率持续保持在86%以上!
- 简述Junit的优点
- 提升程序代码质量的同时,能加快编程速度;
- 使用简单而且免费、开发测试成本低;
- 能够检验测试结果并立即提供反馈;
- 可以组织成一个有层次的测试系列框架;
- 使用Java语言开发;
- 提升软件的稳定性。
- 软件自动化测试的优点是
A速度快
B精确度高
C质量高
D能充分测试软件
E效率高 - 简述应用自动化测试工具的目的。
- 提高测试质量
- 减少测试过程中重复的手工劳动,提高测试效率;
- 实现测试自动化,充分利用测试资源
- 简述自动化测试的优点
- 对程序的新版本运行回归测试
- 可以运行更多更频繁的测试
- 可以进行一些手工测试难以完成或不可能完成的测试;
- 充分地利用资源;
- 测试具有一致性和可重复性;
- 增强软件可靠性,缩短软件发布时间
相关文章:
第八章 软件测试自动化
一、学习目的与要求 通过本章的学习,了解自动化测试应考虑的各种因素及如何衡量自动化测试成本,掌握自动化测试和手工测试的优缺点,能正确选择软件测试策略,了解测试工 具的分类和使用目的,熟悉常用的测试工具…...
科大讯飞勾勒生成式AI输入法“模样”,开启下一代输入法革命
回顾国内第三方输入法赛道近十余年的发展,移动互联网的市场红利催生了科大讯飞、百度、搜狗等颇具规模和实力的头部厂商。与此同时,历经多年、多方角逐,第三方输入法市场进入存量阶段,升级技术、优化用户体验来挖掘存量࿰…...
OV-VG: A Benchmark for Open-Vocabulary Visual Grounding
OV-VG: A Benchmark for Open-Vocabulary Visual Grounding 一、Abstract 写在前面 又是一周周末,光调代码去了,都没时间看论文了,汗。 这是一篇关于开放词汇定位的文章,也是近两年的新坑,但是资源也是需要不少。 …...
win10 javaweb 项目8080端口被占用
文章目录 前言出现场景:解决思路: 前言 提示:生活该走向何处?也许你还不知道答案,但是你一定是答案的一部分。 出现场景: 解决思路: 找到运行的进程直接干掉 打开命令窗口(win r…...
C语言每日一题(22)合并两个有序数组
力扣网 88. 合并两个有序数组 题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意…...
C++学习day--24 推箱子游戏图像化开发
环境要求: 1、VS2015以上 2、成功安装并配置图形库 项目注意事项:代码复制好以后,把下面的字符集改为多字节字符集 第 1 节 项目需求 实现一款推箱子游戏,效果如下图所示 , 具体规则: 1. 箱子只能推动而不能拉动…...
YOLOv8中的After Fuse指的是什么?
Fuse是指模型的一些模块进行融合。常见的就是conv和bn层进行融合,在训练的时候模型是存在conv和bn的,但在推理的过程中,模型在初始化的时候会进行模型fuse,把其中的conv和bn进行融合,通过一些数学转换把bn层融合到conv里面,还有一些例如DBB,RepVGG等等模块支持融合的这些在fuse…...
R-FCN: Object Detection via Region-based Fully Convolutional Networks(2016.6)
文章目录 AbstractIntroduction当前最先进目标检测存在的问题针对上述问题,我们提出... Our approachOverviewBackbone architecturePosition-sensitive score maps & Position-sensitive RoI pooling Related WorkExperimentsConclusion 原文链接 源代码 Abstr…...
Linux服务器部署Spring Boot项目的一些shell命令脚本
1.启动jar包的命令(根据jar包数量创建,并指定相对应的jar包) nohup java -server -Xms64m -Xmx128m -jar 项目jar包的名称.jar --spring.profiles.activeprod > 记录jar包的日志.log 2>&1 &可以写在start.sh文件里(…...
Youtube DNN:Deep Neural Networks for YouTube Recommendations
1.介绍 本文主要解决的三个挑战: 大规模的推荐场景,能够支持分布式训练和提供有效率的服务。不断更新的新物料。稀疏的用户行为,包含大量的噪声。 2.推荐系统 文章包含推荐系统的两阶段模型:召回和排序。 召回网络根据用户的历…...
Python 入门基础知识点有哪些?
Python是一种高级的、解释性的、面向对象的、动态类型语言,它在机器学习、数据分析、Web开发、科学计算等领域都有广泛的应用。下面是Python入门基础知识点的详细介绍。 1、变量和数据类型 在Python中,可以使用变量来存储数据。Python的数据类型包括整…...
【每日一题】补档 CF487B. Strip | 数据结构杂烩 -> 单调队列 | 困难
题目内容 原题链接 给定一个长度为 n n n 的数组,将这个数组进行拆分成若干个连续子数组, 使得每个子数组的最大值减去最小值小于等于 s s s , 且每个子数组的长度大于等于 l e n len len 。 问最少可以拆分成多少个连续子数组࿰…...
向量数据库和普通关系型数据库的区别,LAXCUS支持哪种数据库?
这是一位Laxcus用户在后台的提问,贴出来供大家参考: 1. 向量数据库与传统的关系型数据库主要有以下几个区别: 数据类型:向量数据库专门用于存储和查询向量数据,而传统数据库可以存储各种类型的数据,如文本…...
操作系统 --- 存储器管理
一、简答题 1.存储器管理的基本任务,是为多道程序的并发执行提供良好的存储器环境。请问好的存储器环境”应包含哪几个方面? 答: 2.内存保护是否可以完全由软件实现?为什么? 答:内存保护的主要任务是确保每…...
Python selenium无界面headless
视频版教程:一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium Chrome-headless 模式, Google 针对 Chrome 浏览器 59版 新增加的一种模式,可以让你不打开UI界面的情况下使用 Chrome 浏览器,所以运行效果与 …...
JavaScript 中的负无穷大是什么?
在 JavaScript 中,负无穷大表示为 -Infinity。它是一个特殊的数值,用于表示比任何实数都要小的值。 负无穷大用于表示超出数值范围的情况,例如在进行数学计算时发生了溢出或出现了无法表示的结果。它可以通过将负无穷大赋值给变量或通过某些…...
2023年十大地推和网推拉新app推广接单平台,一手单渠道
做地推最重要的一定是找好项目,找好项目最关键的一定是地推app接任务平台,所以这十大靠谱的地推拉新接单平台,都是我们精心筛选的,2023年从事地推和网推拉新作业。 1:聚量推客 “聚量推客”汇聚了众多市场上有的和没有…...
mybatis-plus的进阶使用
文章目录 自定义xml的sql脚本配置mybaits的全局配置文件mybatis-plus优化,指定select数据库乐观锁mybatis-plus实现数据库乐观锁mybatis-plus实现逻辑删除 自定义xml的sql脚本 这里的使用和mybatis一样 编写mapper.xml文件 <?xml version"1.0" enc…...
centos安装vim编辑器
第一步检查centos的vim编辑器包是否完整 rpm -qa|grep vim //查看Vim编辑器需要安装的四个包是否完整 第二步:一般安装vim编辑器需要一下四个安装包,缺失了之后可对应下载 vim-minimal-7.4.160-2.el7.x86_64vim-common-7.4.160-4.el7.x86_64 v…...
PostgreSQL InvalidMessage Cache 同步机制
文章目录 背景InvalidMessages 基本类型InvalidMessages 数据结构概览共享内存 的 "ring-buffer" 结构Backend 本地的 InvalidMessages管理SharedInvalCatalogMsgSharedInvalCatcacheMsgSharedInvalRelcacheMsgSharedInvalSnapshotMsgSharedInvalSmgrMsgSharedInvalR…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
