• 《软件测试52讲》读书笔记 —— 如何设计一个“好的”测试用例


    如何理解一个“好的”测试用例?

    “好的”测试用例一定是一个完备的集合,它能够覆盖所有等价类以及各种边界值,而跟能否发现缺陷无关

    举栗子

    被测软件——鱼塘

    软件缺陷——鱼

    测试用例集——渔网

    “好的”测试用例集就是一张能够覆盖整个鱼塘的大渔网,只要鱼塘里有鱼,就能给捞上来;

    如果渔网本身是完整合格的,那么捞不到鱼,就证明鱼塘中没有鱼,而渔网的好坏与鱼塘是否有鱼无关

    “好的”测试用例必须具备哪些特征

    1. 整体完备性:一定是一个完备的整体,是有效测试用例组成的集合,能够完全覆盖测试需求
    2. 等价类划分的准确性:对于每个等价类都能保证只要其中一个输入测试通过,其他输入页一定测试通过
    3. 等价类集合的完备性:需要保证所有可能的边界值和边界条件都已经正确识别

    三种最常用的测试用例设计方法

    1. 等价类划分
    2. 边界值分析
    3. 错误推断法:基于对被测试软件系统设计的理解、过往经验以及个人直觉,推测出软件可能存在的缺陷,从而有针对性地设计测试用例方法。强调的是对被测软件的需求理解以及设计实现的细节把握

    错误推断法的例子

    如何设计出“好的”测试用例

    大栗子:测试面向终端用户的GUI测试

    最核心的测试点:验证软件对需求的满足程度

    如何做到:在需求分析阶段和技术设计阶段就开始介入

    成效:设计出从终端用户使用场景考虑的端到端的测试用例集,主要验证各个业务需求是否被满足,基于黑盒的测试设计方法

    重点:在具体的用例设计时,首先要搞清楚每一个业务需求所对应的多个软件功能需求点,然后分析出每个软件功能需求点对应的多个测试需求点,最后再针对每个测试需求点设计测试用例

    绕吗???(;´д`)ゞ

    小栗子:以“用户登录”功能设计测试用例

    首先先看看【用户登录】功能的映射关系图

    两个关键点:

    1. 从软件功能需求出发,全面地、无遗漏地识别出测试需求是至关重要的,这将直接关系到用例的测试覆盖率。 比如,如果你没有识别出用户登录功能的安全性测试需求,那么后续设计的测试用例就完全不会涉及安全性,最终造成重要测试漏洞。
    2. 对于识别出每个测试需求点,需要综合运用等价类划分、边界值分析和错误推测方法来全面设计测试用例。

    以用户登录的功能性需求为例

    1. 首先对“用户名”和“密码”两个输入框分别进行等价类划分,对于无效等价类的识别可采用错误推测法(如:用户名包含特殊字符)
    2. 然后补充输入框的边界值用例,如:为空、用户名长度刚刚大于限定长度

    设计测试用例的高级经验

    深入理解被测试软件的架构,发现系统边界以及系统集成上的潜在错误

    必须对内部的架构有清楚的认识,比如:数据库连接方式、数据库的读写分离、消息中间件的配置、缓存系统的层级分布、第三方系统的集成

    必须深入理解被测软件的设计与实现细节、内部处理逻辑

    只根据测试点设计测试用例只能覆盖“表面”一层,往往内部处理流程、分支处理无法覆盖完全;在具体实践中,可以通过代码覆盖率指标找出可能的测试遗漏点

    引入需求覆盖率和代码覆盖率来衡量测试执行的完备性

    后续介绍

    评论区额外“加餐”

    1. 【需求合理性测试】即用户体验测试也是现在很重要的一点
    2. 在快速迭代的敏捷开发节奏下,无需把每条用例都写的这么复杂,重要的是把测试点写清楚,不是要把那些显而易见的步骤,环境,预期写的十全十美
  • 相关阅读:
    [LeetCode] 1092. Shortest Common Supersequence
    [LeetCode] 1091. Shortest Path in Binary Matrix
    [LeetCode] 1090. Largest Values From Labels
    [LeetCode] 1089. Duplicate Zeros
    git log
    Java-Note
    (转载)深入解析String#intern
    Android——LruCache源码解析
    (转载)gcc编译选项总结
    Java——LinkedHashMap源码解析
  • 原文地址:https://www.cnblogs.com/poloyy/p/12189655.html
Copyright © 2020-2023  润新知