app测试做了一年,既然要写博客,开篇就来整理一下软件测试的基础知识,回顾巩固一下。本篇博客有借鉴也有自己的想法,希望可以多交流交流
什么是软件测试
对我来说,最好记,最合理的解释是:软件测试是一种实际输出与预期输出之间的审核或者比较过程,使用人工操作或软件自动运行的方式
(百度百科的定义)。为什么这么说呢,因为bug描述有4要素:前提条件,操作步骤,预期结果,当前结果
,也对应了测试用例中的要素点,举个例子,这样描述bug显得条理清楚,有木有?
bug描述:
前提:删除的评论在热门评论中
操作:所有评论页面,点击‘删除’按钮
预期结果:热门评论和最新评论中的评论都被删除
当前结果:仅最新评论中的被删除
软件测试的目的
就我的理解,软件测试的目的是:1.测试开发的功能是否符合需求,因为需求文档就是你测试的标准,不符合的就是bug;2.确认软件的质量
常规解释:测试的目的是为了发现尽可能多的bug,成功的测试在于发现了迄今尚未发现的bug,保证软件的质量;
功能测试完成后,以用户的身份来运行app,看功能是否符合使用规范,使用起来是否方便,用户使用app无非就是图个实用或者interesting,可以将自己的使用心得告诉产品经理,作为参考。
软件测试的过程
总结起来,也是4个步骤:需求评审–设计用例–用例测试–bug提交及验证
- 需求评审:因为我不需要参加需求讨论,所以这一步对我来说就是“啃”需求文档,需求了解的越深,测试时考虑的会更多更全面;不同公司会有不同的规定,但殊途同归,这一步的目的都是读懂需求,知道你的测试标准;
- 设计用例:根据需求分析,利用等价类划分法等方法设计用例,尽可能的覆盖可能发生的情况;
- 用例测试:根据测试用例测试已开发的功能;
- bug提交及验证:上边已经说了,bug描述有4个要素点:前提条件,操作步骤,预期结果,当前结果,提交的bug让开发能看懂就算是成功了;验证bug后记得修改bug状态,修改好了就关闭,仍有bug就重新打开并修改bug描述。
测试用例二三事!
1.bug管理工具
刚开始使用的平台是我们后台自主开发的QC平台,因为要升级,目前使用的是蒲公英的tracup平台
界面如下:
要素点已在上图标注,不管是什么平台,要素点都是一样的:项目名称、问题类型(一般为bug)、主题、bug描述、优先级、版本号、指派人
2.测试用例编写规范
刚开始编写测试用例时,只有一个模板,怎么写只能靠自己摸索,推荐几篇短小但是切合实际工作的
手机app测试记录一
输入框常见bug
测试用例规范
以下是摘抄的与我的测试过程相关的
- 初始化测试用例
进入功能模块(页面)后,某些空间会初始化填入数据,生成一个用例确保所有的初始数据正确。
- 边界的测试用例
每个数据项,生成一个边界用例(含最大/最小两个边界值)
字符串数据以字符串长度为计量单位
布尔值数据的所有取值都需测试
多个复选框一组时,需测同时被选中及都不被选中
下拉菜单、列表框、单选按钮组为最大、最小的2个取值 - 空值的测试用例
对于每个必填数据项,(不提供空值的除外)都生成一个用例,则预期结果提示该数据项为空。
- 格式错误的测试用例
对于输入框数据项,都生成一个用例,预期结果提示该数据项格式错误
日期/数字/字符串输入框
Email、邮编、用户名等带格式要求 - 溢出的测试用例
对于输入框数据项,都生成一个取值范围外的测试用例,预期结果提示该数据项超出范围
日期输入框:需添加上边界日期小于下边界日期的用例
数字输入框:如‘金额’一般为正整数,填入一个负数
字符串输入框:超出规定长度的字符串 - 关联的测试用例
对于相互关联的两个或多个数据项,生成一个用例,确保当一个数据项改变时,其它数据项的变化正确。 - 唯一值的测试用例
某些业务的数据字段要求是唯一的,生成一个或两个用例(新建,编辑),使得输入数据与原有数据在该字段重复,预期结果为返回该数据已存在的提示
- 权限不足的测试用例
对于功能模块,生成一个用例,以没有权限的用户身份访问,预期结果为提示权限不足 - 角色全新的测试用例
业务功能流程涉及一到多个角色,对于每个角色,都生成一个用例,预期结果为用户以这个角色登录时,他仅能执行权限允许的操作。
测试用例设计方法
黑盒测试常用设计方法:等价类划分法、边界值分析法、错误猜测法、因果图法
等价类划分法
等价类划分法是把所有可能输入的数据,即程序的输入域划分为若干部分(子集),然后从每个子集中选取少数具有代表性的数据作为测试用例
- 等价类分为:有效等价类和无效等价类
- 有效等价类:指对程序的规格说明来说是合理的、有意义的输入数据的集合
- 无效等价类:指对程序的规格说明来说是不合理的或无意义的输入数据的集合。无效等价类可能有1个或多个
转化为测试用例:
在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件:有效等价类、无效等价类,然后从划分出的等价类中按一下三个原则设计测试用例:
- 为每个等价类规定一个唯一编号;
- 设计一个新的测试用例,使其
尽可能多地覆盖
尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止; - 设计一个新的测试用例,使其
仅覆盖一个
尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
例如:输入密码的测试用例
在我们的app中,密码个数规定要输入6-16位,则可以列出一个不等式:6<=x<=16
有效等价类为:[6,16]
无效等价类为:[0,6),(16,无穷)
等价类判断出来后就是选择代表性的数据来写测试用例,通常代表性的数据与边界值有关,选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据。
最后选择的数据为:0,5,6,17
则测试用例为:密码为0/5/6/17位数的测试
边界值分析法
边界值分析法就是
对输入或输出边界值进行测试
的一种黑盒测试方法。该方法通常作为等价类划分法的补充,这种情况下,其测试用例来自等价类的边界
学习边界值的时候顺便了解一下什么是上点,内点,离点
因果图法
因果图法适合
输入域较多而输入域之间又存在互相影响的关系
。
因果图法就是找出输入因子以及其间的影响关系,确定每组输入因子所应输出的结果,画出因果图
,转换成判定表
,然后生成测试用例的一个测试方法
因果关系:恒等、与或非逻辑关系,
因之间的约束关系:逻辑异、逻辑或、唯一关系、限制关系、要求关系,具体可以参考这篇文章:实例介绍因果图法
错误推测法
错误推测法是
基于经验和直觉
推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法
所以使用错误推测法的前提就是经验的积累!
测试方法实例
一个功能的测试用例大多会涉及多个方法,例如:我们app的密码登录
首先要了解登录相关需求,在这只显示一下填写规则,从规则中总结输入条件
输入不同的手机号和密码,点击登录,会有不同的toast显示,所以结果有很多,先确定一下手机号和密码的关系:手机号格式正确后才会对密码做判断,所以联系如下图:
大关系确定后就要扣小细节了,根据边界值法和等价类分界法,手机号和密码分别设计测试用例可以分为以下几种情况:
接下来就是设计用例的总结,根据手机号密码联系图,
第一列可设计1个测试用例,
第三列仅看手机号就可以,0个手机号可归到第一个测试用例,所以这一列可以设置3个测试用例
第四列就有点复杂了,不过因为判断密码的前提是手机号有效,所以范围又缩小了,这一块可以做个判定表,然后删除冗余的,这个也不难,所以我就不做了,最后的测试用例如下:
基础知识就回顾到这,希望大家可以多多交流,如果有说的不对的地方,尽情回复!