软件测试核心之用例设计
测试设计与测试用例
测试设计:将概括的测试目标转化为具体的测试条件和测试用例的一系列活动
测试分析和设计的主要任务
- 评审测试依据(需求、系统架构、设计和接口说明)
- 评估测试依据和测试对象的可靠性
- 通过对测试项、规格说明、测试对象行为和结构的分析,识别测试条件并确定优先级
- 设计测试用例,并确定优先级
- 确定测试条件和测试用例所需的必要测试数据
确定测试条件
- 依据在测试策划或者测试计划中确定的测试技术
- 通过对策是依据与测试目标的分析,可以确定需要测试的内容,获得测试条件
测试用例:
通过使用在测试计划中确定的测试技术与测试方法,对于已确定的测试条件进行逐步推敲,精炼而设计出来的,重点说明如何具体操作,产生何种结果的文档
特点:可重复性,可验证性,需求可追踪性
设计的关键点:
- 前提条件:如项目或局部测试环境的需求,及其交付计划
- 测试步骤:可还原,可检测,不可有歧义
- 测试数据
- 预期结果
设计方法:
- 等价类划分法
- 边界值法
- 因果图设计法
- 判定表设计法
- 正交实验法
- 场景法
等价类划分法
定义:把程序的输入域划分成若干部分,再从每个部分中选取少数代表性数据当做测试用例,每一类的代表性数据在测试中的作用等价于这一类中的其他值
划分原则:
- 如果输入条件规定了取值的范围或者值的个数,则可确定一个有效等价类和两个无效等价类
- 对立关系:如果一个输入条件说明了一个 “必须成立”的情况,则可划分一个有效等价类和一个无效等价类
- 如果输入条件规定了输入数据的一组可能的值,而且程序是用不同的方式处理每一种值,则可为每一种值划分一个有效等价类,并划分一个无效等价类
- 如果已明确,已划分的某等价类中的各元素在程序中的处理方式是不同的,则应据此等价类进一步划分成更小的等价类
设计步骤
- 明确测试对象,非测试对象保证正确
- 为每一个等价类规定一个唯一的编号
基于等价类划分的用例设计
- 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步,最后使得所有有效等价类均被测试用例所覆盖
- 设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步,使所有无效等价类均被覆盖
等价类的特点
- 测试相同的内容
- 如果等价类中的一个测试能够捕获一个缺陷,那么选择该等价类中的其他测试也能捕获该缺陷
- 如果等价类中的一个测试不能捕获缺陷,那么选择该等价类中的其他测试也不会捕获缺陷
- 如果正确的划分等价类,可以大大降低测试用例的数量,测试会准确有效
- 如果错误地将两个不同的等价类当做一个等价类,那就会遗漏一种测试情况
- 相反,把同一个等价类看作两个不同的等价类,那么测试就会是冗余的
注意事项:
- 不但要考虑有效等价类,也要考虑无效等价类
- 仔细划分,审查划分
- 过于粗略可能会遗漏掉软件缺陷
- 组织评审
边界值法
定义:是一种补充等价划分的测试用例设计技术,它不是选择等价类的任意元素,而是选择等价类边界的测试用例
边界值设计的原则
- 如果输入条件规定了取值范围,应以该范围的边界内及刚刚超范围的边界外的值作为测试用例
因果图法与判定表
因果图法
用来处理等价类划分和边界值考虑不到的情况,因为这两种方法都是着重考虑输入条件,而不考虑输入条件的各种组合,输入条件之间的相互制约关系
因果图法,适合用于描述多种条件的组合,产生多个相应动作的测试方法;从程序规格说明书的描述中找出因果关系
判定表
定义:是分析和表达多逻辑条件下执行不同操作的工具
组成部分:
- 条件桩:列出了问题的所有条件,通常认为列出的条件次序无关紧要
- 动作桩:列出了问题规定可能采取的操作,这些操作的排序顺序没有约束
- 条件项
- 动作项
设计步骤:
- 分析软件规格说明中的因果,并给每个原因和结果赋予一个标识符
- 分析软件规格说明中语义的内容,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图
- 由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特定情况,在因果图上使用一些记号表明约束或限制条件
- 把因果图转换为判定表
- 根据判定表的每一列设计测试用例
正交实验法
定义:是从大量的实验点中挑选出适量的、有代表性的点,应用依据伽罗卡瓦理论导出的正交表,合理地安排实验的一种科学的试验设计方法
相关参数:指标、因子、因子的状态
设计步骤:
- 提取功能说明,构造因子状态表
- 加权筛选,生成因素分析表
- 利用正交表构造测试数据集
- 利用正交表每行数据构造测试用例
测试场景设计
场景法设计步骤:
- 根据说明,描述出程序的基本流及各项备选流
- 根据基本流和各项备选流生成不同的场景
- 对每一个场景生成相应的测试用例
- 对生成的所有测试用例重新审核,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值
测试用例综合设计
- 测试用例项划分
- 测试用例划分的经典方法是瀑布模型,从上到下,逐渐细分;大模块包括小模块,小模块包括更小的模块
- 要从更多的角度切入系统,把系统切分成一块一块地来进行测试,从而确保测试大项的完整性
- 切面测试
- 功能点切面:最常见的切面,通常认为页面上的一个按钮就是一个功能点。根据功能的复杂程度,按每一个功能进行用例的撰写
- 隐含切面:完整业务流程的测试。从需求,业务角度进行编写
- 功能点用例设计
- 任何情况下都必须使用边界值分析法,经验表明,用这种方法设计出测试用例发现程序错误的能力最强
- 必要时用等价类划分的方法补充一些测试用例
- 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法
- 如果程序业务复杂度比较高,则适当使用场景法补充一部分测试用例
软件测试核心之用例设计相关推荐
- 【软件测试】白盒测试用例设计——基本路径法
对下述代码使用基本路径法设计出测试用例,保证程序的每一条可执行语句在测试过程中至少执行一次.假设输入的范围是1000 int isLeap(int year) {if (year%4==0){ //判 ...
- 软件测试基础之用例设计方法
#等价类划分* (正向的.错误的)** 与边界值一起使用** 例如:微信红包是0.01~200之间 那么 有效等价类 无效等价类 0.01~200 <0.01/>200 数字 非数字(中文 ...
- 软件测试 通用技术03 测试用例 黑盒测试用例设计方法 等价类划分法 边界值分析法 判定表法 场景法 功能图法 其他用例设计方法 用例设计方法综合选择
文章目录 1 测试用例 1.1 测试用例的定义 1.2 测试用例模板 1.3 测试用例模板的内容 测试用例编号 测试项 依赖用例 测试步骤 测试数据 预期结果 测试结果 测试人 备注 2 测试用例编写 ...
- 软件测试流程及主要用例设计方法
软件测试流程及主要用例设计方法 测试新手人门,首先要掌握测试的流程和实际运作项目流程和基础的用例设计方法. 掌握测试和项目流程是了解研发过程中测试的主要工作:掌握最主要的用例设计方法就是掌握测试岗位最 ...
- mfc程序转化为qt_以“企鹅电竞小程序”改版为例,讲解如何将用户核心路径转化为设计语言...
前言 用户路径是指用户达到目标时一系列的操作.我们可以将用户在产品中由开始到结束的整个过程划分成很多节点,用户从一个节点到另一个节点的过程可以被视为是一条路径.用户路径主要分为两种:一种是用户找寻信息 ...
- 软件测试--黑盒测试用例、测试步骤设计方法(正交实验法、功能图法、其他用例设计方法)
黑盒测试用例设计(三) 正交实验法 正交表:一种特制的表,一般的正交表记为Ln(mk) m代表水平数,k代表因素数,n是需要进行实验的个数.这三个数没有任何数学关系. 仅适用于每个因素的水平数都相同的 ...
- 某东软件测试工程师(二面)——用例设计
好不容易下定决心辞职之后,想去大厂试试.这段时间一直在准备去拼多多的第二次面试.一面是技术面,有一定的难度.按道理来说二面的通过率应该比较高才对,不过最近的二面通过率可能不到50%,一面的通过率一般比 ...
- 软件测试 单元测试用例设计,单元测试的用例设计
首先,我们先来思考一个问题:单元测试中,哪一个环节更重要? 要回答这个问题,我们先需要了解单元测试到底有哪些环节,读到这里,请暂停一分钟,回忆一下我们平时的单元测试实践(请最小化浏览器). 对于单元测 ...
- 软件测试 | 等价类用例设计方法及演示
常见的用例设计方法包括:等价类.边界值.因果图.判定表.状态迁移.场景分析法.正交实验法.下面是等价类用例设计方法. 1为什么需要使用等价类方法 如果我们输入的数据是一个很大范围数据时,我们测试时会出 ...
最新文章
- fileinput_open_读写文件_python
- Ubuntu 64 位下解决bash: xxx: 没有那个文件或目录
- next_permutation函数
- php 安装redis php扩展
- 【Arduino】HX711驱动程序
- 雷林鹏分享:YAF 在Nginx环境下的Rewrite规则
- Oracle 练习P297 131026 PL/SQL块程序
- 动态编程语言静态编程语言_什么是动态编程?
- 转载:【Oracle 集群】RAC知识图文详细教程(四)--缓存融合技术和主要后台进程
- sqlserver数据库同步解决方案
- Vue项目(Ant Design of Vue)踩坑记之——表格header可伸缩
- 基于YOLOv5的银行卡卡号识别(一)
- 手把手教你写一个点菜系统(附源码)
- PHP7底层设计与源码剖析PDF,【PHP7底层设计与源码分析】部分勘误
- 「2022 最新版」未认证微信公众号图文中插入外部链接教程
- Android教程 -06 Activity的生命周期
- 硬币面值组合的算法题解
- 机器学习之 各种熵详解
- 微信支付公的众号支付和扫码支付
- 【luoguP5550】Chino的数列
热门文章
- AD域首次登陆修改密码设置
- VMware vSAN 的内部版本号和版本 (2150753)--2020-10-27 更新
- Redis学习总结(23)——Redis如何实现故障自动恢复?浅析哨兵的工作原理
- Mysql学习总结(75)——并发量大、数据量大的互联网业务数据库设计军规
- Java基础学习总结(146)——开发人员日志实践规范
- Linux学习总结(46)——Centos7.4设置开机自动登陆及网卡自动启用
- 令人期待的php7.4,PHP7.4新特性
- oracle 添加归档日志文件_oracle 归档日志文件路径设置
- su自带模型库怎么打开_SU超强外挂!建筑模型一键生成,还能任意编辑
- 负载均衡集群介绍LVS介绍LVS调度算法LVS NAT模式搭建