如何做好测试分析?

2793 篇文章 4 订阅
2647 篇文章 26 订阅

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读3.3k次,点赞86次,收藏15次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502

测试分析能力是测试工程师的基本素养。测试分析不等同于测试设计(例如等价类、边界值、组合测试等),但可以理解为测试分析是测试指导思想,测试设计是测试指导行动;思想指导行动,因此测试分析指导测试设计。

测试分析 vs. 测试设计

这两个术语经常被混淆,并且经常交替使用,因此,开篇我们先把二者区别搞懂。

测试分析:

  • 测试分析是理解和分析系统行为的过程。

  • 测试分析的目标是确定应该测试什么测试边界是什么

  • 它还包括基于用户需求和业务目标的产品特性分配优先级。

  • 它为我们提供了系统的概述,并为测试设计奠定了基础。

测试设计:

  • 测试设计是基于测试分析创建测试用例的过程。

  • 测试设计的目标是如何对测试边界内的内容进行测试。

  • 测试设计环境,并确定任何所需的基础设施和工具。

测试分析回答测试什么,测试设计回答如何测试。

测试分析模型

测试分析可以在产品的不同层次上进行分析——在产品(级)层次和功能(级)层次(系统功能),二者区别在于分析的范围和重点。

产品级测试分析:

  • 目标是理解系统的整体功能、优先级和依赖关系。

  • 它促进了测试计划和测试策略的设计,并为回归测试计划提供了基础。

功能级测试分析:

  • 目标是理解特定功能的需求,以设计有针对性的测试,以验证其正确性和完整性。

  • 我们运用测试设计方法,并为特定的功能创建可交付成果,如测试用例、测试数据和所需的测试环境配置。

我们应该从产品测试分析开始,这将为进一步分析具体功能奠定基础。

图片

产品级测试分析

产品级测试分析主要有三项活动:

  • 分解——将系统分解为高级模块。

  • 优先级 - 根据用户需求和业务目标确定系统功能的重要性。

  • 依赖分析 - 识别系统中特性之间的关系。

第一阶段:分解

第一个活动是分解,这意味着将系统分解成更小的部分。除了帮助管理软件开发的复杂性外,它还有利于以下方面的测试过程:

  • 增加我们对系统行为的理解。

  • 促进测试计划、评估和跟踪工作。

  • 提供评估测试覆盖率的功能。

  • 提供执行依赖性分析的能力。

根据项目的具体需求和上下文,可以对项目进行不同层次的分解。分解层次包括:用例、网页/屏幕、模块、对象等。这些分解层次不是相互排斥的,而是相互补充的。例如,一个系统可以分解成几个用例,每个用例可能涉及多个网页。

一个常见的方法是在对象级别进行分解。对象代表系统中的实体,它们具有不同的参数(属性)和行为。

对于产品级别的测试分析,我们将分析对象和其行为。

图片

让我们以 Slack 应用程序为例来看看产品分解的步骤。

步骤1:定义对象

这里有一些我们可以定义的对象:

系统中的所有功能都可以分解为对象吗?不,正如上面提到的,我们可以组合不同的分解级别。我们将使用Epic来描述其他功能,除了对象。一个Epic代表一个实质性的功能的集合。

图片

步骤2:为每个对象定义行为

下一步是定义可以在对象上执行或由对象本身执行的操作。

图片

步骤3:定义行为的替代方法

在系统中,执行相同的操作可以有不同的方式,这一点应该注意。

图片

第二阶段:优先级

并非所有功能对用户来说都是同等重要的,列出优先级功能列表可以让我们:

  • 开始测试更重要的功能,这样如果没有足够的时间测试所有功能,我们可以将不重要的功能排除在测试范围之外。

  • 尽早发现更关键bug,并有足够的时间来修复它们,防止交付延迟。

  • 创建不同的测试套件(例如,一个带有关键特性的冒烟测试,以及一个带有关键特性的回归测试)。

步骤4:为每个对象定义优先级

图片

一种更高级的方法是为对象的每个行为也设置优先级。

图片

第三阶段:依赖分析

系统中的大多数功能通常与其他功能有依赖关系。下一个重要步骤是依赖分析,这涉及到识别已定义对象之间的关系,理解它们如何相互作用。

依赖分析有助于:

  • 识别系统中的相关功能,并确保在测试期间覆盖所有必要的场景。

  • 识别特定功能的变更对其他相关功能的潜在影响。

  • 评估现有缺陷对其他相关特性的潜在影响,并执行有针对性的测试以缓解此类风险。

依赖分析通常以矩阵的形式记录。矩阵由行和列组成,其中每一行和每一列代表一个对象(或用于分解的其他项目)。矩阵中的单元格表示它们之间的依赖关系。

所以,我们需要做的是,回顾我们的对象,思考它们是如何相互作用的,寻找任何依赖关系,例如:

  • 函数依赖关系:一个对象依赖于另一个对象的输出或行为。

  • 数据依赖性:一个对象需要来自另一个对象的特定数据。

步骤5:定义对象之间的依赖关系

这里是一个依赖分析矩阵的例子。

图片

这是一个单向矩阵,只使用了一半的矩阵,其中绿色的单元格突出了项目之间的关系,额外的列或注释可以用来记录每个依赖项的细节。

一种更高级的方法是双向矩阵,它分析关系的两边,显示哪些项目依赖于其他项目,哪些项目被其他项目依赖。

图片

列中顶部的项依赖于行中左边的项,相应地,行中的项影响列中的项。例如,我们可以看到 Messages 对象依赖于 Users、Workspaces、Channels,并影响 History 和 Search。

