软件测试之学习测试用例的设计(等价类法、边界值法、错误猜测法、场景法、因果图法、正交法)

简介: 1. 测试用例的概念2. 为什么在测试前要设计测试用例3. 基于需求进行测试用例的设计1)功能性需求测试2)非功能性需求测试4. 具体的测试用例设计方法1)等价类2)边界值3)错误猜测法4)场景法5)因果图法6)正交法

1. 测试用例的概念

软件测试人员向被测试系统提供的一组数据的集合,包括 测试环境、测试步骤、测试数据、预期结果


2. 为什么在测试前要设计测试用例

测试用例是执行测试的依据

在回归测试的时候可以进行复用

是自动化测试编写测试脚本的依据

衡量需求的覆盖率

后续的测试人员可以借鉴前人写的东西


3. 基于需求进行测试用例的设计

需求是测试人员进行测试的依据


测试人员首先要分析需求,验证需求的正确性、合理性,无二义性并且逻辑自洽

在需求正确的基础上细化需求,从需求提炼出一个个测试点,再根据测试点进行测试用例的设计

在分析需求提取测试点时,一般分为 功能性需求测试 和 非功能性需求测试


1)功能性需求测试

功能性需求测试分析通常包括以下几个方面:


验证各个界面的功能

用具体业务将功能串起来进行测试

功能之间交互性、一致性的测试

一个功能的多个不同输入的测试

功能的异常测试

功能涉及到的算法的测试

2)非功能性需求测试

在功能的基础上做一些限制,满足特定场景的需求,让用户有更好的体验


一般在 性能、安全性、可靠性、兼容性、可移植性(移植到不同的设备)、易用性 等


不同类型的软件对于非功能性需求要求是不一样的


客户端软件,word、ppt、音乐播放器等,此类软件对功能要求很简单,对性能、安全性要求比较低,软件的可移植性要求比较高


这类软件一般都是在个人客户端上运行的,一般都是一对一的运行,不存在多人使用同一个服务器,所以对安全性和性能要求比较低,但是这类软件要求在不同环境下的使用,所以对可移植性要求比较高


企业软件,一些仅供企业内部使用的软件,对功能有一定的要求,对安全性、性能要求比较低


这类软件一般都是企业内部在使用,使用人数不多,所以对安全性和性能要求比较低


商业软件,市面上的大型复杂网络应用,对功能、性能、安全性、可移植性、易用性要求都很高


4. 具体的测试用例设计方法

1)等价类

等价类法一般应用在有输入的场合内


根据需求将输入分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例通过,则认为所代表的等价类测试通过,这样可以很好的解决测试用例无法穷举的情况


等价类又分为 有效等价类 和 无效等价类


有效等价类: 符合需求说明书的数据,用来验证程序是否实现了需求说明书所规定的功能

无效等价类: 不符合需求说明书的数据

对于注册邮箱时的等价类:


规定: 6 ~ 18 个字符,可使用字母、数字、下划线,需要以字母开头


有效等价类:


6 ~ 18 个字符,以字母抬头,纯字母

6 ~ 18 个字符,以字母抬头,后面为数字

6 ~ 18 个字符,以字母抬头,后面为下划线

6 ~ 18 个字符,以字母抬头,后面有数字和下划线

无效等价类:


小于 6 个字符,以任意字符组成

大于 18 个字符,以任意字符组成

6 ~ 18 个字符,不以字母开头

6 ~ 18 个字符,以字母开头,包含任意字符


2)边界值

对输入输出的边界进行针对性测试用例的设计,叫做边界值法


边界值法一般与等价类法一起组合使用,边界值法是等价类法的重要补充


案例:


用户注册时规定用户名 6 ~ 18 位


边界值:5,6,7,17,18,19


针对以上几个点进行测试用例的设计


3)错误猜测法

测试人员根据自己的经验、只是、个人直觉判断软件哪一块有问题,再进行针对性测试用例的设计


这个方法适用于补充测试用例,或者进行探索性测试的情况


但也有一个很明显的缺点,过度依赖测试人员的个人能力和主观判断


4)场景法

把一个个孤立的功能穿起来形成一个场景,每一个功能的输入会触发流程走向不同的场景,根据不同功能的不同输入触发形成的不同场景进行测试用例的设计


要点: 提取出场景中设计的所有功能点,考虑每一个功能的不同输入


5)因果图法

因果图是一种可以直观地 表达程序输入输出之间相互关系 的逻辑图


使用场景: 适用于被测试程序 具有多种不同输入条件并且输出结果依赖于输入条件 的情况


因果图中的关系:


恒等: 输入为真,输出为真

与: 输入条件有多个,条件全为真,输出才为真

或: 输入条件有多个,其中一个为真,输出就为真

非: 输入为真(假),输出为假(真)

使用因果图设计测试用例的流程:


分析程序所有的输入和输出

找出输入和输出之间的逻辑关系

根据输入和输出的逻辑关系画出因果图

根据因果图画出判定表

