0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

等价类划分法测试用例

分享:

好的,我们来详细解释等价类划分法,并使用中文提供测试用例设计实例

核心思想: 等价类划分法是一种黑盒测试技术。它将软件的所有输入数据划分成若干个等价类。每个等价类中的数据应该被软件以相同的方式处理(要么都被接受并产生类似输出,要么都被拒绝)。目的是通过测试每个等价类中的一个代表值来代替测试整个庞大的输入域,从而高效地减少测试用例数量,同时保证测试的覆盖度。

为什么要划分等价类? 想象一下,测试一个只能输入1-100之间整数的文本框。测试所有101个值(1到100和无效值)效率太低。划分等价类后,我们只需要测试:

  • 一个有效等价类代表值: 如 50(代表所有1-100的数)
  • 两个无效等价类代表值: 如 0(代表小于1的数),101(代表大于100的数)

关键概念:

  1. 有效等价类: 符合软件规格说明或预期的、合理且有意义的输入数据构成的集合。测试这些类是为了验证软件功能正常
  2. 无效等价类: 不符合软件规格说明或预期的、不合理或无意义的输入数据构成的集合。测试这些类是为了验证软件能妥善处理错误输入(如给出错误提示,而非崩溃)。

设计步骤:

  1. 识别输入域: 明确被测试功能需要哪些输入数据(字段、参数等)。
  2. 划分有效等价类: 根据软件规格说明,将所有合法的、预期能正确处理的输入划分成若干个等价类。
    • 规则:
      • 每个有效输入必须属于且只属于一个有效等价类。
      • 相同方式处理的输入分在一类(如所有正整数)。
      • 考虑边界值(边界值分析法常与之结合)。
      • 考虑输入条件之间的关系。
  3. 划分无效等价类: 根据软件规格说明和常识,考虑所有可能的非法、无效、异常或边界外的输入情况,将其划分成若干个无效等价类。
    • 规则(常见场景):
      • 输入为空(空白、Null)
      • 输入类型错误: 要求数字却输入了字母、符号等。
      • 输入长度错误: 过短或过长。
      • 输入格式错误: 不符合预定格式(如日期格式、邮箱格式)。
      • 输入范围错误: 小于最小值或大于最大值。
      • 输入包含非法字符: 如密码中不允许的特殊字符。
      • 输入数据关联性错误: 多个输入字段之间存在逻辑依赖关系时的无效组合(如密码和确认密码不一致)。
  4. 为每个等价类设计测试用例:
    • 每个有效等价类设计至少一个测试用例,使用该等价类中一个代表性的输入值(通常包括边界值)。
    • 每个无效等价类设计至少一个测试用例,使用该无效等价类中一个代表性的输入值
    • 重要原则: 一个测试用例最好只覆盖一个无效等价类。因为如果一个测试用例包含多个无效输入(比如同时输入空值和格式错误),软件可能只检测到第一个错误就停止处理,导致其他无效条件没有被测试到。
  5. 优化测试用例: 检查是否有测试用例可以覆盖多个有效等价类(但要确保覆盖),并确保所有等价类都有测试用例覆盖。

实例演示:用户注册 - “用户名”字段

规格说明:

  • 字段名: 用户名
  • 要求:
    • 必填项。
    • 长度限制:6-20个字符。
    • 允许字符:字母(a-z, A-Z)、数字(0-9)、下划线(_)。
    • 必须以字母开头。
    • 不能包含空格或其他特殊字符(除了下划线)。
    • 在系统中必须唯一(此例中我们假设我们只测试输入本身的有效性,唯一性验证通常需要结合数据库查询,是另一个测试点)。

