测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。
设计测试用例原则一:测试用例中一个必需部分是对预期输出或结果进行定义
笔试的时候编写测试用例题,需要按照Excel表格的方式来答题
面试的时候回答测试用例,按照思维导图一一道出即可
什么是要素?我们在编写测试用例的时候,每个用例需要给出这些要素对应的信息。
用例编号 | test-01 |
标题 | 成功注册网易邮箱 |
测试方式 | 手工测试 |
功能模块 | 注册登录 |
重要性 | 重要 |
测试前提 | 系统运行正常,邮件服务器已开启 |
win10 Chorme版本103.0.5060.66(正式版本)(64位) | |
邮箱地址:123456789@qq.com 密码:123456 手机号:12312341234 | |
测试步骤 | l.打开谷歌浏览器,输入网易注册地址:https:/mail.l63.com/register/index.htm 2.输入邮箱地址,密码,手机号,获取验证码并输入正确的验证码,勾选协议 3.点击注册按钮 |
期望结果 | 展现注册成功的结果页,并且使用刚注册的账号可以正常登录并进入邮箱首页 |
为什么需要测试用例呢,不写测试用例可以进行测试吗?测试中可能会遇到很多问题,诸如:
正确设计测试用例的思想:常规思维+逆向思维+发散性思维
设计测试用例的原则二:
设计测试用例的万能公式:
功能测试+界面测试+性能测试+兼容性测试+易用性测试+安全测试
功能测试是一个试图发现程序与其外部规格说明之间存在不一致的过程。外部规格说明是一份从最终用户的角度对程序行为的精确描述。功能测试通常是一项黑盒操作。在进行功能测试时,需要对规格说明进行分析以提炼测试用例,本课程中讨论的具体设计测试用例的方法尤其适用于功能测试。
然而,不仅是工作中还是面试中,可能会存在需求不明确的功能?这种情况下该如何进行功能测试?
对软件界面上所有的内容都需要进行测试。
要求:
性能测试和功能测试的区别是:功能测试检查软件是否做了,而性能测试测试软件做的好不好。
软件是部署在硬件系统之上,并依赖所需要的软件环境。如QQ可以在PC端打开,也可以在移动端打开;移动端又分为IOS系统和Android系统,且市面上手机又有不同的品牌、不同的机型、不同的版本。软件是否能够在不同的环境下正确运行需要测试人员进行验证。
问题:既然市面上有众多版本的机器,那么在执行兼容性测试时难道所有的机型都需要全面覆盖吗?
选取标准:
实际在企业中,后台是可以获取到使用产品的机型,并以报表的形式统计在后台,供产品人员或其他人员制定策略参考。
易用性测试的标准是检查产品是否具备简单易上手的属性。假如测试人员从来没有安装或使用过该产品,作为一个新用户,对当前产品是否能够快速适用产品的使用流程。
安全测试和性能测试一样都是比较大的领域。常见的安全问题如:
隐私数据明文显示。
参数未强校验导致SQL注入
。
越权:普通用户也可以执行管理员权限的操作。
除了万能公式之外,还有一个比较常用的测试类型:弱网测试、安装卸载测试
弱网测试的目的就是尽可能保证用户体验,关注的关键点包括:
弱网需要借助工具来构造弱网,这里推荐使用fiddler
1) fiddler配置代理
2) fiddleri进行抓包(桌面/移动端)
3) fiddler如何构造弱网条件
针对需要进行部署的软件,除了软件功能外,我们还需要关注软件的能够成功安装和卸载
基于需求的设计方法也是总的设计测试用例的方法,在工作中,我们需要参考需求文档/产品规格说明书来设计测试用例。
测试人员接到需求之后,要对需求进行分析和验证,从合理的需求中进一步分析细化需求,从细化的需求中找出测试点,根据这些测试点再去设计测试用例。
以该注册邮箱账号需求为例来设计测试用例。
账号注册,账号登录
上述设计的测试用例,存在用例还未完全设计完成,“姓名必填,6~15位的字符类型”,这样一个具体的需求该如何来设计测试用例呢?
测试的时候通过穷举法来测试6位、7位、8位.14位,15位是否测试通过,这样的方法能够满足测试的要求吗?若此时把范围从“6~15位”改成“6~150位呢”?试想一下这样一个简单的测试点需要测试多久呢,显示是不符合企业测试要求的。
而等价类法的出现就解决了穷举法不能解决的问题
依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题。
等价类分类:
根据等价类设计测试用例的方式:
完善上述未完成的用例
缺点:等价类只考虑输入域的分类,没有考虑输入域的组合,需要设计其他方法和补充
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类分法的补充,这种情况下,其测试用例来自等价类的边界。
边界值包含:边界值+次边界值
将上述用例通过边界值继续补充
通过等价类和边界值方法我们完成了部分用例的补充
当前还剩下一个场景的用例未补充完成,“只填写部分选项”,这里到底要设计多少测试用例呢?
通常来说,为了保证系统的测试覆盖率,我们首先能够想到的就是排列组合。
正交法的目的是为了减少用例数目,用尽量少的用例覆盖输入的两两组合
正交试验设计是研究多因素多水平的一种设计方法,它是根据正交性,由试验因素的全部水平组合中挑选出部分有代表性的点进行试验,通过对这部分试验结果的分析了解全面试验的情况,找出最优的水平组合。正交试验设计是一种基于正交表的、高效率、快速、经济的试验。
正交表:
如图最简单的正交表是L(4)(2(3)),含意如下:“L”代表正交表;L下角的数字“4”表示有4横行,简称行,即要做四次试验;括号内的指数“3”表示有3纵列,简称列,即最多允许安排的因素是3个;括号内的数“2”表示表的主要部分只有2种数字,即因素有两种水平1与2。
正交表的构成:因素数、水平数、行数
因素:对指标的影响条件,通常是正交表中的一项
水平:因素对应的可选项
正交表的性质:
根据正交表的性质,一般人很难通过手动设计出正交表
正交法设计测试用例的步骤:
allparis
工具生成正交表a. 将因素和水平写入Ecel表格中
b. allparis
目录下创建新的文本文件new.txt
,复制Excel
中的因素和水平,直接粘贴到文本中保存并退出
c. 使用allparis
命令生成正交表:allparis.exe new.txt>zhengjiao.txt
将上述用例通过正交法继续补充
因素:姓名、电子邮箱、密码、确认密码、验证码
水平:填写、不填写
allparis
工具生成正交表a. 将因素和水平写入Ecel表格中
姓名 | 电子邮箱 | 密码 | 确认密码 | 验证码 |
填写 | 填写 | 填写 | 填写 | 填写 |
不填写 | 不填写 | 不填写 | 不填写 | 不填写 |
b. allparis
目录下创建新的文本文件test0729.txt
,复制Excel
中的因素和水平,不进行任何修改直接粘贴到文本中保存并退出
上述图片是直接在txt里编辑然后去执行生成操作得到的结果,会出现报错,因为allpairs对格式要求很严格,所以在Excel中编辑以后直接复制过来即可
c. 使用allparis
命令生成正交表:allparis.exe test0729.txt > 0729cs.txt
(将生成的正交表数据放入0729cs.txt
文件中)
~表示可以是任意选项:填写/不填写
注意:使用allparis生成的正交表和预期有出入,但是不影响我们用来设计测试用例。
通过具体的方法能够将测试用例设计的更加完整和规范。
需求中会存在各种各样的场景,现在我们把需求改成如下的要求:
用户输入的账号中包含admin
字符,或者通过内部链接进入注册页面,提交注册按钮成为管理员身份;反之无管理员身份。
通过这个需求可以看出,不同的组合操作可能对应不同的结果。采用正交法无法解决这样的问题。而正交法能够解决需要考虑输入之间的组合关系对应不同结果的场景。
判定表
判定表是一种表达逻辑判断的工具,形如:
通过该图,可以把所有条件对应的结果清晰的表达出来。我们就需要借助该表来清晰的写出测试用例。
根据判定表法设计测试用例的步骤:
确认了步骤后,我们使用判定表法进一步对上述需求进行测试用例的设计:
1. 确认需求中输入条件和输出条件
输入条件:账号包含admin字符 (a)
内部注册链接 (b)
点击注册按钮 (c)
输出条件:管理员 (1)
无管理员 (2)
2. 找出输入条件和输出条件之间的关系
输入条件:ac ab bc abc a b c 非abc
对应结果:1 2 1 1 2 2 2 2
3. 画判定表
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ||
输 入 条 件 | 账号包含 | Y | Y | N | Y | Y | N | N | N |
内部注册链接 | N | Y | Y | Y | N | Y | N | N | |
点击注册按钮 | Y | N | Y | Y | N | N | Y | N | |
输出 条件 | 管理员 | Y | N | Y | Y | N | N | N | N |
非管理员 | N | Y | N | N | Y | Y | Y | Y |
4. 根据判定表编写测试用例
现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。
通过运用场景来对系统的功能点或业务流程的描述,从而提高测试效果的一种方法。用例场景来测试需求是指模拟特定场景边界发生的事情,通过事件来触发某个动作的发生,观察事件的最终结果,从而用来发现需求中存在的问题。我们通常以正常的用例场景分析开始,然后再着手其他的场景分析。
场景法一般包含基本流和备用流,从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和备用流来完成整个场景。
场景主要包括4种主要的类型:正常的用例场景,备选的用例场景,异常的用例场景,假定推测的场景。
读完上面的概念是不是一脸懵,场景法就是一个常规的流程中,某些阶段可能会出现一些意想不到的情况,常规流程是基本流,从阶段中分析出来的不同情况被称之为备选流,场景法比较考验同学们的发散思维。
针对场景法给出生活中的案例。以逛街买衣服为例,讲讲场景法的使用方法。
该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,是测试用例更容易理解和执行。
典型的应用是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务感觉,从而避免陷入功能细节忽视业务流程要点的错误倾向
案例:
还是根据邮箱账号注册的案例,根据场景法来设计测试用例TODO
根据场景法设计测试用例的步骤
编写测试用例:
错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉,推测出软件可能存在的缺陷,从而针对性地设计测试用例的方法。
这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个人的经验和直觉。
错误推测法和目前流行的“探索式测试方法”的基本思想一致,这类方法在敏捷开发模式下的投入产出比很高,被广泛应用于测试。
这个方法的缺点是难以系统化,并且过度依赖个人能力。
还是根据邮箱账号注册的案例,根据场景法来设计测试用例
以注册为例
注意:笔试的时候编写测试用例需要使用传统的编写方式,须完整写出测试用例以及必要要素。面试的时候只需要按照思维导图模式说出测试用例。
①写测试用例
用例截图
②执行测试
选取几个用例的步骤截图放到这里仅做展示
4. 测试总结
覆盖率多少个页面、用例是否全部执行通过,发现了多少bug,bug出现的原因/涉及到的页面在哪里
存在功能可以在命令行使用zip/unzip命令对文件进行解压缩,这样的场景如何来设计测试用例
zip命令
功能测试:对不同文件类型进行测试
界面测试:
性能测试:
兼容性测试:
易用性测试:
安全性:
对博客系统的博客详情页接口进行测试用例的设计
接口:http://192.168.47.135:8080/blog_system/blog?blogId=10
接口请求示例:
通过curl命令我们可以在命令行上请求接口,对接口进行测试
如何对当前接口设计测试用例呢?
不同的请求方式:
参数组合(如果接口需要拼参数的情况下):
不同的参数格式:
接口性能:
对接口进行测试时,使用curl命令进行接口测试在操作上并不理想,实际在工作中我们常常使用接口测试工具来提供测试的质量和效率,常用的接口测试工具有postman