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

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

一、测试用例的基本要素

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

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



相关文章
|
12天前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
29 4
|
20天前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
26 6
|
23天前
|
JavaScript 安全 编译器
TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法
本文深入探讨了 TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法,并通过实际案例展示了其在项目中的应用效果,旨在提升代码质量和开发效率。
35 6
|
1月前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
129 2
|
安全 Java 测试技术
python接口自动化(三)--如何设计接口测试用例(详解)
上篇我们已经介绍了什么是接口测试和接口测试的意义。在开始接口测试之前,我们来想一下,如何进行接口测试的准备工作。或者说,接口测试的流程是什么?有些人就很好奇,接口测试要流程干嘛?不就是拿着接口文档直接利用接口 测试工具测试嘛。其实,如果只是三五个接口,你可以这么做一个临时的接口测试。但是,如果是上百个接口,或者,你们公司的这个项目,第一次做接口测试,那么,我们还是很有必要严格遵守接口测试的流程。
365 0
python接口自动化(三)--如何设计接口测试用例(详解)
|
测试技术
正交试验测试用例设计及工具推荐
在科研和生产实践中,人们往往要做许多次实验来进行某项研究。实验条件一般包括很多因素,当因素的值不同时,实验的结果也不一样。如果想把每个因素的每个值都要实验一遍,总实验数就等于各因素的值的个数的乘积,而这个数往往很大,超过了可接受的成本。 例如,假设某个实验由A,B,C,D四个因素,每个因素都有10个不同的取值,那么如果想把每个因素都考虑到,我们需要做 10*10*10*10=10000次实验。 为了减少实验数目,我们必须选出那些最有代表性的例子。于是,就要用到了正交表法(Orthogonal Array Testing Strategy)。
350 0
正交试验测试用例设计及工具推荐
|
算法 安全 测试技术
【软件测试】测试用例的设计方法
测试用例写的过于简单,则可能失去了测试用例的意义,设计过于简单的测试用例其实并没有真正的进行设计,只是把需要测试的功能模块记录下来而已,它的作用仅仅是在测试过程中作为一个简单的测试计划,提醒测试人员测试的主要功能包括哪些而已,测试用例设计的本质应该是在设计的过程中理解需求,检验需求,并把对软件系统的测试方法的思路记录下来,以便指导将来的测试
【软件测试】测试用例的设计方法
|
安全 中间件 测试技术
【面试高频】给你一句话需求,让你设计测试用例,该怎么做?
【面试高频】给你一句话需求,让你设计测试用例,该怎么做?
【面试高频】给你一句话需求,让你设计测试用例,该怎么做?
|
消息中间件 缓存 中间件
【测试基础】二、我好像真的不会设计“好的”测试用例
【测试基础】二、我好像真的不会设计“好的”测试用例
【测试基础】二、我好像真的不会设计“好的”测试用例
|
算法 Java 测试技术
边界值分析法测试用例设计实例
边界值分析法是黑盒测试的重要方法,本文以一道数位DP算法题为例,自主测试黑盒测试用例,并采用JUnit5完成单元测试。
191 0

热门文章

最新文章