步骤分解:

  1. 识别输入域: “用户名”字段的输入值。

  2. 划分有效等价类:

    • VEC1: 长度正好为6个字符的合法用户名 (边界值)
      • 代表值:abc123 (假设字母开头,包含字母数字组合)
    • VEC2: 长度正好为20个字符的合法用户名 (边界值)
      • 代表值:abcdefghij1234567890 (假设字母开头,包含字母数字组合)
    • VEC3: 长度在6-20个字符之间(非边界)的合法用户名
      • 代表值:user_name123 (包含字母、数字、下划线,字母开头)
    • VEC4: 只有字母的合法用户名
      • 代表值:Username (长度在6-20内)
    • VEC5: 字母加数字的合法用户名
      • 代表值:user123 (长度在6-20内,字母开头)
    • VEC6: 字母加下划线的合法用户名
      • 代表值:user_name (长度在6-20内,字母开头)
    • VEC7: 字母加数字加下划线的合法用户名 (虽然示例中包含了下划线,但单独列出来更清晰)
      • 代表值:usr_1 (注意长度需在范围内,此处假设usr_1长度5无效,所以应为更长的如 user_123)
    • 注意:VEC3实际上已经包含了VEC4, VEC5, VEC6, VEC7的一些特性。为了更清晰展示划分逻辑,这里并列列出。实际优化时可以合并,但需确保覆盖所有情况。例如 user_name123可以覆盖VEC3VEC7
  3. 划分无效等价类:

    • IVEC1: 用户名为空 (空白或Null)
      • 代表值: (空格) 或 直接留空
    • IVEC2: 用户名长度小于6个字符 (边界值)
      • 代表值:abcde (长度5)
    • IVEC3: 用户名长度大于20个字符 (边界值)
      • 代表值:thisusernameistoolongforthefieldxyz (长度>20)
    • IVEC4: 用户名以数字开头
      • 代表值:123user (长度合规,其他字符合规)
    • IVEC5: 用户名以下划线开头
      • 代表值:_username (长度合规,其他字符合规)
    • IVEC6: 用户名包含空格
      • 代表值:user name (长度合规,其他字符合规但有空格)
    • IVEC7: 用户名包含非法特殊字符 (除下划线外)
      • 代表值:user@name (包含@), user-name (包含-)
    • IVEC8: 用户名只包含数字
      • 代表值:123456 (长度合规,但无字母开头)
    • IVEC9: 用户名只包含下划线
      • 代表值:_______ (长度在6-20内)
    • IVEC10: 用户名格式正确但与现有用户冲突 (唯一性检查,假设已有用户 existing_user)
      • 代表值:existing_user (格式合法,长度合法)
  4. 设计测试用例: 测试用例编号 输入值 预期结果 覆盖等价类 说明
    有效等价类测试
    TC_VU_01 abc123 接受,提示成功或进入下一步 VEC1 最小长度边界 (6字符)
    TC_VU_02 abcdefghij1234567890 接受,提示成功或进入下一步 VEC2 最大长度边界 (20字符)
    TC_VU_03 validUser12 接受,提示成功或进入下一步 VEC3, VEC5 中间长度,字母数字组合
    TC_VU_04 AllLetters 接受,提示成功或进入下一步 VEC4 仅字母
    TC_VU_05 user_with_under 接受,提示成功或进入下一步 VEC6 包含下划线
    TC_VU_06 mix_123_ABC 接受,提示成功或进入下一步 VEC7 字母、数字、下划线混合
    无效等价类测试
    TC_IU_01 ` (空格) / ` (留空) 提示错误:“用户名不能为空” IVEC1 空值
    TC_IU_02 short 提示错误:“用户名长度需在6-20之间” IVEC2 太短 (5字符 < 最小6)
    TC_IU_03 this_username_is_far_too_long_for_acceptance 提示错误:“用户名长度需在6-20之间” IVEC3 太长 (>20字符)
    TC_IU_04 4numberStart 提示错误:“用户名必须以字母开头” IVEC4 数字开头
    TC_IU_05 _underscoreFirst 提示错误:“用户名必须以字母开头” IVEC5 下划线开头
    TC_IU_06 user name 提示错误:“用户名不能包含空格” IVEC6 包含空格
    TC_IU_07 invalid@char 提示错误:“用户名包含非法字符” IVEC7 包含非法字符(@)
    TC_IU_08 12345678 提示错误:“用户名必须以字母开头” IVEC8 纯数字 (也违反了字母开头规则)
    TC_IU_09 ________ 提示错误:“用户名必须以字母开头” IVEC9 纯下划线 (也违反了字母开头规则)
    TC_IU_10 existing_user 提示错误:“该用户名已被使用” IVEC10 用户名已存在 (假设已存在)

说明:

  • 表格中每个测试用例主要覆盖一个等价类(无效类尤其遵循此原则)。
  • TC_VU_03覆盖了VEC3(中间长度)和VEC5(字母数字组合),这是一个可以接受的合并,因为输入值同时满足了这两种有效条件。
  • TC_IU_08TC_IU_09 除了违反纯数字/下划线的规则外,也必然违反“必须以字母开头”的规则。测试用例预期结果聚焦在更根本的“必须以字母开头”错误上(也可以设计更具体的错误提示,取决于需求)。
  • 边界值(TC_VU_01, TC_VU_02, TC_IU_02, TC_IU_03)是等价类划分法中需要特别关注的点。
  • 预期结果应该清晰明确地描述软件应有的行为(接受并继续 or 拒绝并给出具体错误信息)。

总结:

