【软件测试】用例篇 -- 详解(上)

简介: 【软件测试】用例篇 -- 详解(上)

一、测试用例的基本要素

测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。(注意:不需要执行结果,因为执行结果需要执行完测试用例才知道,没有测试用例自然就没有执行结果)

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

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

  • 用例表达清楚,无二义性。
  • 用例可操作性强。
  • 用例的输入与输出明确。一条用例只有一个预期结果。
  • 用例的可维护性好。
  • 用例对需求的覆盖率高。

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

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

(1)使用时带来的困扰

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


(2)能解决的问题

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

二、测试用例的设计方法

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

基于需求设计测试用例是测试设计和开发测试用例的基础第一步就要分析测试需求,验证需求是否正 确、完整、无二义性,并且逻辑自洽。

在需求正确的基础上细化测试需求,从测试需求提炼出一个个测 试点或者测试项,然后根据每一个测试点进行测试用例的设计。

在分析测试需求时,一般分为 功能测试需求 非功能测试需求


【163 邮箱注册】


(1)功能需求测试分析

对于功能测试中,可以借助功能框图来帮助我们进行测试的需求分析。概括起来,功能测试需求包括以下,通常包括以下几个方面:

  1. 系统各个功能界面的验证。
  2. 借助业务把功能串起来进行测试。
  3. 功能的一致性,交互性(多功能互操作)的测试。
  4. 系统的不同输入,结果输出的业务数据测试。
  5. 功能的错误操作,异常操作的测试(属于负面测试)。
  6. 功能实现用到的算法验证,有时需要用运代码评审。
  7. 用户操作的易用性,用户体验,往往结合功能测试同时验证。

针对具体的需求,可以根据业务分类,用户角色(餐厅的会员系统)或者用户操作区域等将系统的功能分解成若干个功能模块,然后按照功能模块分别进行测试需求分析。按照功能模块划分,业务模块划分是最常见的做法。


【日历系统的需求分析】

对日历根据 web 界面的功能布局分析出的功能框图如下:

也可以采用思维导图的方式,更为方便,有效,只管的呈现测试需求的分析结果,可以更好的支持测试分析思路的连贯性。


百度云盘手机端核心功能需求分析】

在进行需求分析的时候,我们还要考虑业务规则如,上传文件的大小有没有限制;一次性崔铎上传多少数量的文件,比如小于 100 个;文件夹最多有多少层等等;


(2)非功能需求测试分析

非功能测试需求主要涉及性能,安全性,可靠性,兼容性,易维护性和可移植性等。从测试需求分析来看,每一类非功能特性测试都需要根据需求单独分析。他们之间可能会存在相互影响,如安全性越高,就越有可能给易用性,性能带来更大的挑战。

这里要说明的是对于每一个应用软件系统,非功能特性的质量需求都是存在的,但是不同的项目类型对各个非功能特性的要求是不一样的,这个需要根据具体的项目、具体需求和不同产品应用的特点进行分析。


a. 纯客户端软件

比如字处理软件(WordPPT),媒体(音频 / 视频)播放软件(电脑自带的)等。这类软件对系统的功能测试要求是最低的,但是对兼容性和稳定性,可移植性有一定的要求。


b. 企业内部的客户端/服务端(C/S)应用系统

比如电子邮件,即时通信系统(飞Q,企业QQ)等,在系统功能测试需求上比纯客户端复杂,要求功能正确,稳定性能好。但是整体上看,对性能,安全性,兼容性要求不高。


c. 外部大型复杂网络应用系统

比如电子商务,网上银行,视频网站(腾讯,优酷)等,除了有复杂的系统的功能测试需求外,在系统的性能,安全性,兼容性,容错性,可靠性等都有很高的要求。

此外,对于大型企业级应用系统,由于应用模式,系统架构的不同(分布式,微服务等),我们必须结合架构和应用模式来具体分析非功能性测试需求,特别是可扩展性,可靠性,安全性等。技术架构对功能的影响小,但是非功能性测试就要深入架构分析,才能更好的把我测试范围和测试方法。


继续举一个例子百度云盘非功能测试的例子:

用户需求:
购买3000块钱以内的华为智能手机
测试用例:
1.价格<=3000元
2.品牌为华为
3.智能手机
4.手机功能验证:
    4-1.打电话
    4-2.接电话
    4-3.发短信
    4-4.收短信
    ...
