如何设计测试用例以及常用的黑盒测试方法

news2024/11/28 0:43:55

目录

如何设计测试用例?

设计测试用例的万能公式

①功能测试 (用户的基本功能需求)

②性能测试

③易用性(考虑用户体验)测试 

④兼容性测试

⑤界面(UI,外观)测试 

⑥安全测试 

常用黑盒测试方法

①等价类划分法

②边界值分析法

③判定表分析法(因果分析法)

1、确认输入条件和输出条件

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

3、画判定表 

4、根据判断表书写测试用例 

判断表分析法的优势: 

④正交法 

⑤场景设计法(了解) 

基本事件流:

备用事件流:

⑥错误猜测法(了解,这个方法主要是靠测试的经验) 

如何针对代码进行测试用例的设计 

①从参数上进行测试 

②从代码逻辑上进行测试

③从代码性能上面进行测试 

④考虑运行的异常情况 


如何设计测试用例?

测试用例就是测试人员向被测试系统提供的一组测试数据。

它包含了测试环境,测试步骤,测试数据,预期结果等等 

那么我们如何来设计测试用例?

记住两能(功能,性能),两性(易用性,兼容性),界面(UI,外观),安全 

设计测试用例的万能公式

我们以网页的一个登录页面来进行设计测试用例; 

①功能测试 (用户的基本功能需求)

如登录页的基本功能:登录,找回密码,二维码登录,记住密码,记住账号等等。

设计出来的测试用例可以是这样:

②性能测试

对于非软件来说,性能可以有耐寒性,耐高温性,耐腐蚀性,保温性,使用寿命,抗压性,耐摔性等等很多。对于我们软件来说,需要经常考虑这几个方面;

1、响应时间(1s以内或者2s以内)

2、多个用户同时访问,服务器是否响应,或者响应时间等等 

如登录页:

③易用性(考虑用户体验)测试 

易用性主要是考虑用户的使用体验,要适合用户去使用,千万不能搞的不当人的那种。

如:关键功能是否容易看到,操作起来是否方便,必要的功能是否会有提示,是否有使用教程等等 

如登录页:

④兼容性测试

常见的兼容性有以下几个:

1、各个版本的操作系统是否兼容?

2、能否在各个浏览器上面兼容?

3、运行的环境:PC端,微信端,移动端等等。

4、能否在各个版本的浏览器、操作系统上面运行。

5、能否在不同分辨率下兼容

如果是物体,比如说水杯,它的兼容性可以考虑,水杯能否装一些饮料,装一些其他液体等等,你要是想要用水杯泡泡面,你可以试一试(手动滑稽) 

比如登录页:

⑤界面(UI,外观)测试 

对于物体来说就是外观,比如形状,颜色,大小,图案等等方面 

而对于我们软件来说主要有以下几个方面:

1、页面布局是否合理

2、页面是否有错别字,病句

3、 文本框/输入框大小形状颜色等等是否合理

4、界面的设计是否符合页面的需求

5、密码等隐私信息是否支持密文等等

如登录页:

  

⑥安全测试 

对于物体而言是在使用过程中可能出现的安全隐患,如爆炸,发生化学反应,高温,有毒物质等等。

对于我们软件而言主要有以下几个方面:

1、是否存在SQL注入

2、是否存在XSS漏洞

3、是否存在脚本攻击

4、是否有权限设置,用户信息认证,人脸识别

5、接口安全,私密信息以及参数是否进行加密 

这里放一个完整的登录页面的测试用例设计(个人小白书写):

  

常用黑盒测试方法

首先最基本的一种测试方法时根据需求来进行测试用例的设计。这种方法是比较单一的方法,如果只根据需求来进行测试用例的设计难免会有很多地方考虑不到。所以我们引入使用黑盒测试的一些方法来进行弥补(注意:所以的测试用例设计的根本在于需求) 

①等价类划分法

等价类简单来说就是将数据划分集合,也就是将输入划归为不同的等价类,从每一个等价类中抽取数据进行输入,如果结果满足需求则为有效等价类,否则为无效等价类,这样可以达到用少量的测试用例完成尽量多的功能覆盖的目的,解决了不能穷举测试用例的问题。