等价类划分法通过将输入数据分类(有效类和无效类),并选取代表性数据设计测试用例,显著提高了测试效率,并能系统地覆盖各种正常和异常输入场景。它是设计黑盒测试用例最基础和重要的方法之一,常与边界值分析法结合使用。在设计时,务必确保所有划分出的等价类都有对应的测试用例覆盖。

鉴源实验室·ISO 26262中测试用的得出方法-等价的生成和分析

标准规范中给出了单元、集成、系统测试各阶段的建议测试使用方法,设计生成测试用的建议方法包括需求分析、等价的生成和分析、边界值分析、基于已有经验和知识的错误推测等等,从本篇开始我们对测试用设计生成的方法进行介绍。 01 开始于需求分析 无论使用哪种方法设计测试用,首先都需要对需

2024-07-30 15:37:25

数据测试:输入数据的设计方法和测试用设计方法

测试用的设计是测试设计的重要内容,关于测试用的设计方法,当前不少出版的测试书和发表的测试文章,不少存在着表述错误,主要是把测试用中的输入数据的设计方法与测试用的设计方法混为一谈,对测试初学者和测试用设计人员产生误导。

2020-06-29 10:22:22

测试用的管理 介绍测试用的几种管理方法

摘要 随着软件系统规模的持续增大,业务复杂度的持续增加,软件测试的复杂度也随之越来越大。而软件测试工作复杂度的直接体现,就是测试用编写、维护、执行和管理,所以编写易读、易维护和易管理的测试用可以

2021-11-26 15:13:18

利用等价在TPT中进行测试

在这篇文章中,我们将探讨等价在用TPT做测试过程中的使用,以及它们如何优化测试过程。等价将值分类为不同的子集,通过从每个中选择一个具有代表性的值来简化测试过程。

2023-07-06 14:52:39

基于base test如何来构造测试用

在设计仿真用时,有限制条件的激励相比漫无目的的仿真更加有效的找出RTL的bug。因此,同一份测试方案,不同的sequence往往代表着不同的test_case。真正的测试用都是基于base_test派生的一个

2022-09-19 09:16:40

详谈Web测试中的界面测试用设计

详谈Web测试中的界面测试用设计

2020-06-29 10:48:37

测试用质量的重要性

在进行测试时,通常会花很多精力选择“正确”的测试工具。这其实只是为了实现次要目标。当然,一个适合开发环境、项目和流程的工具是重要的。然而,对于良好测试而言,最重要的是测试用的质量。只有“好”的测试用才会发现软件存在缺陷。

2021-09-03 15:13:23

PTCRB的测试用认证等级分类介绍

PTCRB的测试用认证等级CategoryA/B/EA类项:测试用在商用系统上经过完全验证;必测项且需要结果为PASSB类项:测试用在商用系统上经过部分验证(标准或系统有缺陷);必测项如果有

2024-03-14 16:46:12

端到端测试用怎么写

编写端到端测试用是确保软件系统从头到尾能够正常工作的关键步骤。以下是一个详细的指南,介绍如何编写端到端测试用: 一、理解端到端测试 端到端测试(End-to-End Testing)是一种软件

2024-09-20 10:29:24

芯片硬件测试用

是项目开始的关键,利用白盒和黑盒覆盖,保证产品质量。根据芯片功能,目标市场,进行测试立项:依据BRD/MRD/PRD;计划:测试需求分析、人力资源时间线;测试用

2025-09-05 10:04:21

篇 | 单元测试用复用到集成测试?Testlet Library来助力!(上)

作者:fox小编:吃不饱作为一名测试工程师,在做MiL测试时,编写测试用的效率影响整个测试项目的进度,如何有效提升编写测试用的效率,是大家都关心的问题。TPT作为一款自动化测试工具,提供了很多

2022-11-04 10:14:55

磁盘eCryptfs加密测试用

apt安装用户态工具ecryptfs-utils即可。 4.1、测试用 下图是一个脚本基础测试用。先创建test目录和文件hello,

2023-11-29 11:27:54

上海控安:基于模型的测试用生成

在当今复杂多变的软件开发环境中,软件系统的规模和复杂度不断攀升,传统测试方法面临着诸多挑战。如何高效、准确地生成测试用,以确保软件系统的质量和可靠性,成为软件测试领域的关键问题之一。而基于模型

2025-08-28 14:30:53

怎么用嵌入式软件运行剖面生成测试用

测试数据的等价信息,自动生成测试用,大大减轻测试人员的工作量,提高了测试工作的效率和质量。本文中采用带标记的Markov链对软件运行剖面进行描述,并据此生成测试用