软件需求:
1.1.1.1.5.3 异常事件流
1. 若用户未收到激活邮件,可在登录界面录入电子邮件及密码后,再次发送激活邮件。
2. 每次发送的激活邮件,仅在发送邮件后起24小时之内有效,超过24小时后需重新发送激活邮件。
**测试用例**
1-1、未收到邮件,登录时输入电子邮件及密码后,再次发送激活邮件
1-2、已收到邮件,登录时输入电子邮件及密码后,不发送激活邮件
 
2-1、收到邮件,未激活,24小时内进行激活
2-2、收到邮件,未激活,24小时后链接过期进行激活。
2-3、收到邮件,已激活,24小时后链接过期,再次点击激活?
页面检查:
1、收到激活邮件
2、邮件内容正确
3、激活URl正确,可激活
4、再次激活提示已激活
5、过期激活提示已过期

2、具体的设计方法

(1)等价类

举例:

原则上讲, 老师应该依据每个学生自身的情况, 指定符合的学习方案。 但是实际上学生太多,老师管不过来, 只能分成几类:

  • 优等生强调知识面的扩展和综合能力的提升;
  • 中等生强调夯实基础,查缺补漏;
  • 差等生强调优先掌握重点,暂时跳过难点
  • ... ...

思路:输入的集合是无穷的, 不能全都覆盖到。

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

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

等价类只考虑输入域的分类,没有考虑输入域的组合,需要其他的设计方法和补充。

【超市买水果】
有效等价类:苹果、梨子、西瓜...
无效等价类:青菜、大米、饮料...
|用户名 | 必填,录入用户名 | 6至15
 
有效等价类:6~15位
无效等价类:小于6位 && 大于15位

等价类思想设计测试用例的步骤:

  1. 充分理解需求
  2. 划分有效等价类和无效等价类
  3. 针对有效等价类和无效等价类中设计测试用例。

(2)边界值

边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。


  • 日常语言中的 “边界” 漏洞:考完试发成绩了, 老师布置寒假作业:超过 60 分的,所有题目抄写 1 遍,低于 60 分的,所有题目抄写 3 遍。于是小明就没有写作业,因为他刚好 60 分。

  1. 输入框长度为 1~11,取边界值为:111120。
  2. 运动员的参赛项目为 1~3 项,取边界值为:0项、1项、3项、4项。
  3. 查询面页面有 999 行,每 50 行为一页,取边界值为:输出0行、1行、50行、51行、999行。

边界点

上点:边界上的点。

内点:边界内的点(不管范围是闭区间开始开区间)。

离点:边界值附近的一个点(闭区间区间外距离上点最近的点,开区间区间内距离上点最近的点)。


(3)因果图

因果图是一种简化了的逻辑图,能直观地表明程序输入条件(原因)和输出动作(结果)之间的相互关系。因果图法是借助图形来设计测试用例的一种系统方法,特别适用于被测试程序具有多种输入条件、程序的输出又依赖于输入条件的各种情况。


A. 因果图的需要掌握的基本知识
a. 恒等

条件为真,结果一定为真。


b.

所有的条件都得满足,如果有一个条件不满足,那么结果就为假。


c. 或

满足其中一个条件结果就为真,如果条件全部为假,那么结果就为假。


d. 非

条件为假,结果才为真。


B. 因果图法设计测试用例的步骤
  1. 分析所有可能的输入和可能的输出。
  2. 找出输入与输出之间的对应关系。
  3. 设计判定表。
  4. 把判定表对应到每一个测试用例。

C. 判定表

判定表(Decision table)是一种表达逻辑判断的工具。


淘宝 618 活动

假设业务单据的处理规则为: 淘宝 618 活动,订单已提交,订单合计金额大于 300 元或有红包,则优惠”

a. 对于这条业务规则,首先通过分析所有可能的输入和可能的输出,可以得到如下结果:

  • 输入:订单已提交、金额大于 300、有红包。
  • 输出:优惠、不优惠。

b. 第二步,找出输入与输出之间的对应关系。通过分析,可以看出有以下的对应关系。

  1. 订单已提交,订单金额大于300元,有红包,则优惠。
  2. 订单已提交,订单金额大于300元,没有红包,则优惠。
  3. 订单已提交,订单金额小于等于300元,有红包,则优惠。
  4. 订单已提交,订单金额小于等于300元,没红包,则不优惠。
  5. 订单不提交,订单金额大于300元,有红包,则不优惠。
  6. 订单不提交,订单金额大于300元,没有红包,则不优惠。
  7. 订单不提交,订单金额小于等于300元,有红包,则不优惠。
  8. 订单不提交,订单金额小于等于300元,没红包,则不优惠。