等价类的划分无非就两种情况:有效等价类、无效等价类 

比如登录页面用户名限定长度6-15位,那么6位及以上,15及以下的都为有效等价类,其余的是无效等价类,如果还不明白,那么我们去超市买水果,葡萄,草莓,西瓜就是有效等价类,白菜,土豆,大米就是无效等价类。

②边界值分析法

通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界 

其主要的测试点 是对“输入”或“输出”的“边界”值进行测试 

这里说一下几个边界值的概念

1、上点:边界上的点(不关区间的开闭)

2、内点:边界内的点

3、离点:上点附近的点(当上点为闭区间的点时,离点为该点的外侧,当上点为开区间的点,离点为该点的内侧)

举例;

③判定表分析法(因果分析法)

因果图也是黑盒测试中常用的一个方法,它主要用于测试有多种输入,并且结果会依赖于输入的情况而有所不同的场景。因果图就是一个带有输入(不同情况),和相应的输出的一个图,输入是因,输出是果,在因果图中常用到以下几个逻辑:

恒等:输入为真,输出为真

:所有输入都为真,输出才为真

:输入中有一个为真,则结果为真

:输入为真,结果为假,输入为假,结果为真

判定表分析法设计测试用例的步骤: 

现在用一个功能需要测试:

用户名长度在大于15的时候,提示用户名过长。

用户名长度在小于6位的时候,提示用户名过短。 

1、确认输入条件和输出条件

输入条件:

条件一:输入用户名长度在6-15位

条件二:输入用户名大于15位

条件三:输入用户名小于6位

输出条件: 

1、用户名通过

2、用户名不通过

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

条件一输出1

条件二输出2

条件三输出2

3、画判定表 

4、根据判断表书写测试用例 

测试用例1:用户名长度在6-15位,用户名通过

测试用例2:用户名长度>15位,用户名不通过

测试用例3:用户名长度<6位,用户名通过

判断表分析法的优势: 

特别适用于需要考虑输入输出之间的组合关系,不同的组合对应的输出结果不一致的情况。 

不画因果图的原因:因果图画判定表显得比较多余,实际情况下在判定表中根据输入输出就可以得到测试用例了。 

④正交法 

正交法的目的是为了减少用例数目。用尽量少的用例覆盖输入的两两组合。

这里以一个需求为例:

注册:用户名,邮箱,密码,确认密码,验证码 

在这里面:

因素(输入条件) :用户名,邮箱,密码,确认密码,验证码 

水平(输入条件的可选项) :输入条件中可填写,可不填写

用正交法的时候我们需要借助一个工具来实现正交表

下载allpairs:官网下载https://www.satisfice.com/download/allpairs# 

下载即可。

然后在Excel中填写因素和水平:

填写完成后在allpairs下新建一个txt文件:20230511.txt 

然后把Excel中数据复制进去:

保存后打开cmd切换到allpairs在的目录:

然后输入allpairs.exe 20230511.txt > 20230511_result.txt

正交表就出现在 20230511_result.txt中了

这部分就是我们要的正交表: 

 使用allpairs生成的内容,不一定完整。于是,还需要新增一些其他的测试用例。

比如这个还需要补充所有输入都不填写的情况。

⑤场景设计法(了解) 

主要分为基本事件流和多个备用事件流。 

基本事件流:

对于一个场景的最基本的事件流。

备用事件流:

对于一个业务可能发生异常情况的场景进行测试。

⑥错误猜测法(了解,这个方法主要是靠测试的经验) 

这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个人的经验和直觉。 

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

如何针对代码进行测试用例的设计 

例如:冒泡排序

private static void bubble(int[] array) {

        for(int i=0;i<array.length;i++){
            for(int j=0;j<array.length-1-i;j++){
                if(array[j]>array[j+1]){
                    int tmp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=tmp;
                }
            }
        }
    }

①从参数上进行测试 

如等价类划分法:

