作为测试行业的一名老司机,必须熟练掌握测试用例的写法。不管是服务端或后台web测试、APP测试或者是接口测试更或者是目前火的一塌糊涂的小程序或者是UI或接口自动化的测试,核心工作就是测试用例的编写。如果想在测试这条路上走的够远,那就必须掌握精通测试用例。
前置知识
我们经常说软件测试,那什么是软件呢?
软件的概念
软件就是数据、程序和文档的结合,我们平时测试就是操作数据,而程序则是测试的主体,文档就是我们工作的可视化,其中我们依靠的需求规格说明书和原型就是文档的一部分,我们编写的测试用例也是属于文档的一部分。
而软件测试就是以满足需求为目的,保障软件质量的一系列手段。我们所做的工作就是为了保证软件的质量,确定它可以满足用户的需求。
软件测试的流程
从最初的需求分析到最后的测试报告,这是一个完整的测试流程,指导我们每一步的测试工作。
测试的生命周期
任何事物都是有始有终,而测试也是一样的。也是有开始和结束的。
从需求分析得到测试点到测试评估完成测试报告就是测试的一个完整的生命周期。而其中测试用例的设计和编写则是整个生命周期的非常重要的一个环节--测试设计和开发。
测试用例
定义
测试用例是测试工作的核心,它是一组测试时的输入和输出的标准。
测试用例是软件需求的具体对照,通过测试用例和需求的一一对照,我们可以确定我们的测试是否能够覆盖需求,是否有遗漏的地方。
作用
- 检测软件是否满足客户需求
- 体现了测试的工作量
- 展现测试的设计思路
测试用例格式内容
- 用例编号:描述用例的ID,简单可以通过1,2,3等编号,复杂logoin_001
- 用例名称:相当于我们的名字,描述用例的名字,需要言简意赅
- 测试的背景:说明这个测试用例是什么样的测试用例,属于哪个项目
- 前置条件:告诉我们在执行这条用例之前需要满足什么样的条件,PS:测试登录的功能,那么前置条件是账号和密码门必须是注册过的账号和密码,否则肯定无法登录。
- 优先级和重要级:这里优先级和重要级没有必然关系,表明此用例的级别。
- 测试数据:是指测试时的输入数据,PS:登录时输入的账号和密码就是测试数据
- 测试步骤:描述我们操作时的步骤,如第一步做什么,第二步做什么
- 预期结果:描述我们每一步的操作对应的一个结果,PS:我们输入正确的账号和密码,那么预期结果就是登陆成功,进入主页
- 实际结果:就是执行测试时的出现的一个实际情况,通过预期结果和实际结果的对比,发现不满足需求的地方,从而不断提高软件质量
- 备注:描述一些其他信息,PS测试时使用的浏览器等
- 编写者:编写测试用例的人员
- 执行者:执行测试用例的人员
- 测试结果:通过预期结果和实际结果对比,表明测试结果是通过还是不通过,通过则表明该用例执行成功,满足需求;否则测试结果未通过,需要和开发以及需求提供者确认完善
一个测试用例大概就包括这些内容,根据具体情况具体分析,可能还包含一个其他信息,PS:测试web的浏览器信息,测试APP的手机型号等。所以不同的问题要具体分析,不能生搬硬套。
测试用例的编写步骤
从最初的需求分析到测试用例评审,评审的过程会不断修改完善测试用例,评审通过之后,一个完整的测试用例就生成了。
测试常用术语
按照软件测试的手段,软件测试分为黑盒、灰盒和白盒测试。
黑盒测试:把软件比作一个黑色的盒子,我们不知道盒子的内部结构,只能通过外部所暴露出来的接口功能进行测试。
灰盒测试:把软件比作一个半透明的盒子,我们可以看到里面的一部分内容,所以我们可以通过外部暴露的功能和盒子里面的数据进行比对得出测试结果。比如我们测试一个订单生成的功能,我们可以通过软件上生成的订单和数据库里面的数据进行对比,验证是否一致。
白盒测试:就是把软件比作一个透明的盒子,通过观察内部结构,直接推敲出软件是否满足用户需求。其中白盒测试时技术难度最高的测试。
按照软件行业发展,软件测试分为功能测试、性能测试和安全测试三个不同的专项测试,精通任何一个都可成为软件行业的专家。
功能测试:就是验证软件是否满足用户提出的表面需求
性能测试:测试软件的工作效率和承载量。如每年的双十一就是对淘宝的一次大型的人肉性能测试,来检验淘宝是否能够满足几亿用户同时在线操作等。
安全测试:是测试软件的用户信息不会被轻易的盗取,不会被一些用心不良的人利用而获取一些非法的利益,比如黑盒就是利用安全漏洞以达到其破坏或者盈利的意图。
每个方向都值得我们认真学习、探索,不断提高测试的深度和广度。
最后是兼容性、易用性、UI元素等测试是根据测试点划分的。
兼容性测试:是测试软件在不同平台的表现
易用性测试:是测试软件是否友好,满足用户使用的习惯等
UI元素:是检查页面的布局显示是否一致,美观之类的
测试用例设计
需求分析
需求就是客户需要的东西,客户的要求,一般需求可以从三个方面入手:业务需求、用户需求和功能需求。
如果没有需求怎么办呢?
很多小公司职位还不是很健全,所以可能没有产品经理这个岗位专门为各位提供需求的,很大可能是直接甩给你一个软件,让我们进行测试,那么这种情况应该怎么办呢?
其实也不难,我们直接参考市面上已经上线的同类型的成熟的产品就可以了,看看别人是怎么做的,我们就怎么做。比如一个电商的系统我们就去参考淘宝或京东之类的;比如一个点餐的系统我们就去参考美团或饿了么之类的
还有一个情况,需求模糊,这个时候我们该怎么办呢?
这个时候我们应该整理好已有的需求,把不明白有疑问的地方提出来和产品逐条确认,然后其他的还是参考同类型的产品的情况。
那么什么是测试点呢?
测试点就是通过需求分析对得出需要进行测试的具体内容
那测试点对测试用例的设计有什么好处呢?
- 快速:我们可以根据测试点,快速的设计出测试用例,
- 覆盖:测试点可以完全的覆盖我们的需求
- 方法:在测试点上,我们可以迅速应用测试方法
- 细节:最后,可以展现出需求的一些细节
测试用例编写方法
这里我们先来看下测试用例编写的注意事项:
- 测试用例是需要根据项目的实际情况设计测试用例的表格
- 测试用例用例的格式不是固定的,不要生搬硬套
- 测试用例需要根据具体的情况来编写
等价类划分法
因为测试是无穷无尽的,所以我们不可能去穷尽测试,所以我们需要使用等价类划分法,选择出最具有代表性的数据进行测试。
等价类划分法就是一种典型的重要的黑盒测试的方法,它将程序所有可能的输入数据划分为若干个子集(等价类),然后从每个部分中选取最具有代表性的数据当做测试用例,进行合理分类。测试用例有有效等价类和无效等价类代表组成,从而保证测试用例具有完整性和代表性。
有效等价类指的是对于程序规格说明或是需求来说是合理的、有意义的输入数据构成的集合,利用有效等价类可以检验程序是否满足了规格说明预先规定的功能和性能。有效等价类可以是一个,也可以是多个,根据系统的输入划分成若干个部分,从每个部分中选取少数有代表性的数据当做数据测试的测试用例。等价类是输入域的集合,比如登录时的账号,必须是邮箱或者手机号,那它的有效等价类就是符合规范的邮箱或手机号。
无效等价类值和有效等价类正好相反,那无效等价类指的就是对于程序规格说明或是需求来说不合理的、无意义的输入数据构成的集合,利用无效等价类可以找出程序异常的情况,检查程序的功能或性能实现是否不符合规范或者要求等,比如不满足的邮箱或者手机号的字符串就是无效等价类。
边界值分析法
边界值分析法就是输入或输出的边界值进行测试的一种黑盒测试方法。边界值可以作为等价类的一个补充,可以让我们更快速的选择适合的等价类。用边界值分析法设计测试用例时,一般和等价类结合一起使用,但它不是从一个等价类中选择任意一个值作为代表,而是将测试边界情况作为测试重点,选择正好等于、刚刚大于或者小于边界值的情况作为测试数据。比如我们注册的时候的密码要求是6到16位,那么等于低于6位,等于16或高于16位的就是边界值了。
场景法
简单点就是分析用户在使用这个软件的时候,所出现的使用场景,根据场景来设计测试用例。比如我们提取的测试点中,用户输入的测试账号和密码、或者不输入账号密码登录这些就是用户的使用场景。场景法要求我们对需求特别熟悉,通过运用场景来对系统的功能点或者业务流程的描述,从而提高测试的效果。
场景法一般包含基本流和备用流,从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和备用流来完成整个场景。
猜测法
猜测法是需要我们具备丰富的经验,依靠直觉猜测哪些地方可能出现问题,依靠经验猜测哪些容易被开发忽略,从而快速的得到测试结果。
还有其他一些因果图、判定表等测试方法,我们需要 针对不同的测试合理安排不同的测试方法。
这里推荐一个不错的测试用例的思路,对于测试行业的老司机也许会有不同的碰撞呢~
推荐:测试五十二讲
备注:以上内容根据慕课网总结完成