当前位置: 首页 > news >正文

测试篇(三):测试用例的万能公式、对水杯和登录页面设计测试用例、测试用例的设计方法

目录

  • 一、测试用例的万能公式
  • 二、对登录页面设计测试用例
  • 三、测试用例的设计方法
    • 3.1 基于需求的设计方法
    • 3.2 等价类
    • 3.3 边界值
    • 3.4 判定表
    • 3.5 正交排列
    • 3.6 场景设计法
    • 3.7 错误猜测法
  • 四、面试真题

一、测试用例的万能公式

首先,为"水杯"设计一个测试用例,我们可能会想到水杯是否可以盛水、水杯是否漏水、水杯携带是否方便、水杯是否保温、水杯的形状和外观是否符合用户预期…但这些用例是我们想一个写一个的,并不是按照某个具体步骤详细而全面的来设计测试用例。因此学会万能公式对我们设计测试用例将很有帮助
测试用例的万能公式:功能测试+性能测试+界面测试+兼容性测试+易用性测试+安全测试

  • 功能测试:对产品的功能设计测试用例(来源是需求文档/日常生活经验)
  • 性能测试:功能测试没有问题不代表性能好,考虑极端情况(高并发量、响应时间等)
  • 界面测试:界面中每个元素的大小、颜色、材质、形状、页面跳转、文字错别字…都需要进行测试(以界面设计图为依据)
  • 兼容性测试: 软件的不同版本是否兼容、不同浏览器、不同的系统版本、数据兼容性…
  • 易用性测试:产品是否具备简单易上手的属性
  • 安全测试:用户的隐私数据是否加密(注册账号时账号和密码在接口传输时是否加密)、是否存在SQL注入问题、越权问题

【SQL注入问题】

select * from info where id=1 or 1=1; 这条SQL语句的结果是返回所有的用户信息

【越权问题】

越权又分为垂直越权和水平越权
垂直越权是指,比如在一个教务系统中,有教师和学生不同的身份,教师可能有布置作业的功能,学生没有作业的功能,但如果学生也能进行布置作业,那么这就属于是垂直越权
水平越权是指,学生有张三和李四,张三不能进入到李四的界面中进行操作,但如果张三可以操作李四的界面,那这就是水平越权

在学完万能公式之后,借助万能公式对"水杯"进行设计测试用例

在这里插入图片描述

【设计测试用例一定是越多越好吗?】

不是的,测试用例能够提高质量覆盖率才是最好的

二、对登录页面设计测试用例

对下面的这个登录页面设计测试用例:
在这里插入图片描述
在这里插入图片描述

三、测试用例的设计方法

根据万能公式我们设计出的测试用例是比较笼统的,例如对登录页面设计的测试用例,其中一个是测试账号和密码的长度是否符合规则,但是"长度"我们并没有真正的指定,但当我们需要具体的测试数据时,就应该给出具体的数值,此时就要用到测试用例的设计方法

3.1 基于需求的设计方法

基于需求文档来设计测试用例,和根据万能公式设计类似

3.2 等价类

比如,有一个需求是用户的密码是6-12位,测试的时候该如何设计测试数据呢?
有的同学可能会说,穷举6,7,8,9,10,11,12都测试一下,但如果当我们的需求变为用户的密码是6-1000000位,此时使用穷举法就不现实了。使用等价类的方法可以很好的解决这个问题。


依据需求将输入划分为若干个等价类,从等价类中选出一个测试用例,如果该用例通过,就认为其所属的等价类测试都通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了穷举不过来的问题

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

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

  1. 划分等价类

需求是用户的密码是6-12位,有效等价类是:6-12,无效等价类是小于6位和大于18位

  1. 编写测试用例

输入长度是6-12的密码,具体数据选为10位
输入长度小于6位的密码,具体数据为3位
输入长度大于12位的密码,具体数据为30位

对于需求是到超市购买水果,包括苹果、桃子、梨

  • 有效等价类:有三个,分别时苹果、桃子、梨,也就是说要分别测试这三个
  • 无效等价类:香蕉、橘子、水、啤酒…

3.3 边界值

边界值法是在等价类的基础上,衍生出的一种设计测试用例的方法

对于用户的密码是6-12位这个需求来说:

  • 有效边界值是:6,12
  • 无效边界值是:5,13

对于成绩大于90可以获奖这个需求来说:

  • 有效边界值是:91
  • 无效边界值是:90

对于长度时6-10位的单精度浮点型数据的需求来说:

  • 有效边界值:
  • 无效边界值:

3.4 判定表

对于判定表来说,使用的场景比较少

判定表(Decision table)是另一种表达逻辑判断的工具。与结构化语言和判断树相比,判断表的优点是能把所有条件组合充分地表达出来;其缺点是判定表的建立过程较烦杂,且表达方式不如前两种简便。判定表在用于知识表达中,有许多其他方式所达不到的作用。
在这里插入图片描述
使用场景:输入条件的组合对应不同的结果

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

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

现有需求:“淘宝618活动,订单已提交,订单合计金额大于300元或有红包,则进优惠”。

  1. 确认输入和输出条件

    输入条件:金额大于300(A)、红包(B),订单已提交(C)
    输出条件:有优惠(1)、无优惠(2)

  2. 找出输入和输出条件之间的关系

在这里插入图片描述

  1. 画判定表

在这里插入图片描述

  1. 根据判定表编写测试用例
  • 有红包并提交订单,该订单为优惠订单
  • 金额大于300并提交订单,该订单为优惠订单
  • 金额大于300且有红包,同时提交订单,该订单为优惠订单

