软件测试----用例篇(设计测试用例保姆级教程✅)

文章目录

  • 前言
  • 一、测试用例
    • 概念
  • 二、如何设计测试用例
  • 三、设计测试用例的方法
    • 3.1基于需求的设计方法
    • 3.2具体的设计方法
      • 等价类
      • 边界值
      • 正交法
      • 判定表法
      • 场景法
      • 错误猜测法


前言

在软件开发过程中,测试用例是至关重要的一环。它们帮助软件开发人员和测试人员确定软件是否按照预期方式运行,并且可以帮助找出和修复软件中的 bug。编写测试用例是一项技能,它需要逻辑思维和专业知识。在本篇博客中,我们将介绍一些编写测试用例的方法,帮助你更好地理解软件测试用例的重要性,并提高编写测试用例的能力。让我们一起来深入了解吧!


一、测试用例

概念

什么是测试⽤例?
测试⽤例(Test Case)是为了实施测试而向被测试的系统提供的⼀组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。 设计测试⽤例原则⼀: 测试⽤例中⼀个必需部分是对预期输出或结果进⾏定义.

为什么需要测试⽤例呢,不写测试⽤例可以进⾏测试吗?
测试中可能会遇到很多问题,诸如:
• 不知道是否较全⾯的测试了所有功能
• 测试的覆盖率⽆法衡量
• 对新版本的重复测试很难实施(即回归测试⽆法仅通过⼈⼯测试的⽅式进⾏历史功能的回归)
• 存在⼤量冗余测试影响测试效率
测试⽤例的出现就是解决这些问题。

二、如何设计测试用例

设计测试用例的万能公式:万能公式:功能测试+界⾯测试+性能测试+兼容性测试+易用性测试+安全测试

  • 功能测试

功能测试是⼀个试图发现程序与其外部规格说明之间存在不⼀致的过程。外部规格说明是⼀份从最终用户的⻆度对程序⾏为的精确描述。功能测试通常是⼀项⿊盒操作。在进⾏功能测试时,需要对规格说明进⾏分析以提炼测试⽤例,本课程中讨论的具体设计测试⽤例的⽅法尤其适⽤于功能测试。

  • 界⾯测试

对软件界⾯上所有的内容都需要进⾏测试。

  • 性能测试

性能测试和功能测试的区别是:功能测试检查软件是否做了,⽽性能测试测试软件做的好不好。

  • 兼容性测试

软件是部署在硬件系统之上,并依赖所需要的软件环境。如QQ可以在PC端打开,也可以在移动端打开;移动端⼜分为IOS系统和Android系统,且市⾯上⼿机⼜有不同的品牌、不同的机型、不同的版本。软件是否能够在不同的环境下正确运⾏需要测试⼈员进⾏验证。

  • 易⽤性测试

易⽤性测试的标准是检查产品是否具备简单易上⼿的属性。假如测试⼈员从来没有安装或使⽤过该产品,作为⼀个新用户,对当前产品是否能够快速适⽤产品的使⽤流程。

  • 安全测试

安全测试和性能测试⼀样都是⽐较⼤的领域。常⻅的安全问题如:
隐私数据明文显示。
参数未强校验导致SQL注⼊。
越权:普通用户也可以执⾏管理员权限的操作。

  • 弱⽹测试

弱⽹测试的⽬的就是尽可能保证用户体验,关注的关键点包括:
• 页面响应时间是否可以接受,关注包括热启动、冷启动时间、页面切换、前后台切换、⾸字时间,
⾸屏时间等。
• 页面呈现是否完成⼀致。
• 超时⽂案是否符合定义,异常信息是否显⽰正常。
• 是否有超时重连。
• 安全⻆度:是否会发⽣dns劫持、登陆ip更换频繁、单点登陆异常等。

弱⽹需要借助⼯具来构造弱⽹,这⾥推荐使⽤fiddler
1)fiddler配置代理
2)fiddler进⾏抓包(桌⾯/移动端)
3)fiddler如何构造弱⽹条件

在这里插入图片描述

  • 安装卸载测试

针对需要进⾏部署的软件,除了软件功能外,我们还需要关注软件的能够成功安装和卸载