根据判定表设计测试用例

案例: 618 抢购活动中,订单已提交并且购物金额大于 300 或者有红包,则说明有优惠,否则无优惠


分析输入输出


输入:订单已提交、购物金额大于 300、有红包


输出:有优惠、没有优惠


找出输入输出之间的逻辑关系

84.png

根据逻辑关系画出因果图

86.png


根据因果图画出判定表

85.png

  1. 根据判定表设计测试用例
    判定表中每一行都是一个测试用例

6)正交法

根据正交性,从大量的测试数据中,选择最优的数据组合,根据最优的数据组合的结果来衡量整个测试的输出结果

目录
相关文章
|
11天前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
11天前
|
测试技术 UED
软件测试的艺术:探索性测试的力量
【10月更文挑战第6天】在软件开发的世界中,测试是确保产品质量的关键步骤。传统的测试方法往往遵循严格的脚本和预定义的路径进行,但探索性测试(ET)则提供了一种更为灵活、创造性的替代方案。通过模拟真实用户的行为和思考过程,ET能够揭示那些传统测试可能遗漏的问题。本文将深入探讨探索性测试的核心原则、实施策略以及它如何提高软件测试的效率和有效性。
|
12天前
|
测试技术
软件测试中的探索性测试(ET)实践
【10月更文挑战第5天】本文将深入探讨一种与传统脚本化测试不同的测试方法——探索性测试(Exploratory Testing,简称ET)。我们将通过一个实际案例来展示ET的有效性,并分享如何将ET融入日常的软件测试流程中。文章旨在为测试人员提供一种灵活、高效的测试策略,帮助他们更好地发现软件中的缺陷。
|
10天前
|
监控 数据可视化 测试技术
软件测试中的自动化测试实践指南
【10月更文挑战第7天】 在软件开发的生命周期中,测试是确保产品质量的重要环节。随着技术的进步和应用的复杂性增加,自动化测试逐渐成为提升测试效率和覆盖范围的关键手段。本文将深入探讨自动化测试的基本概念、实施步骤及其在不同应用场景中的最佳实践。通过对自动化测试框架的选择、脚本开发、执行及维护的详细解析,帮助读者更好地理解和应用自动化测试技术,从而优化测试流程,提高软件质量。
21 2
|
9天前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
25 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
13天前
|
测试技术 UED
软件测试中的探索性测试:一种高效且灵活的测试方法
本文将深入探讨探索性测试的核心概念、优势及其在实际项目中的应用。我们将从探索性测试的基本定义入手,逐步解析其在不同场景下的具体实施方法和最佳实践。通过详细的案例分析和方法对比,帮助读者全面了解这种既高效又灵活的软件测试技术。
|
14天前
|
安全 测试技术 UED
软件测试的艺术:探索性测试的奥秘
【10月更文挑战第3天】在软件开发的海洋中,测试是指引安全航行的灯塔。本文将带您领略一种不同于传统测试方法的奥秘——探索性测试。我们将从其定义和重要性出发,通过实际案例深入探讨如何运用探索性测试来揭示软件中的隐藏缺陷,并分享一系列高效实用的测试技巧。让我们一起启航,探索软件测试的未知领域。
|
13天前
|
中间件 测试技术 持续交付
软件测试中的自动化测试实践指南
【10月更文挑战第4天】 本文探讨了软件测试中自动化测试的重要性,并详细介绍了如何有效实施自动化测试。从选择合适的工具到设计测试用例,再到实际执行与持续集成,我们将一步步引导读者了解自动化测试的全过程。通过具体案例分析,我们展示了自动化测试在提高测试效率、保障软件质量方面的显著优势。无论是初学者还是资深测试工程师,都能从中获得实用的指导和启示。
36 1
|
14天前
|
测试技术 持续交付 数据安全/隐私保护
软件测试的艺术与科学:探索自动化测试框架
【10月更文挑战第3天】在软件开发的海洋里,自动化测试犹如一艘航船,引领着项目向着质量的彼岸航行。本文将揭开自动化测试框架的神秘面纱,从理论到实践,深入浅出地探讨如何构建和运用这一工具,确保软件产品的稳定性和可靠性。我们将通过一个实际案例,展示自动化测试框架的搭建过程,以及它如何在提高测试效率、减少人力成本等方面发挥巨大作用。无论你是测试新手还是资深开发者,这篇文章都将为你提供宝贵的知识和启示。
|
10天前
|
测试技术
软件测试的艺术:探索性测试的深度与广度
【10月更文挑战第7天】在软件开发的宇宙中,测试是一颗璀璨星辰,指引着质量的方向。本文将带你遨游于测试的海洋,深入探索性测试(Exploratory Testing)的奥秘,从其哲学本质到实践应用,揭示如何通过自由探索来发现软件中的隐藏缺陷。我们将一起思考如何在不断变化的软件环境中,利用探索性测试提高测试效率和效果,确保软件产品的质量。准备好,让我们启航吧!