当前位置: 首页 > news >正文

软件测试基础(自动化测试、性能测试)

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快     

自动化测试的意义

缩短软件开发测试周期,可以让产品更快投放市场

测试效率高,充分利用硬件资源

节省人力资源,降低测试成本

增强测试的稳定性和可靠性

提高软件测试的准确度和精确度,增加软件信任度

软件测试工具使测试工作相对比较容易,但能产生更高质量的测试结果

自动化测试应用场景分析

首先要考虑的是什么样的项目适合自动化?

决定项目是否采用自动化测试,通常要关注以下几个方面:

需求变更有计划性,并且频率不高

项目周期长,资源丰富

脚本重复利用率

代码规范

考虑了什么样的项目可以使用自动化,接下来我们要了解的就是在一个项目中,我们也要区分哪些部分适合自动化

某种普遍存在的观点:认为自动化测试更适合做回归测试和API测试,手工测试更适合做验收测试和GUI测试

正确的观点:什么区分了手工测试和自动化测试,实际上与API还是GUI,回归还是功能都没有关系,应该从代码是业务逻辑相关还是基础性代码出发。

业务逻辑代码对应终端用户使用的那些功能,是实际完成工作的

基础性代码则确保业务逻辑代码运行在合适的环境中起支撑作用而彼此之间相对独立,并不存在业务关系的

很明显,两种代码都要测试。手工测试更适合测业务逻辑,因为这部分人类学习起来要比交给自动化容易。

自动化测试工具

QTP

QTP是一个侧重于功能的回归自动化测试工具,提供了很多插件

QTP支持的脚本语言是VBScript

QTP的高可用性:

支持录制和回放

支持 lower level 模式

QTP 的编辑器支持两种视图:Keyword模式和 Expert模式

Selenium

Selenium是开源的自动化测试工具,但是仅支持web页面的测试

Selenium的录制回放成功率非常低

熟悉Java、python的人喜欢Selenium

UFT

UFT是QTP的新名字,叫统一功能测试框架,新的功能如下:

insight智能图像识别

多脚本调试

PDF文本验证点

支持开源CI

支持移动设备

RFT

RFT是IBM的一款适合于功能测试、回归测试的自动化测试工具

针对与Java、.net的对象技术和基于web应用程序的录制与回放

因为录制与回放功能对于程序运行的环境依赖性太大,因此更多使用该工具的测试团队采用了自己手动写脚本的方式来提高脚本的易读性以及可维护性

但是因为帮助文档和教程很少很不系统,环境要求比较高,参数化只支持xml格式文件来存储测试数据,回放速度很慢,所以传播和使用范围不大。

WINRUNNER

老一代的自动化测试框架

只支持c语言的模式阻碍了它自身的拓展性

Sikuli

创新的图形化编程技术

以图像检索技术为基础,提供了一套基于Jython(python在Java中的完整实现)的脚本语言以及集成开发环境

使用者可利用屏幕截图直接引用GUI 元素进行编程,完成交互操作

自动化测试工具选择

开源免费

使用灵活、简单

后期用例易于维护

支持多种语言

容易与单元测试框架结合

可支持多浏览器同时,支持远程启动其他服务器

高度复用性

代码可自主掌控,对于搭建框架、平台等有不可替代的优势

性能测试

性能测试概念

软件系统的性能测试是一个很大的概念,覆盖面非常广泛

对软件系统而言,包括执行效率、资源占用、系统稳定性、安全性、兼容性、可靠性、可拓展性等

性能测试是描述测试对象与性能相关的特征并对其进行评价而实施和执行的一类测试

主要通过自动化等测试工具模拟多种正常、峰值以及异常负载条件下来对系统的各项性能指标进行测试

性能测试的核心活动

确定测试环境

物理环境、生产环境、测试团队可利用的工具和资源

确定性能验收标准

确定响应时间、吞吐量、资料利用总目标和限制

计划和设计测试

确定关键场景

确定典型用户的可变性,以及如何模拟这些变化

确定测试数据

确定需要收集的度量值

配置测试环境

确保测试环境已经配置妥当,可以进行资源监控

实现测试设计

根据测试设计逐步展开性能测试

执行测试

执行和监控测试