在这里插入图片描述

正确设计测试用例的思想:常规思维+逆向思维+发散性思维

设计测试用例的原则⼆:
1.测试用例的编写不仅应当根据有效和预料到的输⼊情况,⽽且也应该根据⽆效和未预料到的输⼊情况。
2.检查程序是否“未做其应该做的”仅是成功的⼀半,测试的另⼀半是检查程序是否“做了其不应该做的”。(是上⼀条原则的必然结果)
3.计划测试⼯作时不应默许假定不会发现错误

三、设计测试用例的方法

3.1基于需求的设计方法

基于需求的设计⽅法也是总的设计测试⽤例的⽅法,在⼯作中,我们需要参考需求⽂档/产品规格说明 书来设计测试⽤例。测试⼈员接到需求之后,要对需求进⾏分析和验证,从合理的需求中进⼀步分析细化需求,从细化的 需求中找出测试点,根据这些测试点再去设计测试⽤例。

eg.注册邮箱账号需求为例来设计测试⽤例。
①明确需求中的功能点:账号注册,账号登陆
②结合万能公式设计测试点
在这里插入图片描述

3.2具体的设计方法

等价类

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

等价类分类:
•有效等价类:对于程序的规格说明书是合理的、有意义的输⼊数据构成的集合,利⽤有效等价类验证程序是否实现了规格说明中所规定的功能和性能 。
•⽆效等价类:根据需求说明书,不满⾜需求的集合。

根据等价类设计测试⽤例的⽅式:
1.确定有效等价类和⽆效等价类
2.编写测试⽤例,设计具体测试数据

缺点:等价类只考虑输⼊域的分类,没有考虑输⼊域的组合,需要其他的设计⽅法和补充。

eg.对邮箱注册中姓名进行等价类设计用例。
在这里插入图片描述

边界值

边界值分析法就是对输⼊或输出的边界值进⾏测试的⼀种⿊盒测试⽅法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试⽤例来自等价类的边界。

边界值包含:边界值+次边界值

在这里插入图片描述

继续将上述⽤例通过边界值补充完整:
在这里插入图片描述

正交法

正交法的⽬的是为了减少⽤例数⽬。⽤尽量少的⽤例覆盖输⼊的两两组合。
正交试验设计(Orthogonal experimentaldesign)是研究多因素多⽔平的⼀种设计⽅法,它是根据正交性,由试验因素的全部⽔平组合中挑选出部分有代表性的点进⾏试验,通过对这部分试验结果的分析了 解全⾯试验的情况,找出最优的⽔平组合。正交试验设计是⼀种基于正交表的、⾼效率、快速、经济的试验。

下图是最简单的正交表----
在这里插入图片描述
正交表的性质:
• 每⼀列中,不同的数字出现的次数相等。
• 任意两列中数字的排列⽅式⻬全⽽且均衡

根据正交表的性质,⼀般⼈很难通过⼿动设计出正交表,正交法设计测试⽤例的步骤:

  1. 找到因素和⽔平

  2. ⽤allparis⼯具⽣成正交表
    a. 将因素和⽔平写⼊Excel表格中
    请添加图片描述

    b. allparis⽬录下创建新的⽂本⽂件new.txt,复制Excel中的因素和水 平,直接粘贴到⽂本中保存并退出

    c. 使用allparis命令⽣成正交表:allparis.exe new.txt>zhengjiao.txt
    在这里插入图片描述

  3. 根据正交表编写测试用例
    在这里插入图片描述

  4. 补充遗漏的重要测试用例
    在这里插入图片描述

判定表法

通过具体的方法能够将测试⽤例设计的更加完整和规范。
需求中会存在各种各样的场景,现在我们把需求改成如下的要求:
⽤户输⼊的账号中包含admin字符,或者通过内部链接进⼊注册页面,提交注册按钮成为管理员⾝份;反之⽆管理员⾝份。
通过这个需求可以看出,不同的组合操作可能对应不同的结果。采⽤正交法⽆法解决这样的问题。而正交法能够解决需要考虑输⼊之间的组合关系对应不同结果的场景。

