软件测试——测试用例

news2024/9/27 23:23:00

作者:~小明学编程  

文章专栏:测试开发

格言:热爱编程的,终将被编程所厚爱。
在这里插入图片描述

目录

测试用例的设计方法

等价类

边界值

错误猜测法

判定表法(使用于关系组合)

设计步骤

具体例子

正交法

场景设计法

测试方法

黑盒测试

白盒测试

灰盒测试

常见的测试方法有哪些?哪种测试方法用的最多?

水杯的测试用例

功能性测试

界面测试

性能测试

兼容性测试

易用性测试

安全测试


测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。

设计测试用例:

测试用例的万能公式:功能、界面、性能、兼容性、易用性、安全性。

下面我们对一个水杯来设计测试用例。

测试用例的设计方法

等价类

依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题。

边界值

边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

错误猜测法

错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉,推测出软件可能存在的缺陷,从而针对性地设计测试用例的方法。
这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个人的经验和直觉。
错误推测法和目前流行的“探索式测试方法”的基本思想一致,这类方法在敏捷开发模式下的投入产出比很高,被广泛应运于测试。
这个方法的缺点是难以系统化,并且过度依赖个人能力。

判定表法(使用于关系组合)

这里所介绍的是判定表法而不是因果图法,因为因果图法的第一步是确定输入输出条件,然后找出输入和输出之间的关系,接着画因果图,然后再将因果图转换为判定表,个人觉得因果图这一步既麻烦,用处也不大我们完全可以根据输入条件和输出条件来画判定表,直接省略因果图这一步。

设计步骤

  1. 确定输入条件和输出条件。
  2. 找出输入条件和输出条件之间的关系。
  3. 画判定表。
  4. 根据判定表编写测试用例。

具体例子

假设业务单据的处理规则为:“淘宝618活动,订单已提交,订单合计金额大于300元或有红包,则进优惠”。

1.确定输入条件和输出条件:

● 输入:订单已提交、金额大于300、有红包。
● 输出:优惠、不优惠。

2.找出输入条件和输出条件之间的关系:

(1)订单已提交,订单金额大于300元,则优惠。
(2)订单已提交,订单金额小于等于300元,无红包,不优惠
(3)订单已提交,有红包,则优惠。
(4)订单已提交,订单金额大于300元,有红包,则优惠。
(5)订单未提交,不优惠。

3.画判定表:

4.根据判定表编写测试用例:

1)金额大于300元,没有红包,提交订单,结果为有优惠

2) 金额不大于300元,有红包,提交订单,结果为有优惠

3)金额大于300元,有红包,提交订单,结果为有优惠

4)金额不大于300元,没有红包,提交订单,结果为无优惠

5)金额大于300元,没有红包,不提交订单,结果为无优惠

6)金额不大于300元,有红包,不提交订单,结果为无优惠

7)金额大于300元,有红包,不提交订单,结果为无优惠

8)金额不大于300元,没有红包,不提交订单,结果为无优惠

正交法

正交法需要用到我们的正交表,而正交表由因素数和水平数来构成。

比如我们下面这个例子:用户注册信息的填写。

那么因素数就是:姓名,电子邮箱,密码,确认密码,验证码。

水平数为:填写与不填写。

正交表的两条性质:
每一列中各数字出现的次数都一样多。
任何两列中的各有序数对出现的次数都一样多。

我们的正交表通常是很难写的所以我们常借助allpairs工具来生成:

步骤:

1.找到因素数和水平数:

因素数:姓名,电子邮箱,密码,确认密码,验证码。

水平数:填写,不填写。

2.allpairs工具来生成正交表:

3.根据正交表来编写测试用例
1) 全部填写姓名,电子邮箱,密码,确认密码,验证码

2) 填写姓名,不填写电子邮箱,密码,确认密码,验证码

3) 填写电子邮箱,确认密码,不填写姓名,密码,验证码

4) 填写密码、验证码,不填写姓名,电子邮箱,确认密码

5) 填写姓名,电子邮箱,密码,不填写确认密码,验证码

6) 填写姓名,确认密码,验证码,不填写电子邮箱,密码

4.补充其它的测试用例

针对上面我们可以再次补充一条:不填写电子邮箱,确认密码,姓名,密码,验证码。

场景设计法

现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,是测试用例更容易理解和执行。
典型的应用是是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务感觉,从而避免陷入功能细节忽视业务流程要点的错误倾向。

测试方法

黑盒测试

