青岛广久网络技术有限公司/百度seo排名教程
测试用例的概念
比如我们买回来了一个新电视,要进行测试:
然而这只是根据生活经验来得出的测试用例,在软件测试中,我们不可能仅凭现场想到的测试用例来完成一次完整的测试。
笔试的时候编写测试用例的题目,需要按照excel表格的方式来答题。(会涉及测试用例的要素)
示例:
而面试的时候回答测试用例,用思维导图的方式一一道来即可。(不会涉及测试用例的要素)
示例:
设计测试用例的万能公式
首先设计测试用例的时候,需要具备以下的思路:
常规思考: 比如用正确的账号和密码进行登录。
逆向思维:故意使用错误的账号和密码进行登录,或者使用正确的账号或者错误的密码来登录。
发散性思维:比如账号故意使用字符串,或者考虑到SQL注入攻击等等。
这是我们设计测试用例的一个前提思路,但是当我们面对面试官的时候,能想出来的测试用例还是有限的,我们可以通过一个万能公式帮我们去引导。
测试用例的万能公式:功能测试 + 界面测试 + 性能测试 + 兼容性测试 + 易用性测试 + 安全性测试
功能测试:从产品功能角度出发,验证功能是否正确。
界面测试:肉眼可看到的地方都称为界面,比如形状,大小,颜色,有些还有材质等。
性能测试:通常举一些极端性的例子,比如高温,低温,潮湿环境等等。
兼容性测试:比如不同的系统,浏览器等等。
易用性测试:具备简单易上手的属性。
安全性测试:是否具备危险材质,化学气体;再比如登录界面,接口响应是否考虑到用户的数据安全性,还有SQL注入,越权等问题。
以水杯的测试用例,用万能公式进行引导如下:
另外除了万能的测试公式外,还有两个常用的测试类型:弱网测试 和 安装和卸载测试
关于弱网测试
也就是模拟用户在网络条件差的情况下,软件运行是否依旧符合预期。
我们可以用filddler这个抓包软件来模拟弱网环境。
打开filddler后,先打开弱网设置的脚本:
找到
其中request-trickle-delay表示的就是上行速率,也就是我们传给服务器的速率,下面的就表示的是下行速率。这里的300表示的是传输1kb需要300ms。
我们可以将其改为较大的值后保存退出
在这里将Simulate Modem Speeds打开。
然后再打开一个网页,就会发现明显加载速度就慢多了。
所以我们可以借助抓包工具来进行弱网测试。
关于安装和卸载测试
针对需要进⾏部署的软件,除了软件功能外,我们还需要关注软件的能够成功安装和卸载。
设计测试用例的方法
基于需求的设计方法
这里回顾一下测试和开发工作的展开依据:
以该注册邮箱账号需求为例,我们来设计测试⽤例。
这里依然还可以套用之前的万能公式进行举例:
不过关于兼容性这里,还补充一个数据兼容性,比如:
总结:
基于需求的测试方法大致分为以下几步:
1.明确需求功能点:账号注册,账号登录
2.结合万能公式的测试点:
具体的设计方法
这里又包括很多设计方法。
等价类
比如:账号的长度范围是 6 ~ 15,并且是闭区间 [6,15]。那么对于测试用例7 8 9 ...15其实是等价类。
其中,等价类又分类两类:
有效等价类:
无效等价类:
根据需求说明书,不满⾜需求的集合。
缺点:等价类只考虑输⼊域的分类,没有考虑输⼊域的组合,需要其他的设计⽅法和补充。
边界值
边界值包含:边界值+次边界值
先看示例:
边界值就是给定返回的左数据和右数据。
而选额次边界值的时候,需要根据边界值的有效无效情况来定。
正交法
假设我们有n个选项,那么枚举所有的组合就是 2 ^ n。
假设现在有5个选项,姓名、电⼦邮箱、密码、确认密码、验证码,那么排列组合设计出来的用例数量就是32个。
正交法的⽬的是为了减少⽤例数⽬。⽤尽量少的⽤例覆盖输⼊的两两组合。
正交表的示例:
它表示需作9次实验,最多可观察4个因素,每个因素均为3水平。
这里的水平举个例子,在填写邮箱那里,我们可以选择填写和填写,那么我们就可以假设填写表示1,不填写表示0,那么就一共是两个水平。
这就是一个 L9(3 ^ 4) 的一个正交表。
关于正交表的性质:
还是对于刚刚那个注册登录的测试,如果我们用排列组合的方式测试,那么需要测试32次,如果用设计正交表的方式,那么测试的数量会更少,同时还能保证高的覆盖率。
但是对于我们一个普通人来说,很难手动设计正交表。
一般通过allparis工具来帮助我们生成。
正交法设计测试用例的步骤:
1.找到因素和水平。
2.用allparis生成正交表:
a.将因素和水平写入⼊Excel表格中。
(这里建议使用Excel,因为allpairs对文本的格式要求很严格,WPS也行,因为我没钱,所以这里用WPS演示了)
如上图,我将因素 和水平都写在表格里了,然后将其复制,粘贴到paris的文件夹里的一个txt文件中,记得保存
然后通过cmd打开Windows的命令行,进入到这个目录中
然后这样运行:这里的目标文件可以不用预先创建,并且建议不要预先创建,因为如果里面有数据的话会干扰结果。执行完命令后,如果什么提示都没有,则表示执行成功了。这里文件名的后缀必须是.txt。
可以看到,它这里就帮我们生成好一个正交表了。
一个是6个实验,也就是说,原来需要32个测试,现在只需要6个了。另外,这个~填写和~不填写表示的意思是:任意选择一个。
不过我们仔细观察一下这个正交表,发现它其实并没有严格遵守正交表的性质 :
另外,虽说是6个测试用例,但是我们还需要对齐进行补全:
之前学了边界值的测试方法,我们发现,这里有全部填写的测试情况,但是并没有全部不填写的情况,这种情况需要我们自行进行补全。
判定表法
判定表是⼀种表达逻辑判断的⼯具,形如:
根据判定表法设计测试用例的步骤:
1.确认需求中的输入和输出条件。
2.找出输入条件和输出条件之间的关系。
3.画判定表
4.根据判定表编写测试用例。
场景法
之前不是也介绍过基于需求的设计方法吗?同样对于登录注册的场景,也可以用场景法:
总结:
确认基本流和备用流后,编写测试用例:
另外我们要注意一个易错的地方,比如有这么一个场景:
假设现在是5月中旬,现在公司的这个产品有一个活动,那就是在5月会发放一个10块的优惠券,但是每个月的活动是不一样的,比如6月的优惠力度减小,变成5块了。那么对于这个需求的变更,我们需要今天测试,然后明天上线,那么对于这样的代码: 这样一改,乍一看没毛病,但是我们发现明明还在5月,但是5月的活动没了,这显然是不合理的。因此,新增加的代码应该对旧代码没有影响。
错误猜测法
举例:
密码:是否加密,是否具备安全性。
获取用户输入:是否存在SQL注入的情况。
软件存在多个版本:那么多个版本都要测试。
关于测试一个项目的技巧(比如博客系统项目的测试)
更多的用例测试
命令行测试
比如对一个zip命令进行测试。
那么我们可以直接套用万能公式:
6)其他参数的测试
接口测试
对一个网站,它有很多的请求方法,我们用开发者界面是无法进行接口测试的,我们可以用postman这个工具来帮助我们进行接口测试。
对于一个web程序,我们有以下的测试点:
不同的请求⽅式:1.以GET⽅式请求接⼝是否可以返回预期的响应数据2.以POST⽅式请求接⼝是否可以返回数据参数组合(如果接⼝需要拼参数的情况下):1.空参数2.多参数3.少参数4.参数对应的值为空/过⻓/特殊字符....不同的参数格式:1.url拼参2.form-data格式3.raw格式等等接⼝性能:1.⼀千万个请求同时发起,是否能够返回响应2.并发情况下响应时间是否在⼤众接受范围内
以B站为例:
不过要先打开发者工具:
接着进入postman,然后我们可以先直接复制B站首页的域名,然后用postman简单的请求一次
这里可以看到我们用的是get方法,显示的结果也是B站的首页
如果将请求方法改为Post
很明显,B站就简短的回复了 方法不被允许。
测试完了get和post,我们还可以测试对请求参数的拼接:
另外我们还可以导入curl,postman会为我们生成一个一模一样的请求
最后再以CSDN为例,就以我的文章管理中心: 比如这个就是用的POST的方法。
复制curl的方法:
直接对着比如上面的logs右键,然后选择复制--复制为cURL(bash)。 然后在postman中导入
点击continue后:
再导入即可: 这样就将刚刚的cURL导入进来了。
其中在Headers里面有很多报头信息:
再找一些其它的,比如这个带了Cookie:
那我们就还可以验证这个网站是否对Cookie进行了身份校验,在postman中导入cURL后
此时我们就发现这里是带了Cookie信息的,我们先勾选上试试:
然后进行请求:
响应中说明是没问题的。
此时我们将Cookie去掉后:
发现就不行了,它提醒我们需要登录后再操作。
相关文章:

