软件测试基础(二)-需求、测试用例
一、软件测试需求分析
1、为什么要需求分析
a、软件测试需求是设计测试用例的依据。
b、有助于保证测试的质量和进度。
c、软件测试需求是衡量测试覆盖率的重要指标。
2、软件测试需求分析步骤
a、列出需求文档中的具有可测性的原始需求;
b、对每⼀条需求进行细化分解,形成可测试的分层描述的测试点;
c、对形成的每⼀个测试点,从软件产品的质量需求来分析,确定测试执行时需要实施的测试类型;
d、建立测试需求跟踪矩阵,对测试需求进行管理。
3、测试点分析
a、通过分析需求描述中的输⼊、输出、处理、限制、约束等,给出对应的验证内容(功能测试)。
b、各个模块之间的业务顺序,和各个功能模块之间传递的信息和数据,对存在交互的功能项,给出对应的验 证内容(功能业务测试)。
c、考虑到需求的完整性,要充分覆盖软件需求的各种特征,包含隐性需求的验证,比如界面的验证,异常情况 (界面、易用性、兼容性、安全性、性能)。
4、测试需求相关方的影响
开发约束
- 由于了解需求不明确,功能研发不合格导致很多BUG
- 对于BUG反复修改,影响进度和团队情绪
- 进度影响,很可能使公司产品失去市场先机
测试约束
- 与开发是相互制约的关系,如果不了解需求,会大部分时间都被开发牵着鼻子走
- 不能及时发现开发的偏差,影响进度和团队情绪
- 没办法保证测试质量
5、
⼀致性:主要包括用例模板⼀致;各同事的编写⼿法⼀致;以及用例的细腻度⼀致。
即:用例
积分成长值流程:
方式一:思维导图
方式二:Excel
积分流程:
积分成长值流程:
方式三:checklist
其中:checklist使用的场景具体如下:
a、开发转测了,但是时间非常紧张(发一个hotfix版本,来修复这个issue),要求今天上线,那么这个时候测试编写checklist把需要测试的点梳理出来进行测试,同开发、产品经理等进行讨论。
三、测试用例设计方法
1、等价类划分法
a、定义:在所有测试数据中,具有某种共同特征的数据集合进行划分。
b、分类:
- 有效等价类:满足需求的有效数据集合
- 无效等价类:不满足需求的无效数据集合
即:测试一个产品,需要考虑它的正确场景,也需要考虑它的异常场景。
c、举例:如电话号码,那么有效数据就是符合运营商电话号码的规则,无效就是不符合,如连续的11个同样的数字以及非11的数字等。
2、边界值分析法
边界值测试用例是针对等价类测试用例方法的补充,因为等价类测试用例的方法只考虑到了输入数据的有效数据和无效数据,但是没有考虑到边界的情况。
a、定义:是对输⼊或输出的边界值进行测试的⼀种测试方法。
b、举例:比如我们在新浪邮箱的注册页面,我们需要注册“邮箱地址”,我们输入“123”,系统就会提示用户:
3、判定表驱动分析方法
a、定义:判定表是分析和表达多逻辑条件下执行不同操作情况下的工具。
b、判定表的优点
能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利⽤判定表能够设计出完整的测试用例集合。
在⼀些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。
c、判定表通常由四个部分组成,如下图所示:
1)条件桩(Condition Stub):列出了问题得所有条件。通常认为列出的条件的次序无关紧要。
2)动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
3)条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。
4)动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。
d、举例:如招聘类网站筛选出的结果排序,可能会存在多个条件来筛选出结果,如年限,薪资,地区等等,需要先列出来,然后判定表驱动分析方法。
4、因果图法
在判定表的基础上,根据被测对象列出的条件,来使用排列组合的方式来验证各个不同条件下(并且以及或者关系)来判断程序的结果情况.
a、定义:指的是被测对象有多个输入条件,根据不同的输入条件之间的关系(并且,或者,非)来匹配筛选出不同的结果。
b、排列组合:因果图是根据输入的不同条件来根据排列组合来设计不同条件下的测试用例。
c、举例:比如我们在boss直聘里,搜索“软件测试工程师”,这一职位,我们还想要,输入区域、学历要求、工作经验这三个,这就是一种并且的关系。
5、正交实验分解法
在因果图的基础上,使用排列组合下来的测试用例个数是非常多,导致测试用例的个数是非常多的,那么使用正交实验分解法可以优化测试用例的个数,选择有代表性的数据来进行测试
a、定义:因果图根据输入的N个不同条件,这样组合下来会导致测试用例的个数是呈指数级的增加,这样导致测试的资源(人力,时间资源)上根本无法满足测试的时间要求。那么这个时候只需要测试有代表性的数据就可以了,那么使用的方法就是正交实验分解法。
b、举例:比如我们在拉勾网,去测试“软件测试工程师”这一职位,由于学历、地狱、薪资、年限等的不同,我们不太可能去排列组合,这时候我们可以去测试全国互联网比较发达的地方的数据就可以了。
从某种程度上来说,以上五种测试方法都是功能性测试。
6、错误推测方法
a、定义:基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。
b、错误推测方法的基本思想: 列举出程序中所有可能有错误和容易发生错误的特殊情况。
c、针对被测产品的非功能性的测试用例,主要使用探索性测试的方法,来验证被测产品可能存在问题。
一般会有以下的特殊情况:
i、在波浪式的交互过程中,一直往下滑动,可能会出现浏览器的卡死,比如淘宝的首页。
ii、在列表中翻页可能也会存在浏览器的卡死。
iii、Java语言编写的应用程序,大概率可能存在内存泄露(Java.lang.OutOfMemory,简称:OOM)
内存泄漏:一个应用程序都会分配内存,比如分配了2G,但是程序在使用的过程中,由于程序受到了太大的压力,导致使用的内存超过了分配给自己的内存,那么就会导致内存溢出。
iv、一码通,对该应用程序进行二维码扫描并且一直在进行扫描,那么很有可能存在扫描二维码后出现不了结果或者是导致结果一直加载中。
7、场景设计方法
a、定义:指的是针对一个系统从输入流开始一直到输出流的完整性的测试,主要考虑的是被测对象的业务流程,也就是各个不同场景方法的测试。
b、基本流和备选流:如下图所示,图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。备选流⽤不同的色彩表示,⼀个备选流可能从基本流开始,在某个特定条件下执行,然后重新加⼊基本流中(如备选流1和3);也可能起源于另⼀个备选流(如备选流2),或者终止用例而不再重新加⼊到某个流(如备选流2和4)。
c、举例:比如淘宝,从一个商品上架一直到商品的出售。
8、功能图分析方法
a、定义:它是非功能性的测试用例设计方法,是针对被测程序内部的一种测试方法,主要测试的对象是被测程序的内部代码,使用代码的逻辑来验证被测对象的程序逻辑是否存在问题,是白盒的一种方法。
b、功能图方法中,要用到逻辑覆盖和路径测试的概念和方法,其属白盒测试方法中的内容。
逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计方法,该方法要求测试人员对程序的逻辑结构有清楚的了解,由于覆盖测试的目标不同,逻辑覆盖可分为:语句覆盖、判定覆盖、判定-条件覆盖、条件组合覆盖及路径覆盖。
路径测试:是指根据路径设计测试用例的一种技术,基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。
实战:通过思维导图,编写有关”车主小程序首页“的测试用例,当然也会有考虑不周全的地方。
其中:openID:从小程序来的所有订单以及请求,小程序都会自带一个唯一的标识,唯一的标识就是openid
四、编写测试用例
2、编写测试用例的技巧:
1)在一个新的环境里面,首先确认在什么地方编写测试用例,以及以什么方式编写;
2)确认清楚后,编写一小部分,然后让对方去看下颗粒度,在对方的建议上继续调整。
4、实战:
"读书会列表"需求文档如下:
测试用例如下:
"热评书潮"需求文档如下:
测试用例如下:
五、评审测试用例
1、评审测试用例都有哪些人参与?开发、产品、测试、PM(leader)
2、测试用例的评审的流程:
1)自己编写完测试用例后,预定会议室,同时和大家约这个开会的时间看是否都能够参加;
2)到约定的时间,组织相关的人到会议室(那么这个时候会议的主持人就是你自己,会议的气氛以及氛围营造都是你自己来控制的)
3)开始评审的时候,你给大家描述每个测试点,大家都在听:
A、当大家没有问题的时候,可能会回应你,也可能不会;
3、评审测试用例注意事项:
1、评审的过程中,如果别人提出疑问,针对有的疑问需要不同角色(产品,开发,测试)讨论决定结果;
2、评审的过程中,某些测试场景以及测试结果可能存在问题,别人提出来,需要直接在现场修改自己的测试用例;
3、有的疑问需要挑战的地方比较多,不需要现场调整,那么就需要在现场记录在本子上。
4、评审结束,总结性的发言:针对别人提出来的疑问,做一个汇总。
5、评审结束之后,根据别人提出的疑问,调整(完善)测试用例,调整结束后,再次把测试用例发送到工作群里面,同时@相关的人。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY