【软件测试用例篇】

news2024/11/18 0:37:26

🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!

欢迎志同道合的朋友一起加油喔🤺🤺🤺


目录

1. 测试用例的概念

2. 设计测试用例的好处

3. 基于需求设计测试用例

3.1 功能性需求

3.2 非功能性需求

4. 设计测试用例的具体方法

4.1 等价类

4.2 边界值

4.3 判定表

4.4 正交表

1. 什么是正交表

2. 正交表的两条性质:

3. 如何通过正交表设计测试用例 

4.5 场景设计法

4.6 错误猜测法

5. 测试用例的万能公式



1. 测试用例的概念

测试用例就是测试人员向被测试系统发起的一组集合,该集合包括测试环境,测试数据,测试步骤,预期结果

2. 设计测试用例的好处

在测试前都要先设计测试用例,设计测试用例有如下好处:

  1. 测试用例是测试人员执行测试的依据
  2. 在做回归测试的时候,测试用例可以复用
  3. 测试用例可以衡量需求的覆盖率
  4. 测试用例是自动化测试的依据
  5. 测试用例具有借鉴意义,后续测试人员可以借鉴前人写的测试用例

测试用例的编写往往是根需求编写的,那么如何根据需求来编写测试用例?

3. 基于需求设计测试用例

在基于需求设计测试用例之前,测试人员要进行如下操作:

  1. 测试人员首先要分析需求,验证需求的合理性,正确性,无二义性,并且逻辑自洽
  2. 其次再是细化需求,从需求中提取出测试点,根据测试点设计测试用例

在测试人员分析需求时往往分析功能性需求和非功能性需求

3.1 功能性需求

功能性需求是为了满足软件的基本功能,往往从以下几个方面进行分析考虑

  • 从界面考虑,验证界面功能   

比如QQ登陆页面,有许多的按钮对应不同的功能

  • 从业务角度考虑,把功能串起来进行测试

比如增加一条用户信息,然后是查询,修改或者删除

  • 验证功能之间的交互性,一致性

比如微信发朋友圈,你发送的内容要和微信好友在朋友圈看到的一致

  • 一个功能的多个输入

比如登陆功能,要使用不同的账号和密码进行登陆测试

  • 功能的异常测试
  • 功能的易用性,体验性的测试

主要是验证用户在使用上是否符合用户使用习惯,使用起来是否舒适等

  • 功能涉及的算法

比如滴滴打车,一个顾客叫了一个车,系统要根据某些算法算出距该顾客最近的车

下面让我们一起来看个具体的例子:思考一下我们要如何去分析这个日历页面,才能做到毫无保留把相关功能分析完呢❓🤔
答案就是:页面分析可以从上到下,从左到右,依次去分析每个测试点

3.2 非功能性需求

非功能需求是在功能性需求的基础上做一些限制,满足特定场景的需求,让用户有更好的体验,比如软件的兼容性,性能,安全性,可靠性,可移植性,易用性等

不同的软件对于非功能性的需求往往是不同的,如:

  • 客户端的软件:像word,ppt,xmind,播放器对功能和要求很简单,对性能,安全性要求比较低,对软件的可移植性要求比较高,因为这些不需要联网就可以使用
  • 企业软件:比如聊天软件,像飞Q,飞书,钉钉,对功能有一定要求,对兼容性,安全性,性能要求低,因为企业软件用的用户比较少
  • 商业软件:像QQ,微信等,对功能,性能,安全性,可移植性,易用性要求都很高,因为商业软件使用的用户基数大

4. 设计测试用例的具体方法

设计测试用例的常用方法有:等价类,边界值,错误猜测法,场景设计法,因果图,正交法,下面就对这几种常用设计测试用例的常用方法展开具体的介绍

4.1 等价类

根据输入(特殊情况下考虑输出),把输入划分成若干个等价类,从每一个等价类当中取一个测试用例进行测试,如果这个测试用例通过,我们就说这个测试用例代表的等价类测试通过

等价类可以解决测试用例无法穷举的情况

等价类有有效等价类和无效等价类

  • 有效等价类:符合需求规格说明书的数据
  • 无效等价类:不符合需求规格说明书的数据

注意:测试的时候有效等价类和无效等价类都得测试

示例:注册网易邮箱时,针对邮箱账号找到对应的等价类

等价类思想设计测试用例步骤:

  1. 充分理解需求
  2. 划分有效等价类,划分无效等价类
  3. 从有效等价类抽取其中一个数据进行设计测试用例;从无效等价类中抽取其中一个进行测试用例设计 