在大部分书籍或文章中给的都是因果图法,因果图法和判定表法的步骤几乎相同,只不过因果图法必判定表法多了一步画因果图

3.5 正交排列

正交试验设计是研究多因素多水平的一种设计方法,它是根据正交性,由试验因素的全部水平组合中挑选出部分有代表性的点进行试验,通过对这部分试验结果的分析了解全面试验的情况,找出最优的水平组合。当因素过多时,如果使用判定表法设计测试用例就变的不现实了,而正交法的目的是为了减少用例数目,用尽量少的用例覆盖输入的两两组合。


最简单的正交表是L4(2^3),含意如下:“L”代表正交表;L 下角的数字“4”表示有 4 横行,简称行,即要做四次试验;括号内的指数“3”表示有3 纵列,简称列,即最多允许安排的因素是3 个;括号内的数“2”表示表的主要部分只有2 种数字,即因素有两种水平1与2。正交表的特点是其安排的试验方法具有均衡搭配特性


举例理解试验、因素、水平的含义,一次试验代表一次测试用例,一辆车从出发地到目的地耗时多久这件事,受到很多因素影响,有下班的高峰期、限号、天气、地段、道路施工、行驶人的驾车技能、车况等,对于下班高峰期这个因素来说,是高峰期与不是高峰期是两个水平

在这里插入图片描述
正交表的性质:

  1. 每一列中,不同的数字出现的次数相等。例如在两水平正交表中,任何一列都有数码“1”与“2”,且任何一列中它们出现的次数是相等的;如在三水平正交表中,任何一列都有“1”、“2”、“3”,且在任一列的出现数均相等。
  2. 任意两列中数字的排列方式齐全而且均衡。例如在两水平正交表中,任何两列(同一横行内)有序对子共有4种:(1,1)、(1,2)、(2,1)、(2,2)。每种对数出现次数相等。在三水平情况下,任何两列(同一横行内)有序对共有9种,1.1、1.2、1.3、2.1、2.2、2.3、3.1、3.2、3.3,且每对出现数也均相等。

根据正交表设计测试用例的步骤:

  1. 找出因素数和水平数
  2. 生成正交表(借助工具allpairs)
  3. 根据正交表来编写测试用例
  4. 补充可能存在遗漏但非常重要的测试用例

案例:

在这里插入图片描述

  • 因素数:姓名、电子邮箱、密码、确认密码、验证码
  • 使用allpairs生成正交表:
    (1)使用excel进行编写
    在这里插入图片描述 (2)保存到一个txt文件中在这里插入图片描述
    (3)将该txt文件保存到paris目录下
    在这里插入图片描述
    (4)输入命令
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 根据正交表生成测试用例
  • 补充可能遗漏但很重要的测试用例:全都不填写

3.6 场景设计法

场景设计法中涉及到两个概念:基本事件流和备选事件流。用下面的一个例子进行解释,以去ATM取款机取款的流程为例:
在这里插入图片描述
除了基本事件流以外,可能出现的以外情况称之为备选事件流

根据上图编写测试用例:

  1. 基本事件流用例:插卡、输入密码、输入金额、取钞、退卡
  2. 备选事件流的用例:
    (1)插卡、输入密码、密码错误、重置密码、输入金额、取钞、退卡
    (2)插卡、输入密码、输入金额、金额不是整数、重新输入、取钞、退卡

3.7 错误猜测法

错误猜测法是对被测软件设计的理解,过往经验以及个人直觉,推测软件可能存在的缺陷,从而针对的设计测试用例的方法,更依赖测试人员的工作经验和积累。
错误推测法和目前流行的“探索式测试方法”的基本思想一致,这类方法在敏捷开发模式下的投入产出比很高,被广泛应运于测试。
这个方法的缺点是难以系统化,并且过度依赖个人能力。

四、面试真题

某公司招聘测试工程师时,有一道这样的笔试题:”某手机软件有用TF卡导出数据的功能,请写出测试此功能点的思路”
在这里插入图片描述

相关文章:

  • 第十三届蓝桥杯省赛 Java A 组 I 题、Python A 组 I 题、Python B 组 J 题——最优清零方案(AC)
  • 阿里“云开发“小程序(uniCould)
  • 提权漏洞和域渗透历史漏洞整理
  • 传参的理解
  • 基于蜣螂算法的极限学习机(ELM)分类算法-附代码
  • 主流的操作系统(带你快速了解)
  • 六、numpy拷贝
  • STM32+python产生三角波
  • 【计算机网络(考研版)】第一站:计算机网络概述(一)
  • C++空间命名
  • 树,堆,二叉树的认识
  • 计算机存储系统
  • 返回值的理解
  • 前同事居然因为 Pycharm 的这个功能,即使离职三年也依然经常被请去喝茶~
  • IPV4地址详解
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • angular组件开发
  • iOS 颜色设置看我就够了
  • js写一个简单的选项卡
  • k8s如何管理Pod
  • Mybatis初体验
  • Python socket服务器端、客户端传送信息
  • socket.io+express实现聊天室的思考(三)
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 判断客户端类型,Android,iOS,PC
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 一个项目push到多个远程Git仓库
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • elasticsearch-head插件安装
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​TypeScript都不会用,也敢说会前端?
  • ​VRRP 虚拟路由冗余协议(华为)
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (七)Java对象在Hibernate持久化层的状态
  • (译)2019年前端性能优化清单 — 下篇
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转载)(官方)UE4--图像编程----着色器开发
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 使用 XPath 来读写 XML 文件
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?