测试开发——用例篇(如何设计一个测试用例,设计测试用例的一些具体方法)(上)

简介: 测试开发——用例篇(如何设计一个测试用例,设计测试用例的一些具体方法)(上)

一、测试用例的基本要素

先来回顾测试用例的概念:

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

好的测试用例是一个不熟悉业务的人也能依据用例来很快的进行测试

评价测试用例的标准:对比好坏用例的评价标准

用例表达清楚,无二义性。。

用例可操作性强。

用例的输入与输出明确。一条用例只有一个预期结果。

用例的可维护性好。

用例对需求的覆盖率高


测试用例的给我们带来的好处

  • 测试执行者的依据
  • 使得工作可重复,自动化
  • 试的基础
  • 评估需求覆盖率
  • 用例的复用
  • 积累测试的方法思路以供后续借鉴


测试用例的设计是费时费力的工作,往往设计测试用例所花费的时间比执行所花费的时间还多

测试用例的设计解决如下问题:


  • 不知道是否较全面的测试了所有功能
  • 测试的覆盖率无法衡量
  • 对新版本的重复测试很难实施
  • 存在大量冗余测试影响测试效率


二、设计测试用例的万能公式 (在没有需求文档的情况下)

31cba5915ea0409ca6872c0997e0d8a4.png

功能测试:产品是否实现了预期的功能


性能测试:功能测试没有问题,不代表性能好(网站速度、流畅的)


界面测试:布局、每个元素的大小、颜色、材质


兼容性测试:软件的不同版本、打开网站所用的不同浏览器

不同的系统版本、数据兼容性(不同版本数据是否展示正确且相同)

易用性测试:产品是否容易上手、提升文字(登陆时)、打开软件的操作步骤提示

安全测试:产品网站系统,用户信息,页面数据展示的是是否恰当和合适

(用户的隐式数据)

登录时候是否加密

接口返回值—SQL注入

越权问题(垂直越权和水平越权):权限、管理员、普通用户

不同的角色对应不同的功能


1、水杯的测试用例


a78b012c72234eb2afc8fde506e9ea52.png

2、一个网站的登录测试用例


686cedab8df746ceb94ad26c35926462.png

37ff26c357f74ca4999955f1adc4c161.png


三、基于需求进行测试用例的设计

1、功能需求测试分析

2、非功能需求测试分析

详见测试 - 用例篇 - 细节狂魔_Dark And Grey的博客-CSDN博客_测试用例实战


四、测试用例的具体设计方法(根据需求)

实际上,在企业中我们往往都是根据需求文档来编写测试用例的,下面我们就来看看设计测试用例的具体方法。

1、等价类

  • 无效等价类
  • 有效等价类


例子

登录密码要求6<=密码长度<=18

有效等价类——测试密码长度为10

无效等价类——测试密码长度为4、20


69ee101962a441889f5ffddd901d108b.png


2、边界问题

边界值——》有效边界+无效边界

还是上面的例子,测试密码长度为6、18位数的(有效边界)

无效边界为5、19长度的密码

边界是最容易出现问题的(我们程序一个不小心,就会出现边界问题)


ffc2b0c2d66640969c2157252c97b13c.png


这个时候,如果我们不测试边界的话,就会出现问题。


3、判定表(因果图,使用场景较少)

使用场景比较少

使用场景:输入条件的组合对应不同的结果

判定表设计测试用例的步骤


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


🌰例子


当订单使用了红包或优惠金额大于300元,则该订单是优惠订单,否则不是。


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


输入条件:使用红包、优惠金额大于300元、订单已提交

输出条件:优惠订单、非优惠订单


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

输入条件之间的组合与输出条件的关系

所有的可能的组合情况

空——》非优惠订单

使用红包(没提交)——》非优惠订单

优惠金额大于300(没提交)——》非优惠订单

订单提交——》非优惠订单

使用红包+订单提交——》优惠订单

优惠大于300+订单提交——》优惠订单

使用红包+优惠大于300(没提交)——》非优惠订单