4.2 边界值

对输入和输出的边界针对性的进行测试用例的设计,叫作边界值法

边界值要取边界上的值,和边界左右两边的值。

示例:就拿上边的那个例子来说,它的有效范围为6-18位,找出边界点

注意:边界值往往和等价类结合在一起使用

边界值设计测试用例方法:

  1. 充分理解需求
  2. 找边界点
  3. 针对边界点设计测试用例

 4.3 判定表

判定表(Decision table)是另一种表达逻辑判断的工具。

关系:

  • 与:所有的条件必须满足,如果一个条件不满足,此时结果为假
  • 或:满足其中一个条件结果就为真,如果条件全部为假,结果就为假
  • 恒等:条件为真,结果一定为真非:条件为假,结果才为真
  • 非:条件为假,结果才为真

如何设计测试用例:

  1. 分析所有可能的输入和可能的输出。
  2. 找出输入与输出之间的对应关系。
  3. 设计判定表
  4. 把判定表对应到每一个测试用例。
     

案例一:
假设业务单据的处理规则为:“淘宝618活动,订单已提交,订单合计金额大于300元或有红包,则进优惠”。
1. 对于这条业务规则,首先通过分析所有可能的输入和可能的输出,可以得到如下结果:

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

2. 找出输入与输出之间的对应关系:

  1. 订单已提交,金额大于300, 有红包,优惠
  2. 订单已提交,金额大于300,没有红包,优惠
  3. 订单已提交,金额小于300,有红包,优惠
  4. 订单已提交,金额小额300,没有红包,不优惠
  5. 订单不提交,金额大于300,有红包,不优惠
  6. 订单不提交,金额大于300,没有红包,不优惠
  7. 订单不是交,金额小于300,有红包,不优惠
  8. 订单不提交,金额小额300,没有红包,不优惠

3. 判定表:

 4. 把判定表对应到每一个测试用例

判定表的每一都是一个测试用例

 最后之所以写成这样,是因为我们后期要针对这些测试点补充测试要素


4.4 正交表

1. 什么是正交表

最简单的正交表是L4(23),含意如下:“L”代表正交表;L 下角的数字“4”表示有 4 横行,简称行,即要做四次试验;括号内的指数“3”表示有3 纵列,简称列,即最多允许安排的因素是3 个;括号内的数“2”表示表的主要部分只有2 种数字,即因素有两种水平1与2。正交表的特点是其安排的试验方法具有均衡搭配特性。

2. 正交表的两条性质:

  • 每一列中各数字出现的次数都一样多。
  • 任何两列中的各有序数对出现的次数都一样多。

3. 如何通过正交表设计测试用例 

  1. 充分理解需求
  2. 确定因素,确定水平
  3. 画正交表
  4. 补充正交表
  5. 将正交表转换成测试用例

继续以注册的需求为例: 姓名、邮箱、密码、确认密码、验证码必须全部输入,才能进行注册

  • 因素: 姓名、邮箱、密码、确认密码、验证码
  • 水平: 填写/不填写

allpairs画正交表:allpairs压缩包百度网盘链接(提取码:e578)

① 将因素和水平放到Excel表格中

 ② 将Excel表格内容直接复制到TXT文本中并保存到allpairs路径下

 

③ cmd进入到allpairs安装路径下

 ④ 生成正交表 (输入下面指令)

 ⑤ 将正交表转换成测试用例 (每一个横行就是一个测试用例)


 4.5 场景设计法

很多软件不同的场景,是基于不同的事件的触发。不同事件的触发,导致场景走向不同的事件流。不同的功能点串起来形成一个场景,不同的功能点又有不同的输出,不同的输出导致不同的测试场景。

场景设计法中涉及到两个概念:基本事件流和备选事件流。用下面的一个例子进行解释,以去ATM取款机取款的流程为例

除了基本事件流以外,可能出现的以外情况称之为备选事件流

如何通过这个方法设计测试用例:

充分理解需求-> 确定主事件流->确定次事件流->每一个事件流就是一个测试用例

根据上图编写测试用例:

  1. 基本事件流用例:插卡、输入密码、输入金额、取钞、退卡
  2. 备选事件流的用例:
    (1)插卡、输入密码、密码错误、重置密码、输入金额、取钞、退卡
    (2)插卡、输入密码、输入金额、金额不是整数、重新输入、取钞、退卡

4.6 错误猜测法