测试用例的设计
测试用例的概念 什么是测试⽤例? 测试⽤例(Test Case)是为了实施测试⽽向被测试的系统提供的⼀组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。 比如我们买回来了一个新电视,要进行测…...

代码随想录训练营Day20 | 93.复原IP地址 - 78.子集 - 90.子集II
93.复原IP地址 题目链接:93.复原IP地址思路: 做法和分割回文字符串那题类似,是对字符串进行切割;本题需要多几个条件,就是每次回溯字符串的长度最多三位,字符串对应的数值必须 在[0, 255]之间,…...

[Meachines] [Medium] MonitorsThree SQLI+Cacti-CMS-RCE+Duplicati权限提升
信息收集 IP AddressOpening Ports10.10.11.30TCP:22,80 $ nmap -p- 10.10.11.30 --min-rate 1000 -sC -sV -Pn PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0) | …...

Elasticsearch专栏-4.es基本用法-查询api
es基本用法-查询api 说明查询所有某一字段匹配查询多字段查询bool查询范围查询精确查询正则匹配模糊查询结果处理 说明 es对数据的检索,总结下来就是两部分,即查询和处理。查询指的是查找符合条件的数据,包括查询所有、匹配查询、布尔查询、…...

jmeter基础04_设置外观和字体
1、设置外观 默认跟随系统风格,你可以试一试选择自己喜欢的风格。(浅色模式/深色模式…) 操作:菜单栏“选项” - “外观”,选择外观风格。 2、放缩显示比例(重启后复原) “选项” - “放大/缩小…...

