【软件测试】测试用例的设计

简介: 针对没有需求的案例,我们可以从如下几个方面思考来设计测试用例

一. 针对没有需求的案例来设计测试用例

针对没有需求的案例,我们可以从如下几个方面思考来设计测试用例


功能测试 + 界面测试 + 性能测试 + 安全测试 + 兼容性测试 + 易用性测试


案例一:针对一个水杯来设计测试用例


ed59388be5ce4446b2dbc0c29540b574.png


案例二:针对一个登陆系统来设计测试用例


8ca4dab870414a9a87fde9a6f1b2ff18.png


二. 针对有需求的案例来设计测试用例

大概设计思路如下:


需求分析

概括出需求有哪些功能

设计测试点

设计测试用例

1. 穷举法

假如说给定的软件需求是:提示姓名长度为6~15位。


测试时数据我们设定为6、7、8 … 14、15,这样通过穷举法来设计测试用例,若测试用例通过,则认为功能符合需求要求。


假如说,给定的长度不是6~15位,而是6 ~ 500位,这时应该如何设计测试用例呢?这样测试用例通过穷举法肯定是不现实的。


2. 等价类

概念:针对需求把输入范围内的所有测试用例划分成若干个等价类,从其中一个等价类里取出一个用例,若该测试用例测试通过,则认为该测试用例所在的等价类通过。


等价类的核心是对测试数据进行分区分块,使用较少的测试用例达到符合的系统测试覆盖率。


等价类又划分成有效等价类和无效等价类:


有效等价类:针对需求来说是有效且有意义的数据构成的集合。

无效等价类:针对需求来说是无效且没有意义的数据构成的集合。

根据等价类划分测试用例的步骤:


确定有效等价类和无效等价类

编写测试用例

举例


需求:姓名可输入6~200位的字符,应该如何来设计测试用例呢?


第一步:确定有效等价类和无效等价类


有效等价类:6~200

无效等价类:小于6大于200

PS:其实在设计时还需要发散性的根据需求考虑更多情况,比如还可以针对字符的类型(数字、字符串、特殊字符)来设计有效等价类和无效等价类,这里只是简单的举例,只考虑长度。


第二步:编写测试用例

a9f9042151884f2d92ef3fc33fd79ddb.png



3. 边界值

边界值法通常是对等价类的补充。注意设计边界值测试用例时需要加上:边界值 + 次边界值


还是继续用等价类的例子,这次我们补充上边界值的测试用例:


c4ff2842704c479083fe400fdcc9e5f7.png


4. 判定表法

判定表法的核心是要考虑输入输出之间的组合关系,根据这个这个关系画出判定表然后设计测试用例。


判定表设计测试用例的步骤:


确定输入条件和输出条件

找出输入条件和输出条件之间的关系

画判定表

根据判定表编写测试用例

举例


需求:订单已提交,且订单总金额大于300元或订单有红包,则认为该订单属于有优惠的订单,否则属于没有优惠的订单。


step1:确定输入条件和输出条件


输入条件:金额大于300元、有红包、订单已提交

输出条件:有优惠、无优惠

step2:找出输入条件和输出条件之间的关系

997cc8536c2a45e58a397ae19abfe47d.png

step3:画判定表

db98117a780a4d0e80e6930c198eae60.png

step4:根据判定表来编写测试用例


金额大于300元,没有红包,没有提交订单,结果为无优惠

金额不大于300元,有红包,没有提交订单,结果为无优惠

金额不大于300元,没有红包,提交了订单,结果为无优惠

金额大于300元,有红包,没有提交订单,结果为无优惠

金额大于300元,没有红包,提交了订单,结果为有优惠

金额不大于300元,有红包,提交了订单,结果为有优惠

金额大于300元,有红包,提交了订单,结果为有优惠

金额不大于300元,没有红包,没有提交订单,结果为无优惠

5. 场景设计法

5.1 简介

现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,是测试用例更容易理解和执行。


典型的应用是是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务感觉,从而避免陷入功能细节忽视业务流程要点的错误倾向。


5.2 基本设计步骤

根据说明,描述出程序的基本流以及各项备选流

根据基本流和各项备选流生成不同的场景

对每一个场景生成相应的测试用例

对生成的所有测试用例重新复审,去掉多余的测试用例

测试用例确定后,对每一个测试用例确定测试数据值

5.3 基本流和备选流

基本流:也叫有效流或正确流,模拟用户正确的业务操作流程。

备选流:也叫无效流或错误流,模拟用户错误的业务操作流程。

5.4 使用场景

主要用来测试软件的业务逻辑和业务流程。一般先采用等价类划分、边界值分析、错误推断法、因果图及判定表法等对单点功能进行验证,验证通过后再采用场景法进行业务流程的验证。


5.5 优缺点

优点:涉及到业务场景,使用场景法有利于测试设计者设计测试用例,使测试用例更容易理解和执行。

