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

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

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

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


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


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


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. 错误猜测法

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


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


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


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


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


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

密码校验中的大小写?

姓名中的特殊字符?

密码发送是否明文?


相关文章
|
28天前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
28天前
|
测试技术 UED
软件测试的艺术:探索性测试的力量
【10月更文挑战第6天】在软件开发的世界中,测试是确保产品质量的关键步骤。传统的测试方法往往遵循严格的脚本和预定义的路径进行,但探索性测试(ET)则提供了一种更为灵活、创造性的替代方案。通过模拟真实用户的行为和思考过程,ET能够揭示那些传统测试可能遗漏的问题。本文将深入探讨探索性测试的核心原则、实施策略以及它如何提高软件测试的效率和有效性。
|
4天前
|
测试技术 开发者 UED
探索软件测试的深度:从单元测试到自动化测试
【10月更文挑战第30天】在软件开发的世界中,测试是确保产品质量和用户满意度的关键步骤。本文将深入探讨软件测试的不同层次,从基本的单元测试到复杂的自动化测试,揭示它们如何共同构建一个坚实的质量保证体系。我们将通过实际代码示例,展示如何在开发过程中实施有效的测试策略,以确保软件的稳定性和可靠性。无论你是新手还是经验丰富的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
2天前
|
jenkins 测试技术 持续交付
软件测试中的自动化测试策略
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和效率的关键工具。本文将探讨自动化测试的重要性、实施策略以及面临的挑战,旨在为软件开发团队提供实用的指导和建议。
|
11天前
|
测试技术
探索软件测试中的“思维侧翼”——如何以创新思维引领测试策略###
本文旨在探讨软件测试领域中,如何通过培养与运用创新思维,提升测试策略的有效性与效率。不同于传统的技术解析或理论阐述,本文将以“思维侧翼”为喻,启发读者从不同维度审视软件测试,寻找突破常规的思路与方法。我们相信,在快速迭代的软件开发周期中,灵活多变且富有创造力的测试思维,是发现潜在缺陷、保障产品质量的关键。 ###
|
12天前
|
测试技术 定位技术 UED
软件测试的艺术:探索性测试的深度与广度
【10月更文挑战第22天】在软件开发的广阔舞台上,测试扮演着不可或缺的角色。本文将带领读者深入理解探索性测试(Exploratory Testing)的精髓,揭示其在现代软件质量保证中的价值。我们将通过实际案例、生动比喻和具体步骤,展现如何像艺术家一样进行软件测试,确保产品质量的同时,提升测试的效率和乐趣。文章不仅适合初学者建立测试基础,也能帮助资深测试人员深化对探索性测试的理解和应用。
|
10天前
|
监控 安全 jenkins
探索软件测试的奥秘:自动化测试框架的搭建与实践
【10月更文挑战第24天】在软件开发的海洋里,测试是确保航行安全的灯塔。本文将带领读者揭开软件测试的神秘面纱,深入探讨如何从零开始搭建一个自动化测试框架,并配以代码示例。我们将一起航行在自动化测试的浪潮之上,体验从理论到实践的转变,最终达到提高测试效率和质量的彼岸。
|
1月前
|
测试技术 网络安全
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
文章全面介绍了软件测试的基本概念、目的、岗位分类、与开发和调试的区别,并阐述了成为优秀测试人员应具备的素质和技能。
129 1
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
|
29天前
|
测试技术
软件测试中的探索性测试(ET)实践
【10月更文挑战第5天】本文将深入探讨一种与传统脚本化测试不同的测试方法——探索性测试(Exploratory Testing,简称ET)。我们将通过一个实际案例来展示ET的有效性,并分享如何将ET融入日常的软件测试流程中。文章旨在为测试人员提供一种灵活、高效的测试策略,帮助他们更好地发现软件中的缺陷。
|
27天前
|
监控 数据可视化 测试技术
软件测试中的自动化测试实践指南
【10月更文挑战第7天】 在软件开发的生命周期中,测试是确保产品质量的重要环节。随着技术的进步和应用的复杂性增加,自动化测试逐渐成为提升测试效率和覆盖范围的关键手段。本文将深入探讨自动化测试的基本概念、实施步骤及其在不同应用场景中的最佳实践。通过对自动化测试框架的选择、脚本开发、执行及维护的详细解析,帮助读者更好地理解和应用自动化测试技术,从而优化测试流程,提高软件质量。
37 2