-
2022-02-28 16:55:33
前言
大家好,我是洋子。今天给大家分享在做软件测试时,最容易忽略但却重要的知识点,那就是测试用例设计。用例设计就是软件测试工程师的灵魂,体现了你的测试思维,以及对业务需求的熟悉程度。有时侯出现线上事故,可能就是测试用例没有覆盖全面
测试用例概述
考虑部分同学是转行做软件测试,我先说一下测试用例是什么
测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求
看到测试用例的定义是不是有点晕,通俗的来讲,测试用例就是一个参照物,在测试过程中,会按照测试用例来逐条执行测试。测试用例最主要是有4部分组成:
- 用例标题
- 前置条件
- 操作步骤(输入)
- 预期结果(输出)
对于测试用例的第3部分,操作步骤可以理解成是
输入
,比如我们在手机键盘上输入数字或者字母,除此之外,常见的输入还有点击按钮、长按、滑动屏幕等等,注意这里的输入需要满足前置条件
在完成输入以后会有一个预期的结果,可以理解成
输出
,常见的输出有(1)弹窗 (2)跳转新页面 (3)tosat 提示 (4)展示文字、图片等那测试用例到底怎么写呢,可以看看下面这个例子,现在我需要测试某个网站的登陆功能,我设计的1条测试用例如下:
这条用例是为了验证登陆功能当中成功登陆的情况,所以用例标题为01_登陆功能_成功登陆
,标题里面加入编号是为了方案管理。操作步骤是在符合前置条件下进行,即在用户已注册并且未登陆的情况下,输入指定位数的用户名和密码,预期结果就是有弹窗提示,跳转主页常见用例设计方法
测试用例最核心的部分,大家可以想想是哪一部分,毫无疑问是操作步骤,咱们平常做测试也就是根据测试用例里面的操作步骤在点点点,怎么点才能更有效率,并且把测试覆盖得更全面呢
于是咱们需要学习测试用例的设计方法,本篇文章主要是介绍2种黑盒测试 用例设计方法,分别是等价类和边界值,这是实际工作当中最常用的2种
等价类
等价类,等价类从字面上来理解就是相同的种类,先看一下等价类的定义:
- 等价类是把用户所有可能输入的数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例
- 使用等价类设计测试用例时,要同时考虑有效等价类和无效等价类
- 有效等价类:对于程序的规格说明(需求文档)来说,是合理的、有意义的输入数据所构成的集合;
- 无效等价类:对于程序的规格说明来说,是不合理的、没有意义的输入数据所构成的集合
举个例子便于理解有效等价类和无效等价类,现在我要测试两个1-100整数(包含1和100)相加,请你利用等价类设计测试用例
按照题目先划分出有效等价类和无效等价类
有效等价类:
- 【1】输入的都是1-100的整数
无效等价类:
- 【2】输入小于1的整数
- 【3】输入大于100的整数
- 【4】输入空
- 【5】输入字母和特殊字符
- 【6】输入空格
确定有效等价类和无效等价类后,我们就可以设计测试用例
用例编号 输入的两个数据 预期结果 覆盖的等价类 1 99,18 正常展示整数相加结果 有效等价类【1】 2 -2, -3 相加失败 无效等价类【2】 3 300,400 相加失败 无效等价类【3】 4 空,空 相加失败 无效等价类【4】 5 abc,123 相加失败 无效等价类【5】 6 空格,123 相加失败 无效等价类【6】 边界值
另一种,用例设计方法叫边界值。边界值的定义如下:
边界值分析法就是对输入或者输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界
(补充边界点的图)举一个例子来帮助理解边界值,一个输入的文件应包括1~255个记录, 那么可以分析出6个边界点,分别是略小于最小值0,最小值1,略大于最小值2,略小于最大值254,最大值255和略大于最大值256。这6个点即可作为测试用例的输入数据
等价类和边界值往往结合起来使用,边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例;
- 将软件的输入或者输出参数进行等价类划分;
- 在等价类的基础之上进行边界值分析。一般情况下,假如边界值已经由等价类划分覆盖,则可以不予考虑;
- 将边界值进行组合,作为测试用例的输入数据;
再回顾一下上述介绍等价类时的例子,测试两个1-100整数(包含1和100)相加,现在我们将等价类和边界值用例设计法结合起来,用例1 可以改成输入整数1,2,99,100,用例2改成 输入整数0,用例3改成输入101。经过这样的改造,我们的用例既经过了等价类划分覆盖有效和无效等价类,也进行了边界值分析,覆盖到边界值的测试
细心的小伙伴会问,为什么我们要用边界值去设计测试用例呢?这个是由大量的测试实践经验得出,大量的Bug往往发生在
输入定义域
或者输出值域
的边界
上,而不是在内部。因此,我们针对边界情况设计测试用例,一般能发现更多的问题再看看为什么要用等价类去设计测试用例,对于一个程序,往往可以输入的数据非常多,就拿一个可输入11位的密码框来说,我们
不可能实现穷举测试
,可以从大量的可能数据中选取一部分具有代表性的数据作为测试用例,这样极大提高测试效率同时保证了测试的质量,因为经过等价类划分后,每一类的代表性数据在测试中的作用都等价于这一类中的其他值更多用例设计方法
- 功能图
- 场景法
- 因果图
- 错误推测
- 判定表
- 正交试验
- 状态迁移
除了等价类和边界值,还有很多测试用例的设计方法,在上面已经列出来了。我这里再讲讲
错误推测法
,这个方法是基于经验
和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例。在企业里面,当你熟悉业务以后,就可以根据业务的特点去定制化的设计测试用例作为补充了用例设计考虑层面
前面我们介绍了等价类和边界值的用例设计方法,这两种黑盒用例设计方法所产生的用例都是属于功能测试层面,除了功能方面,我们在设计测试用例时,还应该考虑到
兼容性
、性能
、安全
这三个层面功能测试用例
还是登陆功能举一个例子,对于我们测试人员该怎么设计用例呢,先从功能层面考虑,我们比较容易能想到以下用例:
- 输入已注册的用户名和正确的密码,验证是否登陆成功
- 输入已注册的用户名和不正确的密码,验证是否登陆失败
- 输入未注册的用户名和任意密码,验证是否登陆失败
- 用户名和密码两者都为空,验证是否登陆失败
- 用户名和密码两者之一为空,验证是否登陆失败
- 如果登陆功能启动了验证码功能,在用户名和密码正确的前提下,输入正确的验证码,是否登陆成功
- 如果登陆功能启动了验证码功能,在用户名和密码正确的前提下,输入错误的验证码,验证是否登陆失败
列出这些测试用例后,你是不是感觉上面的测试用例已经涵盖了主要的功能测试场景,但是在高级测试工程师眼中,这些用例还不够,再看看下面这些测试用例你是否考虑到
- 用户名和密码是否大小写敏感
- 页面上的密码框是否加密显示
- 后台系统创建的用户第一次登录成功时,是否提示修改密码
- 忘记用户名和忘记密码的功能是否可用
- 前端页面是否根据设计要求限制用户名和密码长度(若有限制长度位数,则可以根据边界值设计测试用例)
- 如果登录功能需要验证码,点击验证码图片是否可以更换验证码,更换后的验证码是否可用
- 刷新页面是否会刷新验证码
- 如果验证码具有时效性,需要分别验证时效内和时效外验证码的有效性
- 用户登录成功但是会话超时后,继续操作是否会重定向到用户登录界面
- 不同级别的用户,比如管理员用户和普通用户,登录系统后的权限是否正确
- 页面默认焦点是否定位在用户名的输入框中
- 快捷键 Tab 和 Enter 等,是否可以正常使用
- 鼠标光标是否只在固定位置才显示可点击或编辑状态
看完以后你是不是觉得原来一个简单的登陆功能可以考虑这么多测试点,用户登录功能的测试用例设计还没结束。我们应该知道软件的需求包含
显式功能性需求
(指的是软件本身需要实现的具体功能)和隐式功能性需求
(即非功能性需求),所以除了功能以外,我们还要考虑安全、性能、兼容性
层面的用例安全性测试用例
-
用户密码及个人信息是否加密存储;
-
用户密码及个人信息在网络传输过程中是否加密;
-
密码是否具有有效期,密码有效期到期后,是否提示需要修改密码;
-
不登录的情况下,在浏览器中直接输入登录后的 URL 地址,验证是否会重新定向到用户登录界面;
-
密码输入框是否不支持复制和粘贴;
-
密码输入框内输入的密码是否都可以在页面源码模式下被查看;
-
用户名和密码的输入框中分别输入典型的“SQL 注入攻击”字符串,验证系统的返回页面;
-
用户名和密码的输入框中分别输入典型的“XSS 跨站脚本攻击”字符串,验证系统行为是否被篡改;
-
连续多次登录失败情况下,系统是否会阻止后续的尝试以应对暴力破解;
-
同一用户在同一终端的多种浏览器上登录,验证登录功能的互斥性是否符合设计预期;
-
同一用户先后在多台终端的浏览器上登录,验证登录是否具有互斥性。
-
登录接口返回的数据是否对用户信息进行加密显示
-
登录UA获取,确保是用户本人登录
性能测试用例
- 单用户登录的响应时间正常网络环境下是否小于 2 秒;
- 单用户登录时,后台请求数量是否过多;
- 高并发场景下用户登录的响应时间是否小于 5 秒;
- 高并发场景下服务端的监控指标是否符合预期;
- 高集合点并发场景下,是否存在资源死锁和不合理的资源等待;
- 长时间大量用户连续登录和登出,服务器端是否存在内存泄漏。
- 防止同一用户恶意并发
兼容性测试用例
- 不同浏览器下,验证登录页面的显示以及功能正确性;
- 相同浏览器的不同版本下,验证登录页面的显示以及功能正确性;
- 不同移动设备终端的不同浏览器下,验证登录页面的显示以及功能正确性;
- 不同分辨率的界面下,验证登录页面的显示以及功能正确性
复杂系统如何设计用例
对于复杂系统的用例设计,有着非常重要的一步,就是
拆解功能点
。那应该怎么拆解功能点呢,就拿B站的播放页面来说,别看只有一个页面,但是上面包含了非常多的功能点,通过这张图片,我们至少能拆出如下功能点:- 点赞
- 投币
- 收藏
- 分享
- 评论
- 弹幕
- 播放页面Tab、文案与信息展示
拆解完功能点以后,我们就可以依据各自的功能点利用等价类、边界值、错误推测等方法设计测试用例,单功能的用例设计完成以后,还需要使用场景法
设计场景化的测试用例,覆盖到用户的操作流程,比如从主页点击视频,跳转到视频播放页面,在播放页面点击评论Tab跳转到评论页面,点击评论按钮,进行评论,评论完成后,查看评论列表
这就一个用户操作的基本流程,再举一个场景化的例子,我们都用过淘宝,从
挑选商品->加入购物车->从购物车付款
,这就是购买商品的核心场景场景法偏重于大的、复杂的业务流程,目的是用业务流
把各个孤立的功能点串起来
,所以在用场景法设计用例时,测试人员必须非常熟悉整体业务流程,才能设计出完整的场景化测试用例结尾
好了,能完整的看到这里,说明你已经是一个非常想学好设计测试用例设计的同学了,想要设计好测试用例,掌握了测试用例的设计方法,还需要勤加练习,你设计出的测试用例体现出你的测试思维,而测试思维的养成也不是一天两天就能形成,它需要不断的积累和大量的测试实践
如果你觉得本篇文章对您有帮助的话,辛苦大家点一下赞哦
更多相关内容 -
测试用例设计方法
2021-03-23 14:46:36测试用例设计方法白盒测试基本技术:控制流图、代码覆盖率分析(CodeCoverageAnalysis)。白盒测试方法:从总体上可划分为静态测试和动态测试;按测试操作的实施方式划分为手工测试和借助于工具的自动化测试等。 测试... -
软件测试中黑盒测试用例设计方法总结
2021-03-23 15:36:18软件测试中黑盒测试用例设计方法总结测试用例(TestCase)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。 测试用例(TestCase)目前没有经典的... -
测试用例设计方法之错误推测方法
2021-03-23 14:45:50定义:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。2.错误推测方法的基本思想: 错误推测方法 一.方法简介 1.定义:基于经验和直觉推测程序中所有可能存在的各种错误,... -
自动化测试之-测试用例设计方法总结
2021-02-24 16:37:17黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景图法等。(一)等价类划分法定义:等价类划分法是把所有可能输入的数据,即程序的输入域... -
测试用例设计方法场景法VS功能
2021-03-23 13:58:452、使用者 用例设计、执行及热爱测试的人员 3、测试用例设计方法 按照不同的规则可以将测试用例分为四个部分:场景用例(用户场景)、系统用例(用户场景的细化)、功能用例(基于业务规则、界面)、设计指标... -
软件测试中测试用例设计方法场景VS功能
2021-03-23 16:16:11软件测试中测试用例设计方法场景VS功能1、目的站在用户的角度,以用户的使用逻辑及操作习惯为出发点,结合功能用例的设计方法,使用例设计更符合用户使用逻辑更具有可执行性,从而最大程度上覆盖用户需求。... -
黑盒测试的测试用例设计方法
2021-03-23 15:18:29黑盒测试的测试用例设计方法软件测试 一、黑盒测试的测试用例设计方法 1.等价类划分方法 2.边界值分析方法 3.错误推测方法 4.因果图方法 5.判定表驱动分析方法 6.正交实验设计方法 7.功能图分析方法 二、... -
软件测试中的测试用例设计方法场景VS功能
2021-03-23 15:53:07软件测试中的测试用例设计方法场景VS功能1、目的不管我们在做哪些测试我想第一我们要站在用户的角度,以用户的使用逻辑及操作习惯为出发点,结合功能用例的设计方法,使用例设计更符合用户使用逻辑更具有可执行性,... -
黑盒测试用例设计方法
2022-03-29 16:31:12黑盒测试:不用关心底层代码逻辑的具体实现。 最常见的黑盒测试用例设计方法有: 1、等价类划分法2、边界值分析法3、因果图法4、判定表驱动法5、场景法文章目录
黑盒测试:不用关心底层代码逻辑的具体实现
最常见的黑盒测试用例设计方法有:黑盒测试用例设计:
一、等价类划分法(✨重点)
1、原理
- 把程序的输入域划分为若干部分,然后从每个部分中选取少数代表性数据作为测试用例。
- 每一类的代表性数据在测试中的作用等价于这一类中的其他值,如果某一类中的一个例子发现了错误,这一等价类中的其他例子也能发现同样的错误
- 反之,如果某一类中的一个例子没有发现错误,这一类中的其他列子也不会查出错误
2、明确等价类划分法的原则(6条)
1️⃣在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类
🌰:文本框可输入数据 6~18位 在这个范围之内→ 一个有效等价类 eg:10 在这个范围之外→ 无效等价类 eg:4 、20
2️⃣ 在输入条件规定了输入值的集合或者规定了”必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类
🌰 :请输入手机号11位,必须为11位 有效等价类→11位数据 无效等价类→非11位数据
3️⃣ 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类,“真”就是有效,“假”就是无效
🌰:方框内选取:阅读并接受《百度用户协议》及《百度隐私权保护声明》 打勾为有效,不打勾为无效
4️⃣ 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类
5️⃣ 在规定了输入数据必须遵循的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)🌰:用户名要求6-18位,由字母、数字、下划线组成 此时无效等价类可以有若干个
6️⃣ 在划分的等价类中,各元素在程序处理中的方式不同的情况下,则应在该等价类基础上进一步划分为更小的等价类就(由大化小)
⚡注意事项
注意:测试用例不允许重复、不能缺失,越详细越好
不允许这样设计:
🌰:61012219990230204X → 存在错误。因为2月只有28或者29天
身份证最后一位是校验码,0-9和X(10)
(一条用例只能违反一个规则)
【身份证号:18位,倒数第二位代表性别 (偶数→女生、奇数→男生)】
3.实例🌰:
百度注册页面用例设计(用户名:中英文均可,最长14个英文或7个汉字)
有效等价类 数据 无效等价类 数据 中英文混合 心min月 数字和特殊符号 123&% 14个英文 xinminyue 超过14位 xinminyuexinminyue 7个中文 心皿月 超过7个 心皿月心皿月心皿月 不能为空 心皿月 空 不能重复 皿月 用户名重复(已经注册过) 心皿月 二、边界值分析法(✨重点)
边界值是一个特定的数据。
例如,文本框需要输入6—18位字符,那么此时边界值为:6个字符、18个字符。
次边界:边界附近的值,按照系统规定的单位或计算方式,一般是一个数据的差异。1、边界值的选择原则
- 如果输入条件规定了值的范围,则应取刚达到这个范围的边界值,以及刚刚超越这个范围边界的值作为测试的输入数据
- 如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少1,比最大个数多1的数作为测试数据
- 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
- 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。
📑思考题:
(1)6≤X≤12,请问测试中x的边界值要选取哪几个进行测试?
5. 6 . 7. 11,12,13 【边界值加减1】
(2)6<X<12,请问测试中x的边界值要选取哪几个进行测试?
此时的6和12是无效数据,应当做无效数据进行测试、 6 7 8 10,11,12 【边界值加减1】
(3)文本框输入字符的个数要求是不大于150字,测试时如何选择边界值。
0≤x≤150 测: 空,1, 149,150,151
三、因果图法
1.什么是因果图法
-
因果图法是一种适合于描述对于多种输入条件组合的测试方法
-
根据输入条件的组合,约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法
-
它适用于检查程序输入条件设计的各种组合情况
🌰:注册QQ
2.因果图
第1️⃣步:根据功能说明书中规定的原因和结果之间的关系画出因果图
恒等关系:原因a成立,结果b一定成立
非:原因a成立,原因b一定不成立
或:原因a,b,c三者只要有一个成立,结果d就成立
与:原因a,b,c都成立时,结果d才成立
第2️⃣步:根据功能说明在因果图中加上约束条件
🌟其中互斥,包含,唯一,要求是对原因的约束,屏蔽是对结果的约束。
互斥(exclusion):表示不同时为1。即a,b,c中至多只有一个1
包含(include):表示至少有一个1。即a,b,c中不同时为0
唯一(only):表示a,b,c中有且仅有一个1
要求(request): 表示若a = 1,则b必须为1,即不可能a=1且b=0
屏蔽(mask):表示若a=1,则b必须为03.实例🌰
阅读和分析功能说明书,识别出”原因”和”结果”,并加以编号
案例:有一个饮料自动售货机(处理单价为5角钱)的控制处理软件,它的软件规格说明书如下。
※ 若投入5角钱的硬币,按下”橙汁”或者”啤酒”的按钮,则相应的饮料就送出来。
※ 若投入1元钱的硬币,同样也是按”橙汁”或”啤酒”的按钮,则自动售货机在送出相应的饮料的同时退回5角钱的硬币。第1步:先分析原因和结果的关系,画出他们之间的关系图(部分关系连线);按照需求描述原因、结果间的约束。
第2步:列出所有原因和结果的列表,设计初步的测试用例步骤。(列表中的每一列都是一条测试用例)
通过分析发现:
1)只选择饮料,没有投币的时候,软件没有任何结果
2)只投币,没有选择饮料的时候,软件也没有任何结果
我们不能把软件的缺陷,设计成测试用例
因果图的优势在于能够发现测试用例设计中存在的不足。这里就简单的写上两条测试用例:
4.缺陷
当原因和结果比较多时,他们之间的关系连线就会较多,导致因果图的可读性差。
因此适用于局部的小功能分析,原因结果关系不是很多的情况使用。四、判定表驱动法
1.概念
判定表法是分析和表达多逻辑条件下执行不同操作的情况的工具,它由以下几个内容组成:
- 条件桩: 列出了问题的所有条件,通常认为列出的条件的次序无关紧要。
- 动作桩: 列出了问题规定可能采取的操作,这些操作的排列顺序没有约束。
- 条件项:列出针对它左列条件的取值,在所有可能情况下的真假值。
- 动作项:列出在条件项的各种取值情况下应该采取的动作。
2.使用场合和条件
使用场合:
主要适用于多条件的内容组合和条件分析。
使用条件:
所有的条件桩在表中的顺序和位置互不影响;
所有的动作桩内的顺序不会因为条件的顺序变化,而产生不同。3.实现步骤
- 识别出操作条件(原因),和对应的动作(结果)
- 分析条件的条件项(组合数量):如果有n个条件,每个条件有成立和不成立两种情况,那么最后一共会有2^n个组合数量
- 简化和优化结果,排除一些不可能存在的情况
4.实例🌰
需求:订购单的检查
a.如果金额超过500元,又未过期,则发出批准单和提货单
b.如果金额超过500元,但过期了,则不发批准单
c.如果金额低于500元,则不论是否过期都发出批准单和提货单,在过期的情况下还需要发出通知单第1步:分析条件和动作
第2步:写入条件桩、动作桩、条件项、动作项
第3步:对判定表进行简化和优化。(对其中不合理或者重复的项进行取舍)
通过观察分析,不管金额是否超过500,只要未过期,就会发批准单和提货单
(在测试时间不充足的情况下,可以选二者中的一个情况进行测试),所以优化之后,条件项就减少为3个:
第4步:将判定表中的每一列(条件项和动作项)作为测试用例的数据和操作以及对应的预期结果5.适合使用判定表设计测试用例的条件:
规格说明以判定表的形式给出,或很容易转换成判定表
条件的排列顺序不影响执行哪些操作
规则的排列顺序不影响执行哪些操作
当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则
如果某一规则要执行多个操作,这些操作的执行顺序无关紧要6.优点
能够将复杂的问题按照各种可能的情况全部列举出来,简明并且可以避免遗漏。
五、场景法
1.原理
现在的软件几乎都是用事件触发控制流程的。测试时,可以生动地描绘出时间触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行。
2.基本流、备选流
基本流:软件功能按照正确的事件流实现的一条正确流程。通常一个业务仅存在一个基本流,且基本流仅有一个起点和一个终点。
备选流:除了基本流之外的各支流,包含多种不同的情况。
3.设计用例步骤
- 根据说明,描述出程序的基本流及各项备选流
- 根据基本流和各项备选流生成不同的场景
- 对每一个场景生成相应的测试用例
- 对生成的所有测试用例重新复审,去掉多余的测试用例
- 测试用例确定后,对每一个测试用例确定测试数据值
4.适用场景
用于解决业务流程清晰的系统或功能
5.实例🌰
ATM机取款流程
(1)基本流:
(2)包含了备选流的过程
备选流:
1 卡片不是银行卡
2 卡片不是银联的卡
3 密码输错一次
4 密码输错两次,第三次输入正确
5 密码输错三次,冻结账号或者吞卡
6 选择存款服务
7 选择查询服务
8 选择转账服务
9 选择修改密码服务
10 选择取款服务
11 账户取款金额达到取款机的当日取款上限场景设计:
场景1: 基本流
场景2: 基本流 备选流5
场景3: 基本流 备选流4
场景4: 基本流 备选流1
场景5: 基本流 备选流2 备选流4设计测试用例:
每一个场景都是一个测试用例
以场景5为例:设计步骤
假定ATM只能识别银联卡。(用一个学生卡插入)
1、插卡(先用学生卡)
2、换卡(银联卡),在进行插卡
3、输入密码(第一次输入错误)
4、再次输入密码(第二次输入错误)
5、第三次输入密码(输入正确)
6、选择服务——取款
7、选择取款金额——500
8、等待出钞
9、取卡 -
基于需求的软件测试用例设计方法研究
2021-03-23 15:28:15研究基于需求的软件测试用例设计方法研究软件测试1.引言测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。测试用例目前没有经典的定义,比较... -
史上最全的测试用例设计方法总结.doc
2022-05-26 14:47:31史上最全的测试用例设计方法总结.史上最全的测试用例设计方法总结.史上最全的测试用例设计方法总结.史上最全的测试用例设计方法总结.史上最全的测试用例设计方法总结.史上最全的测试用例设计方法总结.史上最全的测试... -
软件功能测试的测试用例设计方法及自动化功能测试的优势和挑战
2021-03-23 15:49:50功能软件软件功能测试的测试用例设计方法及自动化功能测试的优势和挑战一、功能测试用例设计方法介绍1、等价划分类法:使用最广泛的测试用例设计方法。为每一个无效等价类设计一个测试用例,为每一个有效等价类设计... -
软件测试用例设计方法场景VS功能
2021-03-23 15:28:08软件测试用例设计方法场景VS功能 软件测试 1、目的 站在用户的角度,以用户的使用逻辑及操作习惯为出发点,结合功能用例的设计方法,使用例设计更符合用户使用逻辑更具有可执行性,从而最大程度上覆盖用户需求。... -
功能和界面测试用例设计方法整理
2015-10-09 17:48:34文本框、按钮等控件测试 文本框的测试 如何对文本框进行测试 a,输入正常的字母或数字。 b,输入已存在的文件的名称; c,输入超长字符。例如在“名称”框中输入超过允许边界个数的字符,假设最多255个字符,尝试... -
测试用例设计方法总结
2018-04-12 17:05:32比较全测试用例设计方法总结与大家分享,希望提出更好的建议! -
基于需求的测试用例设计方法研究
2021-02-27 10:44:42由于对软件测试用例的作用和设计方法的理解不同,测试人员对软件测试用例存在不少片面的认识,具体表现在以下三个方面:(1)测试输入数据设计方法等同于测试用例设计方法一些测试书籍和文章经常这样表述:测试用例的... -
软件测试中浅谈黑盒测试的测试用例设计方法
2021-03-23 15:53:21软件测试中浅谈黑盒测试的测试用例设计方法在软件测试中目前黑盒测试的测试用例设计方法有5种:等价类划分边界值分析错误推测法因果图功能图一、等价类划分等价列划分设计方法是把所有可能的输入数据,即程序的输入... -
白盒测试用例设计方法
2021-04-13 14:14:35白盒测试用例设计方法 静态设计方法 动态设计方法 一、白盒测试的概念及特点 1、什么是白盒测试 代码逻辑的测试 白盒测试,又称结构测试、逻辑驱动测试或基于程序代码内部构成的测试。此时,测试工程师需深入...白盒测试用例设计方法
- 编写:天林
问题:
- 白盒测试方法的概念及应用场景
- 白盒测试方法
- 用各种逻辑覆盖法来和设计白盒测试用例
- 使用基本路径法来设计白盒测试用例
内容:
- 白盒测试的基本介绍
- 白盒测试用例设计方法
- 静态设计方法
- 动态设计方法
一、白盒测试的概念及特点
1、什么是白盒测试
代码逻辑的测试
- 白盒测试,又称结构测试、逻辑驱动测试或基于程序代码内部构成的测试。此时,测试工程师需深入考察程序代码的内部结构、逻辑设计等。
- 对于白盒测试工程师来说,软件产品内部构成是透明的。
- 下列代码是”图书添加“功能页面对象检查功能函数。从白盒测试角度而言,测试工程师仅需关注此段函数所能实现的功能,无须关注该函数的外部功能特性。
2、白盒测试的特点
- 优点:代码覆盖率高
- 缺点:
- 覆盖所有代码路径难度大
- 业务功能可能覆盖不全
- 测试开销大
二、白盒测试设计方法
1、静态设计方法
- 桌面检查
- 代码审查
- 代码走查
- 代码扫描工具
2、动态设计方法
- 逻辑覆盖法
- 语句覆盖
- 判定覆盖
- 条件覆盖
- 判断条件覆盖
- 条件组合覆盖
- 路径覆盖
- 基本路径测试法
三、逻辑覆盖法
- 逻辑覆盖法:是通过程序逻辑结构的便利实现程序的覆盖。
- 覆盖率:是用来度量测试完整性的一个手段
1、语句覆盖
1、语句覆盖设计用例
- 语句覆盖:设计测试用例,是对程序中每条语句至少被执行一次。
例如:
- 案例代码中共有4条可执行语句
- 设计测试用例执行了3条,语句覆盖率为3/4=75%
2、语句覆盖法的局限性
2、判定覆盖
1、判定覆盖法设计用例
- 判定覆盖:也叫分支覆盖,设计测试用例,使得程序中的每个判断的”真“和”假“都至少被执行一次。即:程序中的每个分支至少执行一次。
例如:
- 案例代码中有判定2个,判定结果4个
- 设计测试用例执行了3个分支,分支覆盖率为3/4=75%
2、判定覆盖法的局限性
- 只要满足了判定覆盖标准就一定满足语句覆盖标准。
3、条件覆盖
1、条件覆盖法设计测试用例
- 条件覆盖:设计测试用例,使得判定中的每个条件至少有一次取真值,有一次取假值。
例如:
- 案例代码中有判定2个,条件3个,条件结果6个
- 设计测试用例执行了5个条件结果,条件覆盖率为5/6=83%
2、条件覆盖法的局限性
4、判定条件覆盖
1、判定条件覆盖法设计测试用例
- 判定条件覆盖:设计测试用例,使得被测试程序中的每个判断本身的判定结果(真假)至少满足一次,同时,每个逻辑条件的可能值(真假)也至少被满足一次。即同时满足100%判定覆盖和100%条件覆盖的标准。
例如:
- 案例代码中有判定2个,条件3个,判定结果4个,条件结果6个
- 设计测试用例执行了3个判定结果,5个条件结果,判定条件覆盖率为:(3+5)/(4+6)=80%
2、判定条件覆盖法的局限性
5、条件组合覆盖
1、条件组合覆盖法设计用例
- 条件组合覆盖:设计测试用例,使得被测试程序中的每个判定中条件结果的所有可能组合至少执行一次。
例如:
- 案例代码中有判定2个,条件3个(判定1有2个条件,判定2有1一个条件),判定1的条件组合为4个,判定2的条件组合为2个
- 设计测试用例执行了5个条件组合,条件组合覆盖率为:5/(4+2)=83%
2、条件组合覆盖法的局限性
6、路径覆盖
1、路径覆盖法设计测试用例
- 路径覆盖:设计测试用例,覆盖程序中所有可能的路径。
例如:
- 案例代码中共有4条路径
- 设计测试用例执行了3条路径,路径覆盖率为3/4=75%
2、路径覆盖法的局限性
四、基本路径测试法
- 基本路径测试法:在程序控制流程图的基础上,通过分析程序的环路复杂性,导出基本可执行路径集合,从而设计测试用例
- 基本路径测试法步骤:
五、总结