这种类型的矩阵提供了更全面的视图和详细的分析。单向和双向矩阵之间的选择取决于项目所需的详细程度,并推荐用于安全关键软件。

好的,我们已经完成了一阶段工作,现在已经为下一阶段的测试分析打下了坚实的基础。让我们回顾一下产品层面的测试分析思路。

图片

产品级测试分析的所有活动都可以按照以下次序执行:

  1. 收集信息:

  • 产品文档(需求、用户故事、用户手册等)。

  • 产品本身(探索性测试)。

  • 与产品经理、开发人员等沟通。

2. 可视化信息

  • 可以使用不同的类型,如表格、思维导图、图表等。

3. 评审

  • 与团队和利益相关者一起评审输出,以找到遗漏或不正确的信息,并进行适当的更正。

4. 保持更新

  • 随着产品的演进,继续更新和维护文档,否则它将变得不值得努力,并很快过时和无用。

功能级测试分析

我们已经学习了产品级测试分析,现在,我们准备进一步研究功能级测试分析。

在功能级有三个主要的测试分析活动:

  • 被测对象的分解。

  • 测试设计 - 使用适当的测试设计技术创建测试用例。

  • 依赖分析 - 定义测试特性与系统中其他特性之间的关系。

第一阶段:分解

对于产品测试分析,作为系统的高级分析,在分解过程中确定对象的动作就足够了,但是对于功能测试分析,我们需要进一步定义被测对象的参数。

参数是对象的属性或特征,它们定义了与该对象相关的特定条件、行为或配置。基本上,参数是作为输入的值,为特定操作提供所需的特定信息。

所以在这里,我们有以下分解顺序:

图片

让我们以Slack为例,看看创建账户的功能。

图片

步骤1:定义对象和动作

  • 对象:用户

  • 操作:创建账户

步骤2:定义动作的参数

要创建一个账户,用户需要提交一个具有以下参数的表单:

  • 用户名

  • 密码

  • 电子邮件

每个参数都要求它应该接受什么值:

  • string

  • 必传

  • 默认

接下来,我们需要创建测试数据,以检查每个参数的不同值提交表单,以验证接受有效值并拒绝无效值。

步骤3:为每个参数定义测试数据

有大量的可能值可以检查,我们通常没有那么多时间来测试每个参数的所有可能值。相反,我们可以探索测试设计技术,以帮助定义一个有效的测试数据集。

第二阶段:测试设计

我们继续到下一个阶段——使用适当的测试设计技术创建测试用例。

对于测试数据验证,最常用的技术有以下几种:

  • 等价性划分

  • 边界值分析

  • 组合测试

然而,测试输入验证并不是应该执行所有验证。我们所做的许多测试都涉及到测试用户界面下的业务逻辑。最核心要关注测试业务逻辑功能的方法:

  • 状态转移测试

  • 决策表

我将在下一篇介绍实践的文章中详细讨论上述测试设计方法。

测试设计方法有助于减少测试数量,同时保持高的测试覆盖率。然而,关于测试设计方法,有一些重要的注意事项需要记住:

  • 没有一种完美的技术适用于所有情况。重要的是要了解每种技术的适用性和缺点,并能够为测试选择最合适的技术或技术集。

  • 测试设计工作必须考虑优先级和平衡,以与风险等级和业务价值保持一致。

第三阶段:依赖分析

在 功能 层级,我们还需要进行依赖性分析,因为通常每个新特性都会与一些现有特性发生交互,因此我们需要找出这些交互和可能的依赖关系。

我们应该列出我们的对象(在产品测试分析阶段创建)逐个查看,并思考它是否与我们正在测试的功能交互。

让我们对 Slack 中的“发送消息”功能进行依赖性分析。

步骤1:找到对象

  • Channels:我们可以向Channel发送消息

  • Users:可以向一个用户和一组用户发送直接消息

步骤2:定义相关对象的状态

图片

  • Channels:Active, Archived, Deleted

  • Users:Active, Archived, Deleted

步骤3:定义相关对象的参数

  • Channels: Public, Private

  • Users: 普通用户, 访客, 外部用户

现在,我就可以基于“发送消息”这个功能设计测试用例:

  • 向channel发送消息:
    - 不同的状态 (Active, Archived, Deleted)
    - 不同的类型 (Public, Private)

  • - 使用不同的类型(普通用户、访客、外部用户)

  • - 使用不同的类型(普通用户、访客、外部用户)

让我们在功能级别上回顾测试分析的步骤。

图片

写在最后

测试分析可以从不同的层面进行:

  • 产品级——对整个产品的高层次分析,是进一步进行功能级测试分析的基础。

  • 功能级——详细分析产品中特定的功能,定义功能的测试范围并设计测试用例。

下面是测试分析级别及其活动的示意图:

图片

拥有这样一个结构化和全面的测试分析带来了以下好处:

  • 确保对产品的深入理解。

  • 定义清晰完整的测试范围。

  • 确保测试工作集中在关键功能和潜在的失败领域。

  • 帮助实现最大测试覆盖率和最小冗余。

  • 通过识别需求中的问题,为缺陷预防做出贡献。

  • 有助于组织信息,减少Gap。

需要注意的是,测试分析不仅有利于测试团队,而且有利于整个项目团队。它鼓励所有团队成员之间的合作,并且测试分析文档作为团队内部参考、评审和知识转移的宝贵资源。

良好的测试分析过程为测试的整体有效性提供了充分的信心,并有助于交付高质量的软件。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值