缺点:只验证业务流程,不验证单点功能。

5.6 实例

场景介绍


用户进入网上购物系统网站进行购物,选好物品后进行购买。

这时需要使用账号登录,登录成功后付款,交易成功后生成订单,完成此次购物活动。

第一步:分析需求,确定基本流和备选流事件


4e4541cacfb946769fea7aa7222a8dc3.png

第二步:根据基本流和备选流来确定场景

a8d354a5b8e846f48aa002b66377575e.png


第三步:设计用例

1b0088ea16694d528a6d32cc60ac7691.png


第四步:设计测试用例中所需的数据

2e8ad8bf0e9e432481a8c120ef9cd002.png


6. 错误猜测法

错误猜测法是基于对被测试软件设计的理解、过往经验以及个人直觉,推测出软件可能存在的缺陷,从而去针对性地设计测试用例。


这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个人的经验和直觉。


错误推测法和目前流行的“探索式测试方法”的基本思想一致,这类方法在敏捷开发模式下的投入产出比很高,被广泛应运于测试。


这个方法的缺点是难以系统化,并且过度依赖个人能力。


以注册为例,我们可以对这个场景直接进行错误猜测,从而设计测试用例:


校验中特殊字符空格的处理?

密码校验中的大小写?

姓名中的特殊字符?

密码发送是否明文?


相关文章
|
11天前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
11天前
|
测试技术 UED
软件测试的艺术:探索性测试的力量
【10月更文挑战第6天】在软件开发的世界中,测试是确保产品质量的关键步骤。传统的测试方法往往遵循严格的脚本和预定义的路径进行,但探索性测试(ET)则提供了一种更为灵活、创造性的替代方案。通过模拟真实用户的行为和思考过程,ET能够揭示那些传统测试可能遗漏的问题。本文将深入探讨探索性测试的核心原则、实施策略以及它如何提高软件测试的效率和有效性。
|
29天前
|
测试技术 UED Python
探索软件测试的边界:自动化与手动测试的协同
【8月更文挑战第59天】在追求效率和质量的软件生产中,自动化测试与手动测试的辩论从未停止。本文将通过实际案例,揭示二者如何相辅相成,共同构建更健壮的软件测试体系。我们将深入探讨自动化测试的优势、手动测试不可替代的角色以及它们如何在实际项目中协同工作,旨在为读者提供一种平衡的视角来看待软件测试的实践。
124 65
|
18天前
|
测试技术 网络安全
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
文章全面介绍了软件测试的基本概念、目的、岗位分类、与开发和调试的区别,并阐述了成为优秀测试人员应具备的素质和技能。
66 1
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
|
12天前
|
测试技术
软件测试中的探索性测试(ET)实践
【10月更文挑战第5天】本文将深入探讨一种与传统脚本化测试不同的测试方法——探索性测试(Exploratory Testing,简称ET)。我们将通过一个实际案例来展示ET的有效性,并分享如何将ET融入日常的软件测试流程中。文章旨在为测试人员提供一种灵活、高效的测试策略,帮助他们更好地发现软件中的缺陷。
|
10天前
|
监控 数据可视化 测试技术
软件测试中的自动化测试实践指南
【10月更文挑战第7天】 在软件开发的生命周期中,测试是确保产品质量的重要环节。随着技术的进步和应用的复杂性增加,自动化测试逐渐成为提升测试效率和覆盖范围的关键手段。本文将深入探讨自动化测试的基本概念、实施步骤及其在不同应用场景中的最佳实践。通过对自动化测试框架的选择、脚本开发、执行及维护的详细解析,帮助读者更好地理解和应用自动化测试技术,从而优化测试流程,提高软件质量。
21 2
|
17天前
|
设计模式 敏捷开发 Java
软件测试中的自动化测试实践指南
本文旨在探讨软件测试领域中的自动化测试。通过详细的案例分析和步骤讲解,帮助读者掌握自动化测试的实施方法与最佳实践。
36 10
|
9天前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
25 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
13天前
|
测试技术 UED
软件测试中的探索性测试:一种高效且灵活的测试方法
本文将深入探讨探索性测试的核心概念、优势及其在实际项目中的应用。我们将从探索性测试的基本定义入手,逐步解析其在不同场景下的具体实施方法和最佳实践。通过详细的案例分析和方法对比,帮助读者全面了解这种既高效又灵活的软件测试技术。
|
14天前
|
安全 测试技术 UED
软件测试的艺术:探索性测试的奥秘
【10月更文挑战第3天】在软件开发的海洋中,测试是指引安全航行的灯塔。本文将带您领略一种不同于传统测试方法的奥秘——探索性测试。我们将从其定义和重要性出发,通过实际案例深入探讨如何运用探索性测试来揭示软件中的隐藏缺陷,并分享一系列高效实用的测试技巧。让我们一起启航,探索软件测试的未知领域。