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

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

一、测试用例的基本要素

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

测试用例(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



相关文章
|
1月前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
57 4
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
50 6
|
2月前
|
JavaScript 安全 编译器
TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法
本文深入探讨了 TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法,并通过实际案例展示了其在项目中的应用效果,旨在提升代码质量和开发效率。
64 6
|
2月前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
460 2
|
5天前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
5天前
|
存储 测试技术 数据库
接口测试工具攻略:轻松掌握测试技巧
在互联网快速发展的今天,软件系统的复杂性不断增加,接口测试工具成为确保系统稳定性的关键。它如同“翻译官”,模拟请求、解析响应、验证结果、测试性能并支持自动化测试,确保不同系统间信息传递的准确性和完整性。通过Apifox等工具,设计和执行测试用例更加便捷高效。接口测试是保障系统稳定运行的第一道防线。
|
5天前
|
Web App开发 JSON 测试技术
API测试工具集合:让接口测试更简单高效
在当今软件开发领域,接口测试工具如Postman、Apifox、Swagger等成为确保API正确性、性能和可靠性的关键。Postman全球闻名但高级功能需付费,Apifox则集成了API文档、调试、Mock与自动化测试,简化工作流并提高团队协作效率,特别适合国内用户。Swagger自动生成文档,YApi开源但功能逐渐落后,Insomnia界面简洁却缺乏团队协作支持,Paw仅限Mac系统。综合来看,Apifox是国内用户的理想选择,提供中文界面和免费高效的功能。
|
1月前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
103 11
|
2月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
83 3
|
3月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
95 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)

热门文章

最新文章