错根据测试人员的经验,知识积累,猜测某一块功能有问题,有针对性的进行测试用例的编写。类似于探索性测试,针对性比较强,比较依赖测试人员个人的水平。适用于在用例设计后,作为补充,加强去设计测试用例。

案例:已注册为例

  1. 校验中特殊字符空格的处理?
  2. 密码校验中的大小写?
  3. 姓名中的特殊字符?
  4. 密码发送是否明文

5. 测试用例的万能公式

首先,为"水杯"设计一个测试用例,我们可能会想到水杯是否可以盛水、水杯是否漏水、水杯携带是否方便、水杯是否保温、水杯的形状和外观是否符合用户预期…但这些用例是我们想一个写一个的,并不是按照某个具体步骤详细而全面的来设计测试用例。因此学会万能公式对我们设计测试用例将很有帮助
测试用例的万能公式:功能测试+性能测试+界面测试+兼容性测试+易用性测试+安全测试

  • 功能测试:对产品的功能设计测试用例(来源是需求文档/日常生活经验)
  • 性能测试:功能测试没有问题不代表性能好,考虑极端情况(高并发量、响应时间等)
  • 界面测试:界面中每个元素的大小、颜色、材质、形状、页面跳转、文字错别字…都需要进行测试(以界面设计图为依据)
  • 兼容性测试: 软件的不同版本是否兼容、不同浏览器、不同的系统版本、数据兼容性…
  • 易用性测试:产品是否具备简单易上手的属性
  • 安全测试:用户的隐私数据是否加密(注册账号时账号和密码在接口传输时是否加密)、是否存在SQL注入问题、越权问题

【SQL注入问题】

select * from info where id=1 or 1=1; 这条SQL语句的结果是返回所有的用户信息

【越权问题】

越权又分为垂直越权和水平越权
垂直越权是指,比如在一个教务系统中,有教师和学生不同的身份,教师可能有布置作业的功能,学生没有作业的功能,但如果学生也能进行布置作业,那么这就属于是垂直越权
水平越权是指,学生有张三和李四,张三不能进入到李四的界面中进行操作,但如果张三可以操作李四的界面,那这就是水平越权

在学完万能公式之后,借助万能公式对"水杯"进行设计测试用例

【设计测试用例一定是越多越好吗?】

不是的,测试用例能够提高质量覆盖率才是最好的

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

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

相关文章

ESP32-C2模组 透传示例

WIFI-TTL透传模块说明 V 1.0 2022-11-24 1 简介 WiFi-TTL透传模块基于我司DT-ESPC2-12模块研发,引出串口TTL、EN、STATE 等引脚。产品内置我司最新版本的串口透传固件可完成设备TTL 端口到WiFi/云的数据实时透传。本模块可直接取代原有的有线串口,实现…

ZooKeeper快速入门学习+在springboot中的应用+监听机制的业务使用

目录 前言 基础知识 一、什么是ZooKeeper 二、为什么使用ZooKeeper 三、数据结构 四、监听通知机制 五、选举机制 使用 1 下载zookeeper 2 修改 3 排错 在SpringBoot中的使用 安装可视化插件 依赖 配置 安装httpclient方便测试 增删查改 新建控制器 创建节点…

k8s中部署nginx-ingress实现外部访问k8s集群内部服务

k8s通过nginx-ingress实现集群外网访问功能 一:ingress概述 1.1 ingress 工作原理 step1:ingress contronler通过与k8s的api进行交互,动态的去感知k8s集群中ingress服务规则的变化,然后读取它,并按照定义的ingress规…

jsp手机回收软件系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp手机回收软件系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助 ,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使…

Moonbeam社区治理|参与委托投票问卷,瓜分2000U奖励

社区治理升级意味着公链正走向可持续和透明化发展,让每位GLMR所有者都参与治理,是Moonbeam成为真正去中心化公链的重要一环。 Moonbeam治理 OpenGov为Moonbeam生态带来了多角色委托功能,使Token持有者能够根据track委托Token进行投票。委托…

零基础如何入门渗透测试

作为一名多年的渗透测试工程师,了解到很多零基础的初学者都面临着学习渗透测试的困难。在这里,我会提供一些指导性的建议和方法,帮助初学者快速入门,开启学习之旅。 一、什么是渗透测试 在学习渗透测试之前,建议先了解…

虹科技术 | 虹科EtherCAT增量编码器输入模块数据采集实操测试

1. 背景介绍 编码器是将信号或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移或直线位移转换成电信号,前者称为码盘,后者称为码尺。按照读出方式编码器可以分为接触式和非接触式两种;按照工作原理编码器可分为…