保证测试、测试数据以及结果收集有效

监控测试和测试环境,确保进行有效的测试以保障结果分析的正确性

分析结果、报告以及重复测试

性能测试目标

评估软件发布准备

评估基础结构是否恰当

评估已开发软件的性能是否满足要求

提高性能调整效率

性能测试的种类

负载测试

压力测试

容量测试

配置测试

并发测试

可靠性测试

稳定性测试

负载测试和压力测试

负载测试

侧重于确定当前测试中的系统或者应用软件在工作负载条件下,或者在实际运行阶段加载预期的容量时,系统或者应用软件所具备的相关性能特性

通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标下,系统所能承受的最大负载量

负载测试是通过逐步加压的方式来确定系统的处理能力,确定系统能够承受的各项阀值

压力测试

确定当系统或者应用软件在某些超过实际运行阶段所预期的条件下时所具备的性能特性

通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并获得系统能提供最大的服务基本

压力测试时逐步增加负载,使系统某些资源达到饱和甚至失效的测试

LoadRunner介绍

LoadRunner是一种适用于介绍各种体系架构的负载测试工具,它能预测系统行为并优化系统性能

LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户操作行为和实行实时性能检测,来更快的查找和发现问题

LoadRunner主要特点

广泛支持业界标准协议

支持多种平台开发的脚本

创建真实的系统负载

强大的实时监控与数据采集功能

精确分析结果,定位问题所在

LoadRunner工具组成

虚拟用户脚本生成器

压力产生器

用户代理

压力调度

监控系统

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

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

相关文章:

软件测试基础(自动化测试、性能测试)

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 自动化测试的意义 缩短软件开发测试周期,可以让产品更快投放市场 测试效率高,充分利用硬件资源 节省人力资源,降低测试…...

C++中的原子操作:原子性、内存顺序、性能优化与原子变量赋值

一、原子操作与原子性 原子操作(atomic operation)是并发编程中的一个核心概念,指的是在多线程环境中,一个操作一旦开始,就不会被其他线程的操作打断,直至该操作完成。这种不可分割的特性保证了操作的原子…...

游戏引擎学习第19天

介绍 这段内容描述了开发者在进行游戏开发时,对于音频同步和平台层的理解和调整的过程。以下是更详细的复述: 开发者表达了他希望今天继续进行的工作内容。他提到,昨天他讲解了一些关于音频的内容,今天他想稍微深入讲解一下他正…...

RocketMQ: 专业术语以及相关问题解决

概述 要了解 RocketMQ 的多个关键特性的实现原理,并对消息中间件遇到的各种问题进行解决我们引用 JMS 规范 与 CORBA Notification 规范,规范为我们设计系统指明了方向但是仍有不少问题规范没有提及,对于消息中间件又至关重要RocketMQ 并不遵…...

C++ 类和对象中的 拷贝构造 和 运算符重载

构造函数中可以添加参数并添加默认值构成缺省构造,如果我们在构造函数的参数中加上自身类型类的引用和其他给出默认值的参数则会构成一种特殊的构造函数叫做———拷贝构造函数 1.拷贝构造 拷贝构造的特点: 1.拷贝构造函数是构造函数的一个重载 2.拷…...

el-table最大高度无法滚动

解决el-table同时使用fixed和计算的最大高度时固定右边的列无法跟随滚动的问题 原因:el-table组件会根据传入的 max-height 计算表格内容部分 和 fixed部分的最大高度,以此来生成滚动条和产生滚动效果,当传入的 max-height 为一个计算的高度…...

Vscode写markdown快速插入python代码

