一. 软件测试的基本要素

1. 什么是测试用例

是为了实施测试而向被测的系统提供的一组集合,这组集合包含:测试环境、测试步骤、测试数据、预期结果

2. 评判测试用例的标准

1) 用例表达清楚
2)用例可操作性强
3)用例的输入与输出明确,一条用例只有一个测试结果
4)用例的可维护性好
5)用例对需求的覆盖率高
6)暴露程序bug的能力强

下面是一个测试用例:

二. 测试用例带来的影响

1. 测试用例带来的好处

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

2. 测试用例使用中带来的困扰:

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

3. 测试用例解决的问题:

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

三.测试用例的设计方法

1. 测试用例的总体设计方法

基于需求的设计 :

  • RBT(Requirements-Based Testing)是基于需求的测试方法,会使测试更加有效,因为他是测试专注于质量问题产生的根源,即需求

  • 基于需求的测试是一种最根本的软件测试,重点关注以下两大关键问题
    1)验证需求是否正确、完整、无二义性,并且逻辑一致
    2)要从 ” 黑盒 ” 的角度,设计出充分并且必要的测试集,以保证设计和代码都能完全符合需求

2.具体的设计方法

2.1 等价类

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

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

  • 无效等价类 —— 根据程序的需求规格说明书,不满足需求的集合

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

2.2边界值

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

eg1:

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

eg2:
以注册邮箱的软件需求为例子
用户名要求长度为6-15位
边界值上点为:5,6,15,16 全了吗?
在实际的测试设计中,会将等价类和边界值结合起来使用
那么我们最终可以确认的用例设计为: 5,6,10,15,16五个长度的字符的输入值
继续思考:这样的测试真的完整了么?中文?半角?全角?特殊字符(扩散思维)

2.3因果图

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

因果图需要掌握的基本知识:

  • 恒等




  • 因果图法设计测试用例的步骤如下:
    1)分析所有可能的输入和可能的输出。
    2)找出输入与输出之间的对应关系。
    3)画出因果图。
    4)把因果图转换成判定表。
    5)把判定表对应到每一个测试用例。

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

  1. 对于这条业务规则,首先通过分析所有可能的输入和可能的输出,可以得到如下结果:
    输入:订单已提交、金额大于300、有红包。
    输出:优惠、不优惠
  2. 然后,进行第二步,找出输入与输出之间的对应关系。通过分析,可以看出有以下的对应关系。
    (1)订单已提交,订单金额大于300元,则优惠。
    (2)订单已提交,订单金额小于等于300元,无红包,不优惠
    (3)订单已提交,有红包,则优惠。
    (4)订单已提交,订单金额大于300元,有红包,则优惠。
    (5)订单未提交,不优惠。
  3. 为了方便画出因果图和判定表,需要对所有输入和输出编号,现在编号如下。
    1:订单已提交。
    2:订单金额大于300元。
    3:有红包
    21:优惠
    22:不优惠
  4. 画因果图
  5. 画判定表:有三个条件,输出有2个取值,所以表的列数为2 * 2 * 2 = 8
  6. 最终的测试用例
    1,2,3,4,5(包含6,7,8)

因果法设计测试用例可以帮助测试人员理清输入和输出的关系,但是对于比较复杂的输入和输出,会耗费大量时间

2.4 正交排列

因果发设计用例太多怎么办? ——>正交法
正交法的目的就是为了减少用例数目。用尽量少的用力覆盖输入的两两组合

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

  • 正交表构成:
    行数(Runs) : 正交表中行的个数,即实验的次数,用N表示
    列数(Factors) : 正交表中列的个数,也叫因素数,用C代表
    行数计算方法:(水平数-1)*因素数+1

  • 几个基本概念:
    因素(Factor) : 在一项实验中,凡是要考察的变量都称为因素
    水平(Level) : 也叫位级,在试验范围内,因素被考察的值称为水平
    水平数(Levels) : 任何单个因素能够取得的值得最大个数,用T表示

  • 正交表的表示形式: L = N(TC)

  • 正交表的两条性质:
    1)每一列中各数字出现的次数一样多
    2)任何两列所构成的有序数对出现的次数一样多

  • 正交法设计测试用力的步骤:
    1)有哪些因素(变量)
    2)每个因素有哪几个水平(变量的所有可能取值)
    3)选择一个合适的正交表
    4)把变量的值映射到表中
    5)把每一行的各因素水平的组合作为一个测试用例
    6)加上你认为可疑并且没有在表中出现的用例组合

eg4
继续以注册为例(类似工具可以使用微软的PICT工具):

  1. 因素:姓名、邮箱、密码、确认密码、验证码
  2. 水平:填写、不填写
  3. 这里选择了L6_2_5。正交表不是随便选择的,而是设计好的
  4. 生成测试用例
  5. 增补测试用例
    姓名、邮箱、密码、确认密码、验证码都不填写