根据判定表法设计测试⽤例的步骤:

  1. 确认需求中输⼊条件和输出条件
    在这里插入图片描述

  2. 找出输⼊条件和输出条件之间的关系
    在这里插入图片描述

  3. 画判定表
    在这里插入图片描述

  4. 根据判定表编写测试⽤例
    在这里插入图片描述

场景法

场景法就是⼀个常规的流程中,某些阶段可能会出现⼀些意想不到的情况,常规流程是基本流,从阶段中分析出来的不同情况被称之为备选流,场景法⽐较考验我们的发散思维。
在这里插入图片描述

根据场景法设计测试⽤例的步骤
1.确定基本流
2.确定备选流
3.根据备选流补充测试用例
4.编写测试⽤例

以前述邮箱注册为例:
在这里插入图片描述
在这里插入图片描述

错误猜测法

错误猜测法是对被测试软件设计的理解,过往经验以及个⼈直觉,推测出软件可能存在的缺陷,从⽽针对性地设计测试⽤例的⽅法。
这个⽅法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个⼈的经验和直觉。
错误推测法和⽬前流⾏的“探索式测试⽅法”的基本思想⼀致,这类⽅法在敏捷开发模式下的投⼊产出⽐很⾼,被⼴泛应⽤于测试。

这个⽅法的缺点是难以系统化,并且过度依赖个⼈能⼒。

在这里插入图片描述
注意:笔试的时候编写测试⽤例需要使⽤传统的编写方式,须完整写出测试用例以及必要要素。
面试的时候只需要按照思维导图模式说出测试⽤例。


最后,码字不易,如果觉得对你有帮助的话请点个赞吧,关注我,一起学习,一起进步!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FlinkSQL开发经验分享

最近做了几个实时数据开发需求,也不可避免地在使用Flink的过程中遇到了一些问题,比如数据倾斜导致的反压、interval join、开窗导致的水位线失效等问题,通过思考并解决这些问题,加深了我对Flink原理与机制的理解,因此将…

嵌入式开发板屏幕显示汉字

一、实验目的 1.编写能够在嵌入式开发板LCD上显示汉字的程序; 2.在Ubuntu系统中编译上述程序生成可执行文件; 3.到开发板中验证。 二、实验步骤 1. Ubuntu系统上编写验证程序 Ubuntu系统上编写的验证程序如下&…

【开发12年码农教你】Android端简单易用的SPI框架-——-SPA

Service(priority 1) public class APrinterService implements IPrinterService { Override public void print() { System.out.println(“this is a printer service.”); } } 复制代码 B模块 —— BPrinterService Service(path“b_printer”, priority 2) public class…

监控 Promethus的监控告警Alertmanager、Grafana

Promethus的监控告警Alertmanager Alertmanager 介绍 Prometheus的一个组件,用于定义和发送告警通知,内置多种第三方告警通知方式,同时还提供了对Webhook通知的支持基于警报规则对规则产生的警报进行分组、抑制和路由,并把告警发…

华硕笔记本重装系统详细操作,图文教程体验Win11如何重装系统

随着科技的不断发展,电脑操作系统的步骤也在不断更新迭代。对于华硕笔记本用户来说,升级到Windows 11操作系统可以带来更好的使用体验。本文将通过图文教程的形式,详细介绍华硕笔记本重装Windows 11系统的操作步骤,帮助用户顺利完…

用AI打败AI,利用ai指令对头条文章进行查重测试,结果出乎意料

前言:现在的ai真的太火爆了,让人不得不感叹ai的神奇之处,让我们一起来探讨下ai的强大之处吧!本文仅限学习研究。 背景:最近看到很多人用ai写文章,然后被头条判定为疑似ai生成,所以想研究学习下…

ES6 解构赋值详解

ES6是JavaScript语言的一次重大更新,引入了许多新特性和语法改进,其中解构赋值是一个非常实用和灵活的语法特性。它可以让我们从数组或对象中提取值,并赋给对应的变量,让代码变得更加简洁和易读。本文将深入探讨ES6解构赋值的语法…

ROS | 常见故障排查

