日升时奋斗,日落时自省
目录
1、测试用例概念
测试用例是为了实施测试而被系统提供的一组集合,这组集合包含了测试环境,操作步骤,测试数据,预期结果等要素;
评价测试用例的标准:
<1>用例表达清楚,无二义性
<2>用例操作性强
<3>用例的输入与输出明确,一条用例只有一个预期结果
<4>用例的维护性好
<5>用例对需求的覆盖率高
测试用例优点:可以复用,评估需求概率
2、测试用例的设计方法
设计就会有分析,分析测试用例需求时,可以分为功能测试需求和非功能测试需求
2.1、基于需求进行用例测试设计
功能需求测试分析:
<1>系统各个功能界面的验证
<2>借助业务把功能串起来进行测试
<3>功能的一致性,交互性的测试(多功能)
<4>系统的不同输入,结果输出的业务数据测试
<5>功能错误的操作,异常操作的测试(负面测试)
非功能需求测试分析:
<1>针对不同的业务需求,稳定性,安全性,兼容性,容错性,可靠性都有一定的要求,在要求范围内进行测试,这些都属于非功能需求测试
这里就拿一个淘宝购物车的测试用例,就是根据这种方法进行写测试用例的(并不全,友友们可以自己再添加)
2.2、具体设计方法
2.2.1、等价类
等价类是指一组具有相同特征或属性的数据(基本相同的数据)
根据需求将输入划分为若干等价类,等价类中的选出一个测试用例,这个测试用例能通过就说明该等价类都可以通
这里举个例子来理解,男朋友一般不舍得给自己买奶茶,但是他有女朋友,可以给女朋友买,顺便尝一口,也就是知道这个好不好喝了(同时也测试成功,确实好喝)。
注:适用于数据量大,不能穷举的情况,
等价类就被分为两个类:有效等价类、无效等价类
这里举一个例子理解这两个等价类:例如一个注册业务,需要的是注册密码6-15位
有效等价类测试:6-15位之间进行测试
无效等价类测试:小于6 和 大于 15位进行测试
总结:①充分理解需求,②划分有效等价类、无效等价类,③从有效等价类中抽取其中给一个数据进行设计测试用例,从无效等价类中抽取一个进行测试
2.2.2、边界值
边界值分析法就是输入或者输出的边界值进行测试的一种黑盒测试方法,边界值分析法可以作为等价类分析法的补充,相当于处理特殊情况,就是在等价类的边界上进行测试;
设计测试用例根据这三个点进行划分边界点:上点(边界上的点)、内点(边界内的点)、离点(边界附近的一个点)
离点理解:闭区间区间外距离上点最近的点,开区间区间内距离上点最近的点
测试用例:
2.2.3、判定表
判定表是表达逻辑判断的工具
有这样的几个关系:与、或、恒等、非
恒等解释:条件为真,结果为真;
非:条件为假,结果为真;
如何设计这样的一个判定表的测试用例:
<1>分析所有可能的输入和可能的输出
<2>找出输出和输入之间的对应关系
<3>设计判定表
<4>判定表对应到每个测试用例
假设一个业务订单处理规则为:淘宝的节日活动,订单已提交,订单合计金额大于300元或有红包,则进行优惠
输入:订单已提交,订单金额大于300,有红包(条件)
输出:优惠,不优惠(结果)
判定表(Y表示条件成立,N表示条件不成立):
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
订单提交 | Y | Y | Y | Y | N | N | N | N |
金额大于300 | Y | Y | N | N | Y | Y | N | N |
有红包 | Y | N | Y | N | Y | N | Y | N |
优惠 | Y | Y | Y | N | N | N | N | N |
不优惠 | N | N | N | Y | Y | Y | Y | Y |
将判定表转化测试用例:其实就将表转为条件,(当然有判定表都能表达需要了,但是后期可能添加测试要素,所以写成以下测试用例的样子)
2.2.4、正交表法
正交表是一种矩阵,其中列代表测试因素,行代表测试水平 ,每个单元格代表一个测试用例。正交表的设计方法有很多种,最简单的正交表是L 4 (2 3),含意如下:“L”代表正交表;L 下角的数字“4”表示有 4 横行,简称行,即要做四次试验;括号内的指数“3”表示有3 纵列,简称列,即最多允许安排的因素是3 个;括号内的数“2”表示表的主要部分只有2 种数字,
因素:需求的一个输入(变量)
性质:每一列各个数字出现的次数都一样多,任何两列中的各有序数对出现的次数都一样多
正交表设计测试用例:
充分理解需求--->确定因素水平-->画正交表-->补充正交表-->将正交表转为测试用例
举例理解:
注册账号:姓名、邮箱、密码、确认密码、验证(这些都是因素)
水平:填写:不填写
这次我们就不在手动写了,因为因素多了,也不好写,所以我们这里推荐一个allpairs工具画正交表(直接搜索下载就行)这里教友友们怎么用allpairs
首先创建Excel表格:
正交表部分:
测试用例(其实就是照着正交表转为条件表达式):
2.2.5、场景设计法
场景设计法就是走一个正常的流程
当前测试用例就可以写,按照次事件流进行编写测试用例,将用户经常使用的模块串联到一起进行测试;
举例:如果第一个操作直接就是卡断,那就没有后面什么事情了,这样测试就会有很多可能的测试用例
2.2.6、错误猜测法
错误猜测法是我们自身长期进行测试总结的经验,没有固定的解释,依赖于个人能力
还是以注册为例:
<1>校验中特殊字符空格的处理
<2>密码校验中大小写区别
<3>姓名中的特殊字符
<4>密码发送是否明文 等...还是很多功能上的小细节
3、模拟弱网情况
这里我们使用Fiddler(可以直接下载)模拟弱网操作:
首先先让fiddler打开弱网步骤:Rules-->performance-->Simulate Modem Speeds(点击)
选中后Simulate Modem Speeds 前面会有一个 √ 号
此时打开用户规则 :Rules-->Customize Rules 点击这里的时候需要选中一个访问
注:网速会变得更慢。具体的速度取决于您的网络环境和电脑配置,网速会变得更慢。具体的速度取决于您的网络环境和电脑配置
4、接口测试
这里使用postman测试接口,这里我们就拿 https://gitee.com/ 来进行操作
这里的访问路径有的会有对应的参数,有的没有,当前就没有参数
如果有参数的话,那参数是否会有特殊处理呢(细节化处理的话就是针对错误页面处理)
5、测试分类
注:以下分类也只是部分,不是全部
5.1、按照测试对象划分
5.1.1、界面测试
<1>验证界面内容显示的完整性,一致性,准确性,友好性,比如界面内容
<2>验证整个界面布局和排版是否合理
<3>对界面不同控件的测试,有效和无效状态是否合理
<4>界面的布局和色调符合当下时事的发展
5.1.2、可靠性测试
是指系统正常运行的能力或者程度,一般用正常向用户提供软件服务的时间占总时间的百分比表示
可靠性=正常运行时间 /(正常运行时间+非正常运行时间)* 100%
5.1.3、容错性测试
容错性测试是指系统能够处理异常,不至于系统崩溃,从而能够提高系统的可用性
容错性测试包括:
<1>输入异常数据或进行异常操作,以检验系统的保护性,如果系统的容错性好,系统针对错误就会内部消化,不至于系统崩溃
<2>灾难恢复性测试:通过各种方法,在发布前强制发生故障,然后验证系统已保存的用户数据是否丢失,系统和数据是否能尽快恢复
5.1.4、文档测试
相关文档有3大类:开发文档、用户文件、管理文件
文档测试关注:文档的术语、文档正确性、文档完整性、文档一致性、文档易用性
5.1.5、兼容性测试
兼容性测试需要兼容的环境、考虑软硬件的兼容,以下方面
兼容性测试包含以下方面:
<1>硬件环境:包括不同型号的计算机、服务器、网络设备等。
<2>软件环境:包括不同版本的操作系统、数据库、中间件、应用程序等。
<3>浏览器环境:包括不同版本的IE、Firefox、Chrome、Safari等主流浏览器。
<4>分辨率和屏幕大小:测试软件在不同分辨率和屏幕大小下的显示效果。
<5>语言环境:测试软件在不同语言环境下的显示效果和功能是否正常。
<6>网络环境:测试软件在不同网络环境下的连接速度和稳定性。
<7>其他特殊环境:如移动设备、虚拟机等。
5.1.6、易用性测试
<1>标准性和规范性
<2>直观性:简单易懂的界面
<3>灵活性:例如支持操作较多,针对不同人适应性强
<4>舒适性:也就是美观性,点击界面流畅度,提示辞藻到等
5.1.7、安全测试
安全测试的目的是确定软件系统的所有可能的漏洞和风险点,这些漏洞和风险点可能导致公司的信息、财务和声誉在外受损
<1>代码安全性问题SQL/XML注入
<2>不安全的数据存储或者传递
<3>数据文件、邮件文件、系统配置文件有危害系统的信息或者数据
<4>有问题的访问控制、权限分配
5.1.8、性能测试
性能测试包括对软件系统的响应时间、吞吐量、并发用户数、资源利用率等指标进行测量和分析,以确定软件系统是否能够满足用户需求和预期的性能要求
<1>响应时间
<2>吞吐量
<3>并发用户数
<4>资源利用率
<5>指标进行测量和分析
5.2、查看代码划分
5.2.1、黑盒测试
黑盒测试:不考虑软件内部的实现细节和代码逻辑,而是基于用户需求和功能规格说明书来设计测试用例(基于功能的测试)
功能测试:例如登录注册系统,就是测能不能登上去,密码长度,账号要求(能看得见界面功能进行测试)
优点:
<1>不需要了解程序内部的代码实现,也不关注软件内部的实现
<2>直接从用户角度出发设计测试用例,知道用户会用到哪些功能,会遇到哪些问题,需要测试人员有一定经验
<3>黑盒测试用例基于软件需求开发文档,不容遗漏需要测试的功能
5.2.2、白盒测试
白盒测试又称为结构测试或逻辑测试,它一般用来分析程序的的内部结构,针对程序的逻辑来设计测试用例进行测试
测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖
白盒测试目的包括:
<1>发现代码中的错误和缺陷,如空指针引用、数组越界、类型转换异常等。
<2>确保软件的功能正确性,如输入输出数据的正确性、算法的正确性等。
优点:代码覆盖率较高
缺点:业务功能覆盖率较低
5.2.3、灰盒测试
灰盒测试:是介于白盒测试与黑盒测试之间,灰盒测试多用于集成测试阶段
5.3、开发阶段划分
5.3.1、测试金字塔
测试金字塔:主要有UI测试(界面测试)、相关服务测试、单元测试
单元测试是最容易的,其次是相关服务的测试,最后才是界面测试,因为界面测试不能确保某个位置有问题;
例如:一个网页商城页面,物品很多,每个都需要去界面测试,范围大,也不容易检查出来
5.3.2、单元测试(模块测试)
单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。
5.3.3、集成测试
集成测试也称联合测试(联调)、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。集成主要目的是检查软件单位之间的接口是否正确
5.3.4、系统测试
在系统测试中,测试人员会针对整个系统进行测试,而不仅仅是其中的单个组件或模块。测试人员会模拟真实的使用场景,执行各种测试用例,以验证系统是否能够正确地执行其功能,并且能够处理各种输入情况和边界条件
5.3.5、回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误,回归测试的成本越来越大,通过选择正确的回归测试策略来改进回归测试的效率和有效性是很
有意义的。
5.3.6、冒烟测试
目的是确认软件主要功能和核心流程正常,在正式进行系统测试之前执行;保证基本功能正常,不阻碍后续的测试;回归测试和冒烟测试都属于系统测试