重构代码之替换参数为显式方法
替换参数为显式方法 是一种重构技术,旨在通过替换方法参数来创建更清晰、更具可读性的代码。当一个方法包含标志性参数时,该方法的行为可能会根据参数的不同而发生改变。这样会导致方法的调用方式不够明确,因为调用者不一定能直观地知道每个参…...

三菱QD77MS定位模块速度限制功能
“速度限制功能”是控制中的指令速度超过“速度限制值”的情况下,将指令速度限制在“速度限制值”的设置范围内的功能。 [1]速度限制功能与各控制的关系 速度限制功能”与各控制的关系如下所示。 [3]速度限制功能的设置方法 使用“速度限制功能”时,在如…...

Axure PR 9 多级下拉选择器 设计交互
大家好,我是大明同学。 Axure选择器是一种在交互设计中常用的组件,这期内容,我们来探讨Axure中多级下拉选择器设计与交互技巧。 下拉列表选择输入框元件 创建选择输入框所需的元件 1.在元件库中拖出一个矩形元件。 2.选中矩形元件&…...

Java基础使用②Java数据变量和类型+小知识点
目录 1. Java小知识点 1.1 Java注释 1.2 Java标识符命名 1.3 Java关键字 2. 字面常量和数据变量 2.1 字面常量 2.2 数据类型 3.变量 3.1 变量概念 3.2 语法格式 3.3 整型变量 3.4 浮点型变量 3.5 字符型变量 3.6 布尔型变量 3.7 类型转换 3.8 类型提升 4. 字符…...