1.开启后发出一个WIFI WIFI名字:WHEELTEC接数字 安全密钥:dongguan 2.显示屏接口 USB接口接键鼠 3.远程登录命令 ssh -Y wheeltec192.168.0.100 是小车发出的WIFI的一个IP地址 4. 登录后确保IP地址 ip a 看一下 当前ip地址 倒数第四行-当前ip地址 1…

简易部署的设备日志采集工具

永久免费: Gitee下载 最新版本 使用说明: Moretl 企业级采集文件工具 优势: A. 开箱即用. 解压直接运行.不需额外安装. B. 批管理设备. 设备配置均在后台管理. C. 无人值守 客户端自启动,自更新. D. 稳定安全. 架构简单,内存占用小,通过授权访问.

数据结构---二叉树前中后序遍历

1. 某完全二叉树按层次输出(同一层从左到右)的序列为 ABCDEFGH 。该完全二叉树的前序序列为() A: ABDHECFG B: ABCDEFGH C: HDBEAFCG D: HDEBFGCA 2. 二叉树的先序遍历和中序遍历如下:先序遍历: EFHIGJK; 中序遍历: HFIEJKG. 则二叉…

[数据集][目标检测]药片药丸检测数据集VOC+YOLO格式152张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):152 标注数量(xml文件个数):152 标注数量(txt文件个数):152 标注类别…

企业级Web项目中应该如何做单元测试、集成测试和功能测试?

先自我介绍下: 本人有过10年测试经验,也参与过公安部网络安全产品测试交付、华为4G 网络设备测试交付、腾讯QQ空间APP产品测试交付。 关于“企业级Web项目中应该如何做单元测试、集成测试和功能测试”这个问题,我想给大家唠唠,我…

Django数据驾驶舱

Django数据驾驶舱 1.项目介绍2.项目结构3.库表结构3.1 appcsdn的models3.2 appssq的models3.3 appweather的models3.4 appweibo的models 4.功能展示5.解决问题5.1 路由配置5.2 后端数据与前端echarts展示5.3 长图表丝滑滚动条 6.遗留问题7.资源分享 1.项目介绍 这里介绍本人最…

excel数据透视

Excel中,数据透视图(PivotChart)和数据透视表(PivotTable)是两个紧密相关的工具,用于分析数据。数据透视表是数据透视图的数据源,也就是说,数据透视图是基于数据透视表中的数据创建的…

判断题无答案22届期末复习

判断: 1-3.结构体变量不能进行整体输入输出。 1-4.不同类型的结构变量之间也可以直接赋值。 1-5假设结构指针p已定义并正确赋值,其指向的结构变量有一个成员是int型的num,则语句 (*p).num = 100; 等价于p->num=1…

Linux下多进程访问同一个共享库处理流程

两个测试程序实现调用同一个SO库: ​​​​​​​ #include <stdio.h> #include "a/a.h" #include <unistd.h> int main() { int a = 4,b = 5; sum(a, b); int ret = get(); printf("ret=%d\n", ret); sleep(100)…

如何用好swoole/webman/workerman/hyperf呢

Webman框架的依赖 "require": { "php": ">7.2", "workerman/webman-framework": "^1.5.0",// "monolog/monolog": "^2.0" }, 依赖的核心框架也是很久的了 webman-framework的核心依赖 &q…

Ubuntu下FastDDS的源码编译和简单测试

FastDDS是eprosima公司开发的DDS&#xff08;Data Distribution Service&#xff09;库&#xff0c;使用的语言是C&#xff0c;自称是"The Most Complete Open Source DDS Middleware"&#xff0c;其官网是https://eprosima.com/&#xff0c;FastDDS源码在https://gi…

【面试干货】HashSet 和 TreeSet 的区别

【面试干货】HashSet 和 TreeSet 的区别 1、实现方式HashSetTreeSet 2、性能添加、删除和查找操作的时间复杂度HashSetTreeSet 3、元素唯一性4、迭代顺序HashSetTreeSet 5、使用场景HashSetTreeSet 6、示例代码 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不…

Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案

初始化数据 */ private void initData(Bundle savedInstanceState) { if (savedInstanceState ! null) mDatas savedInstanceState.getStringArrayList(“mDatas”); if (mDatas null) { mLoadingDialog new LoadingDialog(); mLoadingDialog.show(getFragmentMana…