如图当我按下快捷键CRTLSHIFTK 自动出现python代码片段 配置方法shortcuts’ 打开这个json文件 输入 {"key": "ctrlshiftk","command": "editor.action.insertSnippet","when": "editorTextFocus","args&…...

基于 NCD 与优化函数结合的非线性优化 PID 控制

基于 NCD 与优化函数结合的非线性优化 PID 控制 1. 引言 NCD(Normalized Coprime Factorization Distance)优化是一种用于非线性系统的先进控制方法。通过将 NCD 指标与优化算法结合,可以在动态调整控制参数的同时优化控制器性能。此方法特别…...

【数据分析】基于GEE实现大津算法提取洞庭湖流域水体

大津算法提取水体 1.写在前面2.洞庭湖水体识别1.写在前面 最大类间方差法,也称为Otsu或大津法,是一种高效的图像二值化算法,由日本学者Otsu于1979年提出。该算法基于图像的频率分布直方图,假设图像包含两类像素(前景和背景),并计算出一个最佳阈值,以最大化类间方差,从…...

计算机网络安全 —— 报文摘要算法 MD5

一、报文摘要算法基本概念 ​ 使用加密通常可达到报文鉴别的目的,因为伪造的报文解密后一般不能得到可理解的内容。但简单采用这种方法,计算机很难自动识别报文是否被篡改。另外,对于不需要保密而只需要报文鉴别的网络应用,对整个…...

LeetCode 746. 使用最小花费爬楼梯 java题解

https://leetcode.cn/problems/min-cost-climbing-stairs/description/ 优化:可以不用dp数组,用变量,节省空间。 class Solution {public int minCostClimbingStairs(int[] cost) {int lencost.length;int[] dpnew int[len1];dp[0]0;//爬到0…...

Kubernetes的pod控制器

文章目录 一,什么是pod控制器二,pod控制器类型(重点)1.ReplicaSet2.Deployment3.DaemonSet4.StatefulSet5.Job6.Cronjob 三,pod与控制器的关系1.Deployment2.SatefulSet2.1StatefulSet组成2.2headless的由来2.3有状态服…...

ArcMap 处理栅格数据地形图配准操作

ArcMap 处理栅格数据地形图配准操作今天分享 一、地形图配准 1、绘图 点击 开始绘制,四条线 2、地理配准 1)点击弹出 2)画控制点 关闭自动校正 画线 从焦点向外划线,然后邮件输入坐标弹出框,填写相应内容&#xff0c…...

comprehension

1.读题---猜---文章主题 只读题目,不读选项 2.文章--定位 3.用文章对应选项 1 be based on be dependent upon 2 fruitful adj.富有成效的;硕果累累的; 3 unfruitful adj.徒然的,无益的,没有结果的 4 desperately adv.拼命地&#x…...

开源宝藏:Smart-Admin 重复提交防护的 AOP 切面实现详解

首先,说下重复提交问题,基本上解决方案,核心都是根据URL、参数、token等,有一个唯一值检验是否重复提交。 而下面这个是根据用户id,唯一值进行判定,使用两种缓存方式,redis和caffeine&#xff…...

使用 npm 安装 Electron 作为开发依赖

好的,下面是一个使用 npm pack 和 npm install 命令来打包和安装离线版本的 npm 包的具体示例。我们将以 electron 为例,演示如何在有网络连接的机器上打包 electron,然后在没有网络连接的机器上安装它。 步骤 1: 在有网络连接的机器上打包 …...

JavaWeb之综合案例

前言 这一节讲一个案例 1. 环境搭建 然后就是把这些数据全部用到sql语句中执行 2.查询所有-后台&前台 我们先写后台代码 2.1 后台 2.2 Dao BrandMapper: 注意因为数据库里面的名称是下划线分割的,我们类里面是驼峰的,所以要映射 …...

MySQL 报错:1137 - Can‘t reopen table

MySQL 报错&#xff1a;1137 - Can’t reopen table 1. 问题 对临时表查询&#xff1a; select a.ts_code,a.tsnum,b.tsnum from (select t.ts_code ,count(*) tsnum from tmp_table t group by t.ts_code having count(*) > 20 and count(*)< 50 ) a ,(select t.ts_…...

Claude3.5-Sonnet和GPT-4o怎么选(附使用链接)

随着人工智能模型的不断进化&#xff0c;传统的评估标准已经逐渐变得陈旧和不再适用。以经典的“喝水测试”为例&#xff0c;过去广泛应用于检测模型能力&#xff0c;但现如今即便是国内的一些先进模型&#xff0c;也能够轻松答对这些简单的问题。因此&#xff0c;我们亟需引入…...

使用itextpdf进行pdf模版填充中文文本时部分字不显示问题

在网上找了很多种办法 都解决不了; 最后发现是文本域字体设置出了问题; 在这不展示其他的代码 只展示重要代码; 1 引入扩展包 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</v…...