从 HTTP 到 HTTPS 再到 HSTS:网站安全的演变与实践
近年来,随着域名劫持、信息泄漏等网络安全事件的频繁发生,网站安全变得越来越重要。这促使网络传输协议从 HTTP 发展到 HTTPS,再到 HSTS。本文将详细介绍这些协议的演变过程及其在实际应用中的重要性。 一、HTTP 协议 1.1 HTTP 简介 HTTP&…...

Qt的跨平台介绍
在实际开发中,Ubuntu 使用 Qt 编译并跨平台到 Windows 的场景并不算特别常见,但在一些特定情况下是非常有用的,尤其是在开发需要支持多个平台的跨平台应用时。这种方式的应用主要体现在以下几个方面: Linux 环境下开发 Windows 应…...

数据库DQL
DQL 语法 SELECT字段列表 FROM表名列表 WHERE条件列表 GROUP BY分组字段列表 HAVING分组后条件列表 ORDER BY排序字段列表 LIMIT分页参数 基本查询 查询多个字段 SELECT 字段1,字段2,字段3,... FROM 表名; SELECT * FROM 表名; 设置别名 SELECT 字段1 [AS 别名1],字段2 …...

Am I Isolated:一款安全态势基准测试工具
基于Rust的容器运行时扫描器作为一个容器运行,检测用户容器运行时隔离中的漏洞。 它还提供指导,帮助用户改善运行时环境,以提供更强的隔离保证。 容器的现状是它们并不包含(隔离)。 容器隔离的缺失在云原生环境中有…...

Unity性能优化 -- 性能分析工具
Stats窗口Profiler窗口Memory Profiler其他性能分析工具(Physica Debugger 窗口,Import Activity 窗口,Code Coverage 窗口,Profile Analyzer 窗口,IMGUI Debugger 窗口) Stats 统级数据窗口 game窗口 可…...

【微信小程序】基本语法
一、导入小程序 选择代码目录 项目配置文件 appid 当前小程序的 AppIDprojectname 当前小程序的项目名称 变更AppID(视情况而定,如果没有开发权限时需要变更成个人的 AppID) 二、模板语法 在页面中渲染数据时所用到的一系列语法叫做模板…...

go中的类型断言详解
在Go语言中,类型断言(Type Assertion)是一种将接口类型的变量转换为具体类型的机制。类型断言允许我们从接口类型的变量中提取出具体的值,以便访问具体类型的方法或属性。类型断言的语法如下: value, ok : interfaceV…...

vite构建的react程序放置图片
在 Vite 中,将图片放置在 public 文件夹中可以直接使用相对路径(如 /logo.png)的原因主要与 Vite 的构建和资源处理方式有关。以下是详细的解释: 1. 公共访问性 public 文件夹中的文件在构建过程中不会被 Vite 处理或哈希化。这…...

