软件测试基础整理

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平台
界面如下:

tracup
要素点已在上图标注,不管是什么平台,要素点都是一样的:项目名称、问题类型(一般为bug)、主题、bug描述、优先级、版本号、指派人

2.测试用例编写规范

刚开始编写测试用例时,只有一个模板,怎么写只能靠自己摸索,推荐几篇短小但是切合实际工作的
手机app测试记录一
输入框常见bug
测试用例规范

以下是摘抄的与我的测试过程相关的

  1. 初始化测试用例
    进入功能模块(页面)后,某些空间会初始化填入数据,生成一个用例确保所有的初始数据正确。

1

  1. 边界的测试用例
    每个数据项,生成一个边界用例(含最大/最小两个边界值)
    字符串数据以字符串长度为计量单位
    布尔值数据的所有取值都需测试
    多个复选框一组时,需测同时被选中及都不被选中
    下拉菜单、列表框、单选按钮组为最大、最小的2个取值
  2. 空值的测试用例
    对于每个必填数据项,(不提供空值的除外)都生成一个用例,则预期结果提示该数据项为空。

23

  1. 格式错误的测试用例
    对于输入框数据项,都生成一个用例,预期结果提示该数据项格式错误
    日期/数字/字符串输入框
    Email、邮编、用户名等带格式要求
  2. 溢出的测试用例
    对于输入框数据项,都生成一个取值范围外的测试用例,预期结果提示该数据项超出范围
    日期输入框:需添加上边界日期小于下边界日期的用例
    数字输入框:如‘金额’一般为正整数,填入一个负数
    字符串输入框:超出规定长度的字符串
  3. 关联的测试用例
    对于相互关联的两个或多个数据项,生成一个用例,确保当一个数据项改变时,其它数据项的变化正确。
  4. 唯一值的测试用例
    某些业务的数据字段要求是唯一的,生成一个或两个用例(新建,编辑),使得输入数据与原有数据在该字段重复,预期结果为返回该数据已存在的提示

7

  1. 权限不足的测试用例
    对于功能模块,生成一个用例,以没有权限的用户身份访问,预期结果为提示权限不足
  2. 角色全新的测试用例
    业务功能流程涉及一到多个角色,对于每个角色,都生成一个用例,预期结果为用户以这个角色登录时,他仅能执行权限允许的操作。

测试用例设计方法

黑盒测试常用设计方法:等价类划分法、边界值分析法、错误猜测法、因果图法

等价类划分法

等价类划分法是把所有可能输入的数据,即程序的输入域划分为若干部分(子集),然后从每个子集中选取少数具有代表性的数据作为测试用例

  • 等价类分为:有效等价类和无效等价类
  • 有效等价类:指对程序的规格说明来说是合理的、有意义的输入数据的集合
  • 无效等价类:指对程序的规格说明来说是不合理的或无意义的输入数据的集合。无效等价类可能有1个或多个

转化为测试用例:
在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件:有效等价类、无效等价类,然后从划分出的等价类中按一下三个原则设计测试用例:

  1. 为每个等价类规定一个唯一编号;
  2. 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
  3. 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。

例如:输入密码的测试用例
在我们的app中,密码个数规定要输入6-16位,则可以列出一个不等式:6<=x<=16
有效等价类为:[6,16]
无效等价类为:[0,6),(16,无穷)
等价类判断出来后就是选择代表性的数据来写测试用例,通常代表性的数据与边界值有关,选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据。
最后选择的数据为:0,5,6,17
则测试用例为:密码为0/5/6/17位数的测试

边界值分析法

边界值分析法就是对输入或输出边界值进行测试的一种黑盒测试方法。该方法通常作为等价类划分法的补充,这种情况下,其测试用例来自等价类的边界

学习边界值的时候顺便了解一下什么是上点,内点,离点

因果图法

因果图法适合输入域较多而输入域之间又存在互相影响的关系
因果图法就是找出输入因子以及其间的影响关系,确定每组输入因子所应输出的结果,画出因果图,转换成判定表,然后生成测试用例的一个测试方法

因果关系:恒等、与或非逻辑关系,
因之间的约束关系:逻辑异、逻辑或、唯一关系、限制关系、要求关系,具体可以参考这篇文章:实例介绍因果图法

错误推测法

错误推测法是基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法

所以使用错误推测法的前提就是经验的积累!

测试方法实例

一个功能的测试用例大多会涉及多个方法,例如:我们app的密码登录

登录

首先要了解登录相关需求,在这只显示一下填写规则,从规则中总结输入条件
填写规则

输入不同的手机号和密码,点击登录,会有不同的toast显示,所以结果有很多,先确定一下手机号和密码的关系:手机号格式正确后才会对密码做判断,所以联系如下图:
联系

大关系确定后就要扣小细节了,根据边界值法和等价类分界法,手机号和密码分别设计测试用例可以分为以下几种情况:

代表数据

接下来就是设计用例的总结,根据手机号密码联系图,
第一列可设计1个测试用例,
第三列仅看手机号就可以,0个手机号可归到第一个测试用例,所以这一列可以设置3个测试用例
第四列就有点复杂了,不过因为判断密码的前提是手机号有效,所以范围又缩小了,这一块可以做个判定表,然后删除冗余的,这个也不难,所以我就不做了,最后的测试用例如下:

测试用例

基础知识就回顾到这,希望大家可以多多交流,如果有说的不对的地方,尽情回复!

0%