有效等价类:参数是int数组 

无效等价类:参数是float数组,String数组,double数组,字符串,集合等等

②从代码逻辑上进行测试

判断for循环的执行,以及嵌套循环的执行和条件语句的判断及执行。 

③从代码性能上面进行测试 

数组过大的情况?时间复杂度,空间复杂度等等

④考虑运行的异常情况 

传入参数后运行是否异常 

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

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

相关文章

MySQL_4 常见函数汇总及演示

目录 一、统计函数 1.基本语法 : 2.代码演示 : 演示Ⅰ—— 演示Ⅱ—— 二、合计函数 1.基本语法 : 2.代码演示 : 三、平均函数 1.基本语法 : 2.代码演示 : 四、最值函数 1.基本语法 : 2.代码演示 : 五、字符串函数 1.常用字符串函数 : 2.代码演示 : 六、数学…

Linux基础学习---6、系统定时任务、软件包管理、虚拟机克隆

1、系统定时任务 1.1 crontab 服务管理 1、重新启动crond服务1.2 crontab 定时任务设置 1、基本语法crontab [选项] 2、选项说明选项功能-e编辑crontab定时任务-l查询crontab任务-r删除当前用户所有的crontab任务 3、参数说明 &#xff08;1&#xff09;进入crontab编辑页面…

SpringSecurity 快速入门

1. 认证授权概述 1.1 认证授权概念 1.1.1 认证 在互联网中&#xff0c;我们每天都会使用到各种各样的APP和网站&#xff0c;在使用过程中通常还会遇到需要注册登录的情况&#xff0c;输入你的用户名和密码才能正常使用&#xff0c;也就是说成为这个应用的合法身份才可以访问…

项目开发工具【EditorConfig,Prettier,ESLint,Git Husky,Commitizen,Commitlint】

项目开发工具【六款】 前言 六款插件让你项目更加的规范✨✨✨ EditorConfig&#xff1a;为不同编辑器上处理同一项目的多个开发人员维护一致的编码风格Prettier&#xff1a;一款强大的代码格式化工具&#xff0c;是当下前端最流行的代码格式化工具ESLint&#xff1a;查找潜在…

图像增强库albumentations(v1.3.0, 2023.5)中所有图像增强方法记录(class)

整体概要 变换类型具体类模糊/噪声AdvancedBlur*&#xff0c;Blur*&#xff0c;Downscale*&#xff0c;Defocus*&#xff0c;GlassBlur*&#xff0c;GaussianBlur*&#xff0c;GaussNoise*&#xff0c;ImageCompression*&#xff0c;ISONoise*&#xff0c;MultiplicativeNoise…

MySQL基础-SQL介绍

本文介绍MySQL中SQL通用语法&#xff0c;包括&#xff1a;DDL&#xff0c;DML&#xff0c;DQL&#xff0c;DCL 文章目录 SQL分类DDL&#xff08;数据定义语言&#xff09;数据库操作表操作 DML&#xff08;数据操作语言&#xff09;添加数据更新和删除数据 DQL基础查询条件查询…

Linux sed流编辑器

sed流编辑器 sed是一种流编辑器&#xff0c;流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据&#xff0c;这些命令要么从命令行中输入&#xff0c;要么存储在一个命令文本文件中。 sed 的工作流程主要包括读取…

智能的本质人工智能与机器人领域的64个大问题阅读笔记(二)

目录 如果一个人不能理解所说语言的全部信息&#xff0c;那么说这种语言也是没有意义的。 “20年内&#xff0c;机器将能够胜任人类承担的所有工作”&#xff08;赫伯特西蒙&#xff0c; 1965&#xff09;。 以及21世纪的人类愿意相信超智能机器时代的到来&#xff0c;与前几…

项目中大批量数据查询导致OOM

项目中有时候一次性将大批量数据都查出来到内存中导致内存占用过多很可能会导致内存溢出 问题复现 搭建一个本地项目。需求描述&#xff1a;查询表call_task中待拨打的数据进行拨打&#xff0c;call_task中一次可能会有大批量数据需要处理。本次准备了1万条数据。 /*** 查询…