2.5 场景设计法

现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,使测试用例更容易理解和执行。

典型的应用是是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务感觉,从而避免陷入功能细节忽视业务流程要点的错误倾向

eg5
以注册为例

想象注册的场景来设计用例,这与根据需求的业务流来设计差不多。主要是想象各种业务流来设计用例。例如我们 可以再想象以下场景:

  1. 用户激活后再次点击邮件激活链接?
  2. 已注册用户再次注册?
2.6 错误猜测法

错误猜测法是经验丰富的测试人员喜欢使用的一种测试方法。

基于经验和直觉,找出程序中你认为可能出现的错误,有针对性地设计测试用例。经验可能来自于在对某项业务的测试较多,也可以来自于售后用户的反馈意见,或者从故障管理库中整理bug。梳理出产品以往哪些地方容易出现问题,问题越多的地方,潜在的bug也就越多。

eg6
以注册为例

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

3. 什么是测试用例的有效性

  1. 测试用例对应的功能已删除,不可操作了

微信刚出来时与QQ可互发消息,下一个版本后就不可以发消息。

  1. 执行一条测试用例未发现BUG,实际该处有BUG

苹果7手机微信添加了mobile单车小程序,扫码不能开锁,只能使用mobile APP开锁,测试用例未涉及到苹果7微信小程序扫码开锁。

  1. 执行一条测试用例发现了BUG

苹果7手机微信添加了mobile单车小程序,用例已写到了苹果7微信添加mobile小程序扫码开锁,问题被发现

  1. 执行一条测试用例未发现BUG,实际该处BUG已修改

苹果7手机微信添加了mobile单车小程序扫码开锁,可以正常开锁

四. 测试用例的粒度和评价

1. 测试用例的粒度

粒度: 测试用例编写的详细程度

测试用例可以写得很简单,也可以写得很复杂:

  • 测试用例写得过于复杂或详细,会带来两个问题:一个是效率问题,另一个是维护成本问题。另外,测试用例设计得过于详细,留给测试执行人员的思考空间就比较少,容易限制测试人员的思维。

  • 测试用例写得过于简单,则可能失去了测试用例的意义。过于简单的测试用例设计其实并没有进行“设计”,只是把需要测试的功能模块记录下来而已,它的作用仅仅是在测试过程中作为一个简单的测试计划,提醒测试人员测试的主要功能包括哪些而已。测试用例的设计的本质应该是在设计的过程中理解需求,检验需求,并把对软件系统的测试方法的思路记录下来,以便指导将来的测试

  • 大多数测试团队编写的测试用例的粒度介于两者之间。而如何把握好粒度是测试用例设计的关键,也将影响测试用例设计的效率和效果。应该根据项目的实际情况、测试资源情况来决定设计出怎样粒度的测试用例。

主要考虑可以参考如下内容:

  • 产品的质量要求
  • 项目对用例的要求
  • 测试时间和资源是否充分

2. 测试用例的评审

  • 同行评审
    测试用例的检查可以有多种方式 但是最敏捷的应当属临时的同行评审。同行评审,尤其是临时的同行评审,应该演变成类似结对编程一样的方式。从而体现敏捷的“个体和交互比过程和工具更有价值”,要强调测试用例设计者之间的思想碰撞,通过讨论、协作来完成测试用例的设计,原因很简单,测试用例的目的是尽可能全面地覆盖需求,而测试人员总会存在某方面的思维缺陷,一个人的思维总是存在局限性。因此需要一起设计测试用例。
  • 用户检查
    除了同行评审,还应该尽量引入用户参与到测试用例的设计中来,让用户参与评审,从而体现敏捷的“顾客的协作比合同谈判更有价值”这一原则。这里顾客的含义比较广泛,关键在于如何定义测试,如果测试是对产品的批判,则顾客应该指最终用户或顾客代表(在内部可以是市场人员或领域专家);如果测试是被定义为对开发提供帮助和支持,那么顾客显然就是程序员了。
  • 项目组评审
    由测试负责人组织协调开展会议,用例编写人对用例进行讲解,参会人员有异议的当场提出

3. 面试案例

eg7

  • ”某手机软件有用TF卡导出数据的功能,请写出测试此功能点的思路”

