来源:http://www.51testing.com
测试用例的重要性不言而喻,如何让测试用例设计的更好、更有效是所有测试团队需要深入研究的问题。一般来说,测试用例的设计可以分为三个方向,测试数据的用例设计、测试方法的用例设计和测试执行的用例设计。接下来我们将从这三个方面一一讲解。基于测试数据的测试用例设计
边界值分析
该方法侧重评估输入值的上限和下限。旨在找到可能出现在输入范围边缘的缺陷或故障。为了确保系统在具有挑战性的边界环境中做出适当响应,创建测试用例以涵盖有效和无效边界值。决策表测试
该方法适用于具有各种情况和伴随操作的系统。制定一个决策表,记录步骤,然后通过创建涵盖每个潜在组合的测试用例来彻底测试系统的决策能力。该方法有助于发现决策过程中的错误或缺失的步骤。状态转换测试
当系统有多个状态以及相互转换时,可以使用这种方法。该方法旨在验证系统是否能够充分处理与状态相关的功能,可靠且一致地在状态之间进行转换。为了验证系统在变化状态下的行为,创建测试用例来涵盖各种状态转换,包括合法和无效转换。错误猜测
创建测试用例时要考虑到这些区域,测试其他方法可能无法涵盖的潜在错误场景。为了发现系统中隐藏的缺陷或漏洞,该技术取决于测试人员的批判性和创造性思维能力。基于测试方法的测试用例设计
探索性测试
这种测试方法重点关注并发学习、测试设计和测试执行。研究正在测试系统的行为并快速发现任何潜在的问题或需要改进的领域。探索性测试使用测试人员的能力、直觉和领域知识代替计划的测试用例来发现缺陷并了解系统的行为。这种测试用例设计适用于应用程序不太复杂或不太重要的情况,或者适合具有高水平协作和能力的长期团队。基于模型的测试
这是一种利用模型来创建、生成和运行测试用例的软件测试方法。在MBT中,构建模型来描述正在测试的系统功能、行为或结构。该模型用作创建跨越路径、场景和输入组合的测试用例的指南。基于状态的测试
这涉及将系统模型创建为有限状态机FSM,并设计测试用例以覆盖该模型内的不同路径和场景。为了成功应用基于状态的测试,测试人员应该充分了解系统及其在不同状态下的预期行为。测试人员、开发人员和领域专家之间的协作对于在状态模型中准确表示系统的状态和转换至关重要。基于测试执行的测试用例设计
功能测试
使用这种方法,可以根据正在开发的新功能来创建和准备测试用例。测试用例将该功能作为完整的独立功能进行处理,并涵盖积极和消极的场景。这种方法已被现代测试工程团队广泛使用,因为它似乎为他们提供了对需求可追溯性和其他质量指标的强大处理。集成测试
使用此方法创建的测试用例以端到端用户流为中心。此类测试用例旨在向测试人员演示如何处理整个应用程序,而不仅仅是单个功能。流程集成测试用例仅涵盖“快乐路径”,让测试人员可以自由发挥想象力来构造其他场景。这种方法广泛应用于大型企业组织,并且应用程序增强功能在不同级别上进行了有效性测试。验收测试
创建测试用例是为了执行用户验收测试,其中测试人员主要是利益相关者。这些类型的测试用例可以很好地预览应用程序的最新增强功能、规范以及完成测试用例必须满足的依赖关系。影响测试用例的因素
测试用例是经常更新和更改的动态文档。在某些情况下,它可能还需要为即将停用的功能和应用程序行为方式的更改腾出空间。无论使用何种方法构建测试用例,以下标准都会对测试用例产生直接影响。风险或威胁
如果系统中发现新的风险或威胁,可能需要额外或更新的测试用例来解决这些领域,从而需要调整非常规的测试用例创建方法。复杂系统增强
如果系统经历相当大的变更或架构修订,则可能需要修改非常规测试用例设计方法,以解决增加的复杂性。版本控制
尽管对应用程序的需求不断变化,但并非所有用户都愿意花费持续升级到最新版本的费用。大多数 B2B 应用程序都需要互操作性,因为不同的 UI 和 DB 版本必须协同工作,反之亦然。不断变化的需求
当需求随着时间的推移而变化时,测试用例必须适应这些变化,确保它们涵盖预期的功能并符合不断变化的需求。反馈和结果
非常规测试方法的反馈和发现可能会对测试用例的修订产生影响。可以从早期测试执行中汲取经验教训,进行修改以获得更好的覆盖范围或效率。结论
全面的测试和保证软件产品的质量需要有效的测试用例设计。设计测试用例的技术包括等价划分、边界值分析、决策表测试、状态转换测试、用例测试和错误猜测。然而,软件开发的动态本质需要对测试用例进行例行检查和修改。影响测试用例修改的一些主要原因是需求变化、错误修正、系统改进、环境变化、代码更新和测试用例优化。根据这些情况调整和发展测试用例对于高效和有效的测试至关重要,这最终会提高软件质量和客户满意度。
本书第1章与第2章介绍软件单元测试的概念和基础知识。
第1章简单介绍软件单元测试所包含的概念,包括桩对象和测试驱动函数、测试驱动开发、软件测试贯彻始终、软件测试金字塔、单元测试在传统/敏捷开发模式中的地位、精准测试、单元测试和白盒测试,以及单元测试的FIRST原则和AIR原则。
第2章介绍软件单元测试基础知识,包括动态自动化/手工单元测试、静态自动化/手工单元测试。在动态自动化单元测试中介绍了语句覆盖、分支覆盖、条件覆盖、条件/分支覆盖、MC/DC、路径覆盖和控制流覆盖。
第3章到第5章介绍C语言、Java语言和Python语言的单元测试框架。
第3章介绍C语言动态自动化单元测试框架,包括在Windows下安装C语言运行环境、在Windows和Linux下安装编译CUnit、查看测试报告、CUnit介绍和案例。
第4章介绍Java语言动态自动化单元测试框架,包括在Eclipse中创建Maven项目和配置JUnit与TestNG运行环境、JUnit 4测试框架、JUnit 5测试框架、TestNG测试框架、测试替身、变异测试、利用EvoSuite自动生成测试用例,以及在Jenkins中配置JUnit 4、JUnit 5、TestNG和Allure。
第5章介绍Python语言动态自动化单元测试框架,包括unittest、Pytest及Python的模拟对象和变异测试工具mutpy。
第6章与第7章介绍代码覆盖率工具和代码语法规范检查工具。
读者可以根据自己的需求对以上内容进行选择性阅读或者全部阅读。另外,为了巩固大家的学习效果,每一章结尾都有相应的习题。
还没有评论,来说两句吧...