【Java校招面试】基础知识(九)——Redis

目录 前言一、基础概念二、Redis持久化三、Redis分布式存储后记 前言 本篇主要介绍Redis数据库的相关内容。 “基础知识”是本专栏的第一个部分&#xff0c;本篇博文是第九篇博文&#xff0c;如有需要&#xff0c;可&#xff1a; 点击这里&#xff0c;返回本专栏的索引文章点…

(c语言实现)数据结构链表oj题(2)

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:分析力扣中有关链表的部分题目. 目录 前言一、链表中倒…

HTML第二天

第二天 表格 表格的主要作用 1.表格主要用于显示、展示数据&#xff0c;因为它可以让数据显示的非常的规整&#xff0c;可读性非常好。特别是后台展示数据的时候&#xff0c;能够熟练运用表格就显得很重要。一个清爽简约的表格能够把繁杂的数据表现得很有条理2.表格不是用来…

Java基础知识:1,DOS命令

1&#xff0c;盘名称 加 : 进入该盘目录下 例如&#xff1a;e: 进入e盘 2&#xff0c;dir 查看当前路径下文件和文件夹 3&#xff0c;md 文件夹名字 》 创建文件夹&#xff08;md后要加空格&#xff09; &#xff08;md make directory&#xff09; 4&#xff0c;c…

Oracle11g下载与安装

一、Oracle11g下载 官网下载地址&#xff1a;Oracle Database 11g Release 2 for Microsoft Windows (x64) 选择"Accept License Agreement"&#xff0c;点击"win64_11gR2_database_1of2.zip"和"win64_11gR2_database_2of2.zip"&#xff0c;进行…

Debian11之 K3s 部署K8S集群

K3S 架构方案 Server 节点指的是运行 k3s server 命令的主机&#xff0c;control plane 和数据存储组件由 K3s 管理Agent 节点指的是运行 k3s agent 命令的主机&#xff0c;不具有任何数据存储或 control plane 组件Server 和 Agent 都运行 kubelet、容器运行时和 CNI 基于 …

GPUAnimation的Mesh动画烘焙到贴图,学习笔记

0.动画烘焙贴图工具作者 Unity-GPU Animation - 知乎 1.安装学习项目 GitHub - striter/Unity3D-ToolChain_StriteR 复制到URP项目中&#xff0c;并删掉多余报错的和GPUAnimation无关的模块 2.把学习项目中的HLSL搬到低版本Unity的CG版本 安装FBX Exporter把烘焙好的mesh导…

【秒杀系统】高并发编程入门学习

文章目录 一、秒杀系统的基本构成二、秒杀系统的常见问题三、秒杀系统的解决技术 一、秒杀系统的基本构成 二、秒杀系统的常见问题 高并发 大量的请求进来&#xff0c;在Redis缓存层会发生缓存雪崩 缓存击穿 缓存穿透这些问题&#xff0c;这些问题就会打挂MySQL。这样就会导致…

23种设计模式之建造者模式(Builder Pattern)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将23种设计模式中的建造者模式&#xff0c;此篇文章为一天学习一个设计模式系列文章&#xff0c;后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬…

C++ STL 之 list 的模拟实现

文章目录 &#x1f4cd;前言&#x1f308;STL之list的模拟实现&#x1f388;list_node节点的定义&#x1f388;iterator迭代器&#x1f56f;️构造函数&#x1f56f;️*it&#x1f56f;️->&#x1f56f;️it/it&#x1f56f;️it--/--it&#x1f56f;️! / &#x1f388;l…

[MAUI程序设计]界面多态与实现

文章目录 需求一&#xff1a;在不同设备上使用不同 UI 外观定义控件 UI 外观基于平台自定义配置 需求二&#xff1a;在不同数据类别中使用不同的 UI 外观定义视图 UI 外观创建数据模板创建选择器定义数据 需求三&#xff1a;在不同数据状态中使用不同的 UI 外观使用绑定模型更改…