学习事件循环
本文内容由智谱清言产生。 什么是事件循环? 事件循环(Event Loop)是一个编程概念,特别是在异步编程和GUI(图形用户界面)应用程序中非常常见。它是用来处理和管理事件(如用户输入、计时器事件、…...

终端NuShell git权限异常处理
使用nushell git,关联老的秘钥文件 D:\phpstudy_pro\WWW\xmh\backend|10-312> mkdir d:\Users\Administrator\.ssh PC-20240719ZOSM||2411063145840 D:\phpstudy_pro\WWW\xmh\backend|10-312> cp -r c:\U…...

Mybatis Plus 集成 PgSQL 指南
“哲学家们只是用不同的方式解释世界,而问题在于改变世界。” ——卡尔马克思 (Karl Marx) 解读:马克思强调了实践的重要性,主张哲学不仅要理解世界,更要致力于改造世界。 本文我们引入 Mybatis Plus 作为 ORM ,并且使…...

Rust常用数据结构教程 Map
文章目录 一、Map类型1.HashMaphashMap的简单插入entry().or_insert()更新hashMap 2.什么时候用HashMap3.HashMap中的键 二、BTreeMap1.什么时候用BTreeMap2.BTreeMap中的键 参考 一、Map类型 键值对数据又称字典数据类型 主要有两种 HashMap - BTreeMap 1.HashMap HashM…...

<el-popover>可以展示select change改变值的时候popover 框会自动隐藏
一、问题定位 点击查看详细链接 element-plus 的 popover 组件,依赖 tooltip 组件;当 tooltip 的 trigger 的值不是 hover 时,会触发 close 事件;下拉框的 click 事件,触发了 tooltip 组件的 close 事件 总结一下&am…...

SQLI LABS | Less-37 POST-Bypass mysql_real_escape_string
关注这个靶场的其它相关笔记:SQLI LABS —— 靶场笔记合集-CSDN博客 0x01:过关流程 输入下面的链接进入靶场(如果你的地址和我不一样,按照你本地的环境来): http://localhost/sqli-labs/Less-37/ 是一个登…...

数字后端零基础入门系列 | Innovus零基础LAB学习Day9
Module 16 Wire Editing 这个章节的学习目标是学习如何在innovus中手工画线,切断一根线,换孔,更改一条net shape的layer和width等等。这个技能是每个数字IC后端工程师必须具备的。因为项目后期都需要这些技能来修复DRC和做一些手工custom走线…...

深度学习:GLUE(General Language Understanding Evaluation)详解
GLUE(General Language Understanding Evaluation)详解 GLUE(General Language Understanding Evaluation)是一个用于评估和比较自然语言理解(NLU)系统的综合基准测试。它包括了一系列的任务,旨…...

基于Multisim直流稳压电源电路±9V、±5V(含仿真和报告)
【全套资料.zip】直流稳压电源电路9V、5VMultisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 一般直流稳压电源都使用220伏市电作为电源,经过变压、整流、滤波后给稳压电路进行稳压…...

Vue Cli的配置中configureWebpack和chainWebpack的主要作用及区别是什么?
直接区别: configureWebpack项直接覆盖同名配置;chainWebpack项直接修改默认配置。 configureWebpack配置: // vue.config.js module.exports {configureWebpack: {plugins: [new MyAwesomeWebpackPlugin()]} }该代码段中的对象将会被web…...

ubuntu主机搭建sysroot交叉编译环境
ubuntu主机搭建sysroot交叉编译环境 主机是 ubuntu22.04 x86-64 hostubuntu22.04host-archx86-64host-cpui9-13900k 目标板是香橙派5b ,ubuntu22.04,aarch64 ,cpu rk3588s targetubuntu22.04target-archaarch64target-cpurk3588s 安装 qemu-user-static 进入 …...

Python注意力机制Attention下CNN-LSTM-ARIMA混合模型预测中国银行股票价格|附数据代码...
全文链接:https://tecdat.cn/?p38195 股票市场在经济发展中占据重要地位。由于股票的高回报特性,股票市场吸引了越来越多机构和投资者的关注。然而,由于股票市场的复杂波动性,有时会给机构或投资者带来巨大损失。考虑到股票市场的…...

实验三 JDBC数据库操作编程(设计性)
实验三 JDBC数据库操作编程(设计性) 实验目的 掌握JDBC的数据库编程方法。掌握采用JDBC完成数据库链接、增删改查,以及操作封装的综合应用。实验要求 本实验要求每个同学单独完成;调试程序要记录调试过程中出现的问题及解决办法…...