Android | Android 系统架构

参考: Android Developers(https://developer.android.google.cn/) 平台架构 Android 是基于 Linux 的开源软件栈,下图为官网给出的 Android 平台主要组件。 Android 平台从上(直接与用户交互)到下(直接与硬件交互&a…

Mastodon 长毛象多租户:自定义域名、自定义账号别名

概念 自定义域名后缀 假设,Mastodon 主节点域名 domain1.com,我在该域名下拥有一个用户 user1domain1.com。 配置自定义域名后缀支持后,也可以通过 user1domain2.com 搜索到。该配置需要在主节点中设置 ALTERNATE_DOMAINS。 自定义账号别…

DOS的常用指令:

DOS的常用指令: DOS【介绍】:磁盘操作系统 cmd是操作DOS的媒介,dos可以操作Windows的目录结构, 基本操作指令: cmd【控制台】->发给dos【解析】->win的目录结构 常用操作指令: 《一》目录操作 &a…

QT学习笔记-QT5.15.2使用qtopcua5.15.2实现与PLC通讯(上)

QT学习笔记-QT5.15.2使用qtopcua5.15.2实现与PLC通讯(上) 环境说明背景思路perl依赖安装qtopcua插件编译解决编译报错问题解决安装mingw32-make install报错问题 环境说明 操作系统:Windows10 专业版 64位 开发工具:Qt 5.15.2 OP…

Python提取PDF文字的10个方法,OCR识别扫描版pdf,图片pdf格式的10种ocr汉字识别方法

Python 读取扫描版 PDF、图片 PDF 并进行 OCR 识别的方法: pytesseract:一种基于 Python 的 OCR 库,可用于识别扫描版 PDF 和图片 PDF 中的文本。 它可以使用 Google 的 OCR 引擎进行识别,也可以使用本地的 OCR 引擎进行识别。使…

阿里云免费ssl证书申请与部署

一、证书申请 1、找到 ssl 证书 2、点击选择SSL 证书 进入其管理控台 3、如果你还没有免费证书,选择购买即可,一个自然年内每个账号可以领取一次数量为20的免费单域名试用证书额度,我的已经购买过来,今年的,所以无法…

网络安全各类WAF绕过技巧

一、WAF绕过 1、脏数据绕过 即传入一段长数据使waf失效,从而实现绕过waf。某些waf处理POST的数据时,只会检测开头的8K,后面选择全部放过。 例如,当发现某网站存在一个反序列化漏洞时,但是无回显,被waf拦…

MQTT中间件Eclipse Mosquitto安装和使用(.asc文件)MQTT监控命令mosquitto_sub(mosquitto C++库源码编译)

昨天弄的,今天忘了不少。。。 文章目录 参考链接安装MQTT服务中间件安装启动与查询卸载与清理 MQTT C支持库安装(使C能使用相关库函数)离线安装(通过源码)ubuntu官网下载软件包编译mosquitto客户端库 mosquitto Docker…

后端SpringBoot应用向云原生K8S平台迁移

目录 一、引言二、方式1:在K8S上部署Spring Cloud Alibaba三、方式2:在K8S上部署Spring Cloud K8S3.1 第1次优化:移除Spring Cloud K8S DiscoveryClient 四、方式3:在K8S上部署SpringBoot应用4.1 第2次优化:移除Spring…

acwing提高--DFS之剪枝与优化

剪枝与优化的方法 1.优化搜索顺序 大部分情况下,我们应该优先搜索分支较少的节点 2.排除等效冗余 3.可行性剪枝 4.最优性剪枝 5.记忆化搜索(DP) 1.小猫爬山 题目https://www.acwing.com/problem/content/description/167/ 1.优化搜索顺…

《操作系统》期末最全复习题及解析

文章目录 选择题填空题简答题程序题综合题1.银行家算法2.页面置换算法3.进程调度算法4.磁盘调度算法5.求物理/逻辑地址6.分页存储管理7.可变分区分配算法 选择题 若信号量S的初值为2,且有3个进程共享此信号量,则S的取值范围是(B )…

单词长度统计,统计数据放入列表

输入一段英文计算每个单词长度,统计不含非英文字符,列表输出。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单…… 地址…

AI与税务管理:新技术带来的新机遇和新挑战

本文作者:王伊琳 人工智能(Artificial Intelligence,AI)是指由计算机系统或机器人模拟人类智能的过程和结果,包括感知、理解、学习、推理、决策等能力。近年来,随着计算机技术、互联网平台、大数据分析等的…