软件测试用例篇总结概述相关推荐

  1. 软件测试用例篇(1)-------针对非软件产品进行测试

    假设我们现在根据门锁来进行测试: 一)从功能测试的角度来说:开门,关门,上锁,不上锁 1)没加锁,门里面,门外面都是可以进行开门的: 2)没加锁,门里面,门外面都是可以进行关门的: 3)门上锁之后,外 ...

  2. 软件测试用例篇(4)

    测试知识回顾: 我们想要根据需求来写测试用例,首先要保证的需求的合理性和正确性,首先要验证需求,需求合理,理解需求,细化需求,把大需求细化成小需求,根据每一个小需求提炼出功能点根据每一个功能点来发散的 ...

  3. 软件测试用例篇(5)

    测试是否运行代码去划分? 1)静态测试: 不运行代码,检查代码的风格,格式是否符合公司的标准规范,检查代码的逻辑结构是否满足需求要实现的功能 看代码,不运行代码,通过静态分析代码的语法,编写规范,逻辑 ...

  4. 软件测试用例篇(2)

    功能测试+界面测试+兼容性测试+安全测试+易用性测试+性能测试 针对有需求的案例来设计测试用例:邮箱注册,部分测试用例 https://zay1xofb7z6.feishu.cn/mindnotes/ ...

  5. 软件测试用例篇(3)------针对软件产品设计测试用例

    (378条消息) 软件测试--测试用例设计&测试分类详解_测试用例分类_偷偷敲代码的青花瓷的博客-CSDN博客 (401条消息) 软件测试|黑盒.白盒.灰盒测试的区别_从被测试系统了解角度进行 ...

  6. 阿里测开7年大手子教做软件测试,五分钟学会软件测试用例篇

    ​ 测试用例定义 测试用例的定义:软件测试的核心,为了特定的目的而设计的一组测试输入.执行条件.预期结果的输出文档: 测试用例构成要素:用例编号.用例标题.测试项目.用例级别.预置条件.测试输入.执行 ...

  7. 软件测试用例设计实用经验之谈

    概述 软件测试用例设计最重要的前提是掌握业务知识,加上一定的测试用例设计方法,软件测试的工作实际就非常简单了,多测试几个实际项目技能就自然提高了. 我把软件测试用例设计分成4个部分: ·测试类型 ·设 ...

  8. 软件测试用例编写规范文档,模板都给你了我看谁还不会写测试用例

    目录 前言 一 概述 1.1目的 1.2使用范围 二 测试用例编写原则 2.1系统性 2.2连贯性 2.3全面性 三 测试用例设计方法 3.1 等价类划分法: 3.2 边界值分析法: 3.3 因果图法 ...

  9. 手机软件测试用例设计

    实例讲解手机软件测试用例设计 实例讲解手机软件测试用例设计,测试伴随在整个手机软件开发的各个阶段中,测试质量的高低直接关系到手机软件的可用性,友好性,可靠性.可以说,测试环节是手机软件开发的重要环节, ...

  10. 手机软件测试用例设计实践

    一.测试用例设计概述 测试伴随在整个手机软件开发的各个阶段中,测试质量的高低直接关系到手机软件的可用性,友好性,可靠性.可以说,测试环节是手机软件开发的重要环节,是整个开发过程的"中枢神经& ...

最新文章

  1. Docker镜像使用
  2. ios图像处理第2部分:核心图形,核心图像,GPUImage
  3. 并发编程—Volatile关键字
  4. 使用C#操作XML文件
  5. LeetCode DD-2020006. 简单游戏(前缀和)
  6. cnblog div+CSS 布局常识 8问
  7. php手机网站底部导航代码,jQuery微信手机端底部弹出导航菜单列表代码
  8. margin和padding的区别和用法
  9. 流畅的python 函数
  10. Android进阶篇-Http协议
  11. AI团队领头人携耗资数十万项目案例,价值2W+的5堂直播课,限时免费Get!
  12. 所谓“卡常数”的常数到底指什么?
  13. OPENG 获取状态的一些枚举值
  14. 动态切换 web 报表中的统计图类型
  15. 情商高手比智商高手要可怕多了
  16. 把小写金额转成大写金额 (Java经典编程案例)
  17. 生命旅程中何生命个体
  18. php 正则 零宽断言,正则表达式之零宽断言实例详解_正则表达式
  19. vue2 项目启动一直卡在98%Starting development server...98% after emitting CopyPlugin
  20. scrapy爬虫实战教程

热门文章

  1. 谷歌怎么保存网页为图片?
  2. 2020中兴捧月算法大赛参赛总结
  3. matlab中邮递员问题实例,中国邮递员问题的求解实例.doc
  4. 为什么最多只有正20面体证明过程
  5. 瀑布式项目管理软件测评!
  6. android基于xposed框架,学习笔记:Android Xposed 框架入门
  7. 推荐3款手机远程控制电脑的软件 专业 好用 免费
  8. PythonSD01个人释疑
  9. w10运行游戏计算机中丢失xinput1-3.dll,win10游戏缺少xinput1_3.dll如何修复_win10电脑找不到xinput1_3.dll怎么解决...
  10. 回归预测 | MATLAB实现GLM广义线性模型数据回归预测