黑盒测试就是在完全不考虑程序逻辑和内部结构的情况下,检查系统功能是否按照需求规格说明书的规定正常使用、是否能适当的接收输入数据而输出正确的结果,满足规范需求。

优点:

1.不需要了解程序内部的代码以及实现,不关注软件内部的实现。
2.从用户角度出发设计测试用例,很容易的知道用户会用到哪些功能,会遇到哪些问题,锻炼测试人员的产品思维。
3.测试用例是基于软件需求开发文档,不容易遗漏软件需求文档中需要测试的功能。

黑盒测试用到的测试方法有,等价类,边界值,判定表,场景法,错误猜测法等。

白盒测试

白盒测试又称为结构测试或逻辑测试,它一般用来分析程序的内部结构,针对程序的逻辑结构来设计测试用例进行测试。
白盒测试的测试目的是,通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

灰盒测试

灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。

但是,灰盒测试没有白盒测试详细、完整,黑盒测试覆盖产品功能范围广。所以灰盒测试是不能取代黑盒测试和白盒测试。不过黑盒测试可以取代灰盒测试,但是不建议,需要消耗很大的代价,需要设计非常非常多的测试用例。

常见的测试方法有哪些?哪种测试方法用的最多?

白盒测试和黑盒测试。在工作中需要根据实际情况来结合白盒测试和黑盒测试。通常来说测试人员使用黑盒测试方法相对要多一点。

水杯的测试用例

功能性测试

  • 装水,喝水。
  • 水杯可以装满水。
  • 水杯只能装一般的水。
  • 水杯具有安全刻度,超过刻度就会溢出。
  • 水杯是否烫手。
  • 水杯能折叠吗。

界面测试

  • 水杯的形状是否符合产品的说明。
  • 水杯的大小是否符合产品的说明。
  • 水杯的材料是否符合产品的说明。
  • 水杯的颜色是否符合产品的说明。
  • 水杯的外观是否完整美观。

性能测试

  • 水杯的耐热性。
  • 水杯的抗冻性。
  • 水杯的抗摔性。
  • 抗腐蚀性。
  • 水杯的抗压性。
  • 装水的性能。
  • 水杯使用的最大次数。

兼容性测试

  • 水杯是否能够装水,啤酒,果汁,可乐等。

易用性测试

  • 倒水是否方便。
  • 喝水是否方便。
  • 水杯拿着是否舒服(符合人体工学)。
  • 水杯是否方便打开。
  • 水杯是否防滑。
  • 水杯清理是否方便。

安全测试

  • 材质是否健康。
  • 材质是否易燃易爆。
  • 材质在高温下会不会产生有毒物质。
  • 材质是否有可能与一些液体发生化学反应。

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

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

相关文章

Redis相关简介

1. Redis 简介 在这个部分,我们将学习以下3个部分的内容,分别是: ◆ Redis 简介(NoSQL概念、Redis概念) ◆ Redis 的下载与安装 ◆ Redis 的基本操作 1.1 NoSQL概念 1.1.1 问题现象 在讲解NoSQL的概念之前呢&am…

8. R语言画:散点图、直方图、条形图、箱线图、小提琴图、韦恩图

b站课程视频链接: https://www.bilibili.com/video/BV19x411X7C6?p1 腾讯课堂(最新,但是要花钱,我花99😢😢元买了,感觉讲的没问题,就是知识点结构有点乱,有点废话)&…

九大数据分析方法-综合型分析方法以及如何使用这九大分析方法

文章目录3 综合型分析方法3.1 相关性分析法3.1.1 直接相关3.1.2 间接相关3.2标签分析法3.3 MECE法4 如何使用九大方法本文来源,为接地气的陈老师的知识星球,以及付同学的观看笔记。3 综合型分析方法 3.1 相关性分析法 相关性分析法:寻找指标…

ROS2机器人编程简述humble-第二章-Executors .3.5

ROS2机器人编程简述humble-第二章-Parameters .3.4由于ROS2中的节点是C对象,因此一个进程可以有多个节点。事实上,在许多情况下,这样做是非常有益的,因为当通信处于同一进程中时,可以通过使用共享内存策略来加速通信。…

freeglut 在mfc 下的编译

freeglut 是OpenGL Utility Toolkit (GLUT) library 的替代版本,glut 应用广阔,但比较陈旧,很久没有更新。 我原来的opengl 用的是glut, 想更新到64位版本,怎么也找不到合适的下载。最后找到完全替代版本freeglut。fre…

【Linux】线程概念 | 互斥