使用红包+优惠大于300+订单提交——》优惠订单


3、画判定表


405326647f9f4106b68e578f3a1dad73.png

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

1、无红包,优惠金额小于等于300元,订单未提交,该订单为非优惠订单

2、有红包,优惠金额小于等于300元,订单未提交,该订单为非优惠订单

3、无红包,优惠金额大于300元,订单未提交,该订单为非优惠订单

4、无红包,优惠金额小于等于300元,订单提交,该订单为非优惠订单

5、有红包,优惠金额小于等于300元,订单提交,该订单为优惠订单

6、无红包,优惠金额大于300元,订单提交,该订单为优惠订单

7、有红包,优惠金额大于300元,订单未提交,该订单为非优惠订单

8、有红包,优惠金额大于300元,订单提交,该订单为优惠订单


网上大部分书籍和资料把这种方法叫做因果图,其实上面所说的判定表和所谓的因果图是很相似的 ,只不过因果图多了一步叫做 ”画因果图“ (非常难,且没有一个明确的且具体的画法)


4、场景设计法(不常见)

思路引导的作用——》告诉我们不能完全参照需求文档上写的基本流程,要尽可能多的设计可能存在的意想不到的流程


比如我们去ATM取款机过程


基本事件流(主流程)


插卡——》输入密码——》选择取款功能——》输入金额——》取钞票——》退卡


备选事件流(其他流程)


卡插不进去(插卡过程中)

密码输入错误(输入密码过程中)

选择了其他功能(选择功能过程中)

输入金额的限制(输入金额过程中)

钱出不来、钱出来了没人取(取钞票过程中)

卡退不出来、卡出来了没人取(退卡过程中)


编写测试用例

基本事件流的用例

插卡——》输入密码——》选择取款功能——》输入金额——》取钞票——》退卡


备选事件流的用例


插卡——》卡插不进去——》。。。。——》退卡

插卡——》输入密码——》密码输入错误——》。。。——》退卡

插卡——》输入密码——》选择了其他功能——》。。。。——》退卡

插卡——》输入密码——》选择取款功能——》输入金额——》输入金额的限制——》。。。——》退卡

。。。。。

5、正交法(用的比较少)

正交实验法指从打大量的实验中中挑选出适量的、有代表性的点,依据”正交表“从而合理的设计出测试用例。

回顾一下我们上面讲的判断表里:3个输入条件、2个输出条件,给出来8个测试用例()


🍑正交表的概念和特性

那么所谓的正交表是什么呢?

下面就一个正交表的例子。


337ea7b3448f4eb797cbbdf101b11940.png

该正交表可表示为,它表示需作9次实验,最多可观察4个因素,每个因素均为3水平

实验次数好理解,但因素和水平又是什么东东?


🌰举个例子


9d2b9aa0473747f6a1276def0023813e.png

 正交表的特性


c89861321f1b4a4998abd834f183dbcd.png

🍑根据正交表设计测试用例

整体步骤如下

1、找出因素数和水平数

2、生成正交表(用到了allpairs)

3、根据正交表来编写测试用例

4、补充可能存在遗漏但是非常重要的测试用例


比如我们要针对一个网站的用户注册页面来设计一个测试用例

0db471ae8c874ab1b286ca8bfd10d0f5.png



相关文章
|
27天前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
45 1
|
26天前
|
测试技术 UED
软件测试中的“灰盒”方法:一种平衡透明度与效率的策略
在软件开发的复杂世界中,确保产品质量和用户体验至关重要。本文将探讨一种被称为“灰盒测试”的方法,它结合了白盒和黑盒测试的优点,旨在提高测试效率同时保持一定程度的透明度。我们将通过具体案例分析,展示灰盒测试如何在实际工作中发挥作用,并讨论其对现代软件开发流程的影响。
|
17天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
32 2
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
61 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
9天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
39 3
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
59 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
240 7
Jmeter实现WebSocket协议的接口测试方法
|
2月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
251 3
快速上手|HTTP 接口功能自动化测试
|
2月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
48 5
|
1月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
40 0