nmcxkwqjhd 2019-10-11 08:32:48

数据测试:代替测试用的检查表

前几年在大连出差的时候,帮一个项目做测试,顺便写下这个检查表,这个检查表对测试的初学者积累经验比较有用,实际对于有经验的测试人员尤其对于测试业务管理信息系统,基本上大量的测试不需要再编写测试用

2020-06-29 10:50:55

AI生成的测试用真的靠谱吗?

软件测试正经历一场深刻的技术革命。AI,尤其是以GPT、通义千问、文心一言、Claude等为代表的大语言模型(LLM),开始广泛介入测试流程:从需求分析、测试用设计,到脚本生成与测试报告撰写,AI

2025-08-01 10:02:35

一文了解导入测试数据自动化生成测试用的方法

作者|Poplar小编|吃不饱概述在模型开发过程中,测试是一个不可或缺的环节。在测试过程中,测试用的编写是所有测试工程师关注的重点和难点。在编写的过程中,可能会遇到各种各样的问题,比如历史测试用

2023-11-23 08:24:53

基于场景的V2X功能测试用开发思考

本文以思维导图的形式对场景进行分析,以表格的形式将测试用呈现,共同探讨在场景中的V2X功能测试用开发。

2022-08-01 14:21:26

2022 RT-Thread全球技术大会:基本的测试用代码结构

一个基本的测试用必须包括哪些内容?

2022-05-27 16:23:53

如何让大模型生成你想要的测试用

应用大模型生成测试用,常见的知识库,测试大模型,微调,RAG等技术门槛都不低,甚至很难,因此对于应用者而言,最快的方式就是应用好提示词,调教属于个人风格的测试用智能生成模块,让智能模板像人一样

2025-09-26 10:01:09

从跨平台测试用复用想到IP测试意图交付

像Intel这样的大公司,在产品线每年跟摩尔定律一样按照产品路线推出芯片的时候,他们在测试时的测试用肯定不会跟初创公司似的,需要从零开始构建。大公司呆过的人都知道那里的流程封装得多么完善,那里蹲着多少资深的工程师,当然那里的测试用也都是每个项目一个个地继承下来的。

2023-04-25 11:08:09

数据测试用设计:因果图方法

因果图是一种利用图解法分析输入的各种组合情况,从而设计测试用的方法,它适合于检查程序输入条件的各种组合情况。

2020-06-29 10:39:34

【明日在线研讨会预热】测试用质量的重要性

介绍在进行测试时,通常会花很多精力选择“正确”的测试工具。这其实只是为了实现次要目标。当然,一个适合开发环境、项目和流程的工具是重要的。然而,对于良好测试而言,最重要的是测试用的质量。只有“好

2021-09-03 19:03:11

RT-Thread全球技术大会:在RT-Thread上编写测试用

RT-Thread全球技术大会:在RT-Thread上编写测试用           审核编辑:彭静

2022-05-27 16:28:36

RT-Thread全球技术大会:RT-Thread测试用集合案例

RT-Thread全球技术大会:RT-Thread测试用集合案例           审核编辑:彭静

2022-05-27 16:34:46

是德科技验证首个协议一致性测试用

是德科技验证了首个采用 NB-IoT 技术的非地面网络 3GPP Rel-17 标准的协议一致性测试用。 是德科技公司针对采用窄带物联网(NB-IoT)技术的非地面网络,针对第三代合作伙伴计划

2023-11-14 16:01:10

基于python的用于构建仿真及测试用的lib库cocotb

       对于从事ASIC行业及FPGA行业的小伙伴来说,仿真是一件必不可少的事情。或许有人是验证大拿,UVM高手,但相较于软件丰富的验证框架,对于各种各样的场景单纯的SV构建测试用是否便捷

2021-10-13 17:01:01

TPT自动生成测试用

方法。TASMO不仅可以测量覆盖率,还可以通过自动生成测试数据来填补覆盖率的空白。在TPT 19中,TASMO更进一步,因为测试用可以直接从形式化的需求中创建。

2023-11-06 17:30:40

RT-Thread全球技术大会:RT-Thread上的单元测试框架与运行测试用

RT-Thread全球技术大会:RT-Thread上的单元测试框架与运行测试用                 审核编辑:彭静

2022-05-27 16:21:15

测试用质量的重要性

介绍在进行测试时,通常会花很多精力选择“正确”的测试工具。这其实只是为了实现次要目标。当然,一个适合开发环境、项目和流程的工具是重要的。然而,对于良好测试而言,最重要的是测试用的质量。只有“好

hirain_tech 2021-09-02 16:44:41

加载更多
相关标签