java-贪心算法

1. 霍夫曼编码&#xff08;Huffman Coding&#xff09; 描述&#xff1a; 霍夫曼编码是一种使用变长编码表对数据进行编码的算法&#xff0c;由David A. Huffman在1952年发明。它是一种贪心算法&#xff0c;用于数据压缩。霍夫曼编码通过构建一个二叉树&#xff08;霍夫曼树&a…...

OpenCV和Qt坐标系不一致问题

“ OpenCV和QT坐标系导致绘图精度下降问题。” OpenCV和Qt常用的坐标系都是笛卡尔坐标系&#xff0c;但是细微处有些不同。 01 — OpenCV坐标系 OpenCV是图像处理库&#xff0c;是以图像像素为一个坐标位置&#xff0c;即一个像素对应一个坐标&#xff0c;所以其坐标系也叫图像…...

前端VUE项目启动方式

将VUE项目的前端项目运行起来&#xff0c;整个过程非常简单&#xff0c;预计5分钟就可以完成&#xff0c;取决于大家的网速。 项目运行先安装Node.js Windows 安装 Node.js 指南&#xff1a;http://www.iocoder.cn/NodeJS/windows-install(opens new window) Mac 安装 Node.js…...

Python小白学习教程从入门到入坑------习题课5(基础巩固)

目录 实战题 1、“千年虫”是什么虫? 2、模拟京东购物流程 3、模拟12306火车票订票流程 4、模拟手机通讯录 实战题 1、“千年虫”是什么虫? 要求:已知一个列表中存储的是员工的出生年份 [88,89,90,98,00,99] 由于时间比较久&#xff0c;出生的年份均为2位整数&#xf…...

飞凌嵌入式T113-i开发板RISC-V核的实时应用方案

随着市场对嵌入式设备的功能需求越来越高&#xff0c;集成了嵌入式处理器和实时处理器的主控方案日益增多&#xff0c;以便更好地平衡性能与效率——实时核负责高实时性任务&#xff0c;A核处理复杂任务&#xff0c;两核间需实时交换数据。然而在数据传输方面&#xff0c;传统串…...

基于Java后台实现百度、高德和WGS84坐标的转换实战

目录 前言 一、需求的缘由 1、百度坐标拾取 2、高德坐标拾取 3、不同地图的坐标展示 二、后端坐标偏移转换处理 1、相关类库介绍 2、coordtransorm类图介绍 3、后台实际转换 三、总结 前言 在当今数字化时代&#xff0c;地理位置信息的精确性和实时性对于各种应用至…...

SQL,力扣题目1635,Hopper 公司查询 I

一、力扣链接 LeetCode_1635 二、题目描述 表: Drivers ---------------------- | Column Name | Type | ---------------------- | driver_id | int | | join_date | date | ---------------------- driver_id 是该表的主键(具有唯一值的列)。 该表的每一行…...

Android 分区相关介绍

目录 一、MTK平台 1、MTK平台分区表配置 2、MTK平台刷机配置表 3、MTK平台分区表配置不生效 4、Super分区的研究 1&#xff09;Super partition layout 2&#xff09;Block device table 二、高通平台 三、展锐平台 四、相关案例 1、Super分区不够导致编译报错 经验…...

JMeter监听器与压测监控之 InfluxDB

1. 简介 在本文中&#xff0c;我们将介绍如何在 Kali Linux 上通过 Docker 安装 InfluxDB&#xff0c;并使用 JMeter 对其进行性能监控。InfluxDB 是一个高性能的时序数据库&#xff0c;而 JMeter 是一个开源的性能测试工具&#xff0c;可以用于对各种服务进行负载测试和性能监…...

信息安全管理与评估赛项(网络安全)--应急响应专项训练

web1 题目来源&#xff1a;https://mp.weixin.qq.com/s/89IS3jPePjBHFKPXnGmKfA 题目 1.攻击者的shell密码2.攻击者的IP地址3.攻击者的隐藏账户名称4.攻击者挖矿程序的矿池域名(仅域名)5.有实力的可以尝试着修复漏洞靶机 用户:administrator密码:Zgsfadmin.com题解 攻击者…...