千呼万唤始出来,终于到多线程方面的学习了! 所用系统Centos7.6 本文的源码👉【传送门】 最近主要是在我的hexo个人博客上更新,csdn的更新会滞后 文章目录1.线程的概念1.1 执行流1.2 线程创建时做了什么?1.3 内核源码中…

每刻和金蝶云星空接口打通对接实战

接通系统:每刻3000中大型企业在用,新一代业财税一体化解决方案提供商。旗下拥有每刻报销、每刻档案、每刻云票、每刻财务共享云平台等,助力企业实现财务数字化转型。对接系统:金蝶云星空金蝶K/3Cloud结合当今先进管理理论和数十万…

算法刷题打卡第72天:最少侧跳次数

最少侧跳次数 难度:中等 给你一个长度为 n 的 3 跑道道路 ,它总共包含 n 1 个 点 ,编号为 0 到 n 。一只青蛙从 0 号点第二条跑道 出发 ,它想要跳到点 n 处。然而道路上可能有一些障碍。 给你一个长度为 n 1 的数组 obstacle…

Cheat Engine7.4 训练教程(非常详细)

目录 一.CE是干什么的? 二.怎么获得? 三.训练教程 步骤 1: 加载进程 步骤 2: 精确值扫描 步骤 3: 未知的初始值 步骤 4: 浮点数 步骤 5: 代码查找 步骤 6: 指针 步骤 7: 代码注入 步骤 8: 多级指针 提示:这篇文章不是一天写完的&a…

设计模式-建造者模式

1.概述 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦…

基于ffmpeg的视频处理与MPEG的压缩试验(下载安装使用全流程)

基于ffmpeg的视频处理与MPEG的压缩试验ffmpeg介绍与基础知识对提取到的图像进行处理RGB并转化为YUV对YUV进行DCT变换对每个8*8的图像块进行进行量化操作ffmpeg介绍与基础知识 ffmpeg是视频和图像处理的工具包,它的下载网址是https://ffmpeg.org/download.html。页面…

MySQL高级

存储引擎 MySQL体系结构: 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表而不是基于库的,所以存储引擎也可以被称为表引擎。 默认存储引擎是InnoDB。 相关操作: -- 查询建表语句 show create table ac…

Python量化交易07——散户反买策略

参考来源:b站up 邢不行 我们都知道在A股,散户一直是最大的韭菜贡献组群。散户买入多的个股,大概率可能跌的很惨,散户卖出多的股票,大概率会涨。 跟着北向资金买能赚钱,那么跟着散户反买,是不是…

宝塔面板部署Django项目教程(手把手)

一、测试环境 系统:centos 7.9 CPU:1核 内存:2G 二、安装宝塔面板 输入命令: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec 后面会…

【nvidia CUDA 高级编程】使用cub库优化分布式计算下的原子操作

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

MySQL数据库相关错题本

1) MySQL数据库相关错题本1、存储引擎相关1、MySql的存储引擎的不同MySQL存储引擎主要有InnoDB, MyISAM, Memory, 这三个区别在于:Memory是内存数据引擎, 会断电重启(在双M或者主从架构下会产生较多异常), 且不支持行级锁. 默认索引是数组索引, 支持B索引InnoDB和MyISAM的区别:…

【React全家桶】react简介(一)

react简介创建项目creat-react-app1.1 React特点1.2 引入文件1.3 JSX1.3.1 为什么要用JSX1.3.2 JSX语法规则1.4 虚拟DOM1.5 模块与组件1.5.1 模块React面向组件编程2.1 创建组件2.1.1 函数式组件2.1.2 类式组件2.2 组件实例的三大属性2.2.1 state属性2.2.2 props属性2.2.3 refs…

jvm学习的核心(三)---运行时数据区详解(2)

文章目录1.堆(heap)1.1 堆的概述1.2 堆的内部结构1.3 堆分代垃圾回收流程的简单理解2.方法区( Method Area)2.1 HotSpot方法区的演进2.2方法区的内部结构2.3.1 常量池和运行时常量池概念区别1.堆(heap) 1.1…

Linux常用命令——supervisord命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) supervisord 配置后台服务/常驻进程的进程管家工具 安装 # 安装 supervisord apt-get install supervisor实例 生成配置文件/etc/supervisord.conf [program:app] command/usr/bin/gunicorn -w 1 wsgiapp:ap…

Java面试2

Java面试2目录概述需求:设计思路实现思路分析1.java 面试题参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.…