c. 设计判定表:

d. 把判定表对应到每一个测试用例:

可以在后面补充符合要求的测试要素。


(4)正交排列

因果法设计用例太多怎么办?

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


正交试验设计(Orthogonal experimentaldesign)是研究多因素多水平的一种设计方法,它是根据正交性,由试验因素的全部水平组合中挑选出部分有代表性的点进行试验,通过对这部分试验结果的分析了解全面试验的情况,找出最优的水平组合。正交试验设计是一种基于正交表的、高效率、快速、经济的试验。

  • 因素Factor):在一项试验中,凡欲考察的变量称为因素(变量)。
  • 水平(位级)Level):在试验范围内,因素被考察的值称为水平(变量的取值)。
  • 正交表的构成
  • 行数(Runs)正交表中的行的个数,即试验的次数,N 代表。
  • 因素数(Factors)正交表中列的个数,用 C 代表。
  • 水平数( Levels) 任何单个因素能够取得的值的最大个数。正交表中的包含的值为从 0 到数 水平数 -1” 或从 1 水平数 ,用 T 代表。

A. 正交表的表示形式

L= 行数 ( 水平数 * 因素数 ) L=N(TC)


B. 正交表的两条性质
  1. 每一列各数字出现的次数一样多
  2. 任何两列中的各有序数对出现的次数都一样多

C. 正交法设计测试用例的步骤

充分理解需求(有哪些元素(变量))

-> 确定因素水平(每个因素有哪几个水平(变量的取值)

-> 画正交表(选择一个合适的正交表,把变量的值映射到表中

-> 补充正交表

-> 将正交表转换成测试用例(把每一行的各因素水平的组合作为一个测试用例,加上你认为可疑且没有在表中出现的用例组合

【软件测试】用例篇 -- 详解(下)https://developer.aliyun.com/article/1515761?spm=a2c6h.13148508.setting.32.11104f0e63xoTy

相关文章
|
1月前
|
测试技术
包含用例执行时间的测试报告代码
包含用例执行时间的测试报告代码
|
1月前
|
测试技术
软件测试/测试开发/全日制|Pytest如何灵活地运行用例
软件测试/测试开发/全日制|Pytest如何灵活地运行用例
41 0
|
6月前
|
Java 测试技术 Python
java写班级系统测试用例
python班级系统测试用例
65 2
|
6月前
|
测试技术 网络架构 Python
python班级系统测试用例
python班级系统测试用例
62 1
|
1月前
|
NoSQL 安全 测试技术
接口测试用例设计的关键步骤与技巧解析
该文介绍了接口测试的设计和实施,包括测试流程、质量目标和用例设计方法。接口测试在需求分析后进行,关注功能、性能、安全等六项质量目标。流程包括网络监听(如TcpDump, WireShark)和代理工具(Charles, BurpSuite, mitmproxy, Fiddler, AnyProxy)。设计用例时,需考虑基本功能流程、输入域测试(如边界值、特殊字符、参数类型、组合参数、幂等性)、线程安全(并发和分布式测试)以及故障注入。接口测试用例要素包括模块、标题、优先级、前置条件、请求方法等。文章强调了保证接口的幂等性和系统健壮性的测试重要性。
56 5
|
2天前
|
运维 Java 测试技术
Spring运维之业务层测试数据回滚以及设置测试的随机用例
Spring运维之业务层测试数据回滚以及设置测试的随机用例
3 0
|
1月前
|
小程序 安全 测试技术
【软件测试】用例篇 -- 详解(下)
【软件测试】用例篇 -- 详解(下)
|
1月前
|
测试技术 Python
python编写集成测试用例
【4月更文挑战第21天】
28 1
|
1月前
|
测试技术 数据库 UED
【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
142 1
|
1月前
|
测试技术 iOS开发
pytest Mark标记测试用例
使用`pytest.mark`进行测试用例分组和筛选,如`@pytest.mark.webtest`。通过`pytest -m`参数执行特定标记的用例,例如`pytest -s test_command_param.py -m webtest`。同时,pytest支持内置的skip、skipif和xfail功能来管理特殊用例:skip始终跳过,skipif条件满足时跳过,xfail则标记预期失败的测试。
14 0

热门文章

最新文章