测试思想-测试设计 授客细说场景测试用例设计与实践

简介: 测试思想-测试设计 授客细说场景测试用例设计与实践

授客细说场景测试用例设计与实践


测试是一种思想,短视者把工具当目的,远视者把工具当手段.....

 

软件设计

1)单个用户操作->触发单个事件->事件处理

2)按顺序执行多个用户操作->按顺序触发多个事件,形成事件流

 

注:通常事件是操作触发的,和操作往往是一一对应的关系,所以,这里为了便于理解,暂且把“操作”名称,称为事件名。

 

举例:在windows画图榜中画线为例

 



这里简单说,触发了三个事件:鼠标左键按下,鼠标左键弹起,鼠标移动。

事件处理:

鼠标左键按下时,用两个不同名称的变量保存鼠标的点击点,作为直线的起点和终点;

鼠标移动时,不断用最新的鼠标点代替线条中线条终点,并擦除之前画的线条;

鼠标左键弹起时,保存最后一个点作为直线终点,并画线。

 

当然,我们可以稍微宏光的把多个“较小”的用户操作整合为一个“较大”的用户操作,比如上述的三个操作(按下鼠标左键,移动鼠标,松开鼠标左键),可以整合为一个操作--“画线”。

 

借鉴软件设计的思想,引进“按场景设计用例”的思想

 



 

 

基本流用黑色表示,是经过用例的最简单的路径。

备注:个人理解,这个称为“最主要”的路径会比较合适,具体理由见下文说明

 

备选流用不同的彩色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流13);也可能起源于另一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流24

 

 

什么叫场景

通俗的将,场景为用户活动和活动环境的结合。

其中,用户活动通常是由一系列操作组成,活动环境则通常是操作时的软、硬件环境。

 

->按场景来设计用例,其实就是设计不同系列的操作,按顺序去触发每个系列的操作,查看其结果是否和预期保持一直。

 

问题来了,那么多用户操作,每个系列的操作要怎么安排??

 

设计思想:

产品是给用户使用的->用户是怎么使用产品的?->操作产品:

1)如果顺利完成操作,产品功能好

2)如果不能完成操作,产品功能差

 

->测试人员要模拟用户操作->用户怎么操作的?:

1)用户会按模拟的那样,操作产品(不管是有意还是无意),测试投入有价值

2)用户永远不会那么操作,测试投入约等于无价值。

 

->按优先级模拟操作:优先模拟用户最有可能的系列操作,即用户场景,然后模拟次可能的场景操作。

 

注意:不管是不是按场景设计用例,这也是作为用例优先级安排的一条最最基本的原则。

 

 

看完了似乎还是没解决怎么安排的问题,对吧

烦先看文章“细说软件产品和业务&业务过程(流程) &业务逻辑

 

看完了文章,可以容易得出

1)业务逻辑之业务过程是用户最有可能执行的场景操作--应设计为基本流

2)业务逻辑之业务规则是用户次有可能执行的场景操作--应设计为被选流

 

注:以上这种对应关系仅是大致思想,基本是那样,并不绝对。

 

设计实践

1.绘制事件流景

2.描述事件流

3.用例设计

 

例子:以学校学生申请助学金为例子

业务过程:

学生申请助学金->班主任审批->分院负责人审批->学工处审批->资助领导小组审批

 

附加说明:

审批时可选择助学金等级:1等,2等,3

1.班主任仅可见其管理班级的学生提交的申请表

2.分院负责人仅可见其管理院系的学生提交的申请表

3.学工处和资领小组审批可见所有审批拒绝通过的申请表

4.职位较低的审批人拒绝通过,不影响较高职位的人(学工处及资助领导处)对申请进行审批、删除(如果审批人有权限的话

5.如果前面的审批人选择审批通过,那么后面的审批人仅在表单流程走到自己的审批节点时才可以看到表单

 

绘制事件流图

 



特别说明:

1.如图,为了画图和事件流描述方便、易于理解,我们可以增加“虚事件”--不需要实际操作去触发的事件,之所以说是虚事件,因为没有用户、系统提供实际操作,就不会产生事件。

2.如图,为了便于理解,通常把“事件流”拆分成一个一个事件(过程中,某个过程节点上的主选事件和备选事件,分别用不通颜色代替),也就是说上面每根带箭头的线条,宏光上仅代表一个事件,所谓的事件流是由这些事件按一定顺序触发后才形成的。

 

描述事件流

推荐书写格式

场景名称(描述这一整个事件流为了完成什么事情?目的)

事件1

事件2

...

事件N

 



用例设计

通常情况下,可以把每个场景当作一条用例。这里需要注意的是,这里的事件流侧重事件触发逻辑顺序,设计用例时,还要注意测试数据(按我的观点,测试逻辑和测试数据一般是要分开的)

 

根据上述例子中的附加说明,每条用例可能有多条测试数据。因为审批过程中是可修改助学金等级的,这个很重要,所以要测试不同等级的审批结果。

 

适用范围:

通常,按场景设计用例,比较适合流程性比较强的测试,比如业务测试。

 

当然,这种思想,也可以应用用在局部功能的测试上,具体参见文章“测试用例设计实践总结”描述中,其核心思想和这个场景测试是差不多的。

 

pdf版下载:

授客细说场景测试用例设计与实践.pdf

 

目录
相关文章
|
4天前
|
敏捷开发 人工智能 Devops
探索自动化测试的高效策略与实践###
当今软件开发生命周期中,自动化测试已成为提升效率、保障质量的关键工具。本文深入剖析了自动化测试的核心价值,探讨了一系列高效策略,包括选择合适的自动化框架、设计可维护的测试脚本、集成持续集成/持续部署(CI/CD)流程,以及有效管理和维护测试用例库。通过具体案例分析,揭示了这些策略在实际应用中的成效,为软件测试人员提供了宝贵的经验分享和实践指导。 ###
|
3天前
|
机器学习/深度学习 人工智能 jenkins
软件测试中的自动化与持续集成实践
在快速迭代的软件开发过程中,自动化测试和持续集成(CI)是确保代码质量和加速产品上市的关键。本文探讨了自动化测试的重要性、常见的自动化测试工具以及如何将自动化测试整合到持续集成流程中,以提高软件测试的效率和可靠性。通过案例分析,展示了自动化测试和持续集成在实际项目中的应用效果,并提供了实施建议。
|
4天前
|
Java 测试技术 持续交付
探索自动化测试在软件开发中的关键作用与实践
在现代软件开发流程中,自动化测试已成为提升产品质量、加速交付速度的不可或缺的一环。本文深入探讨了自动化测试的重要性,分析了其在不同阶段的应用价值,并结合实际案例阐述了如何有效实施自动化测试策略,以期为读者提供一套可操作的实践指南。
|
4天前
|
Web App开发 敏捷开发 测试技术
探索自动化测试的奥秘:从理论到实践
【10月更文挑战第39天】在软件质量保障的战场上,自动化测试是提升效率和准确性的利器。本文将深入浅出地介绍自动化测试的基本概念、必要性以及如何实施自动化测试。我们将通过一个实际案例,展示如何利用流行的自动化测试工具Selenium进行网页测试,并分享一些实用的技巧和最佳实践。无论你是新手还是有经验的测试工程师,这篇文章都将为你提供宝贵的知识,帮助你在自动化测试的道路上更进一步。
|
4天前
|
敏捷开发 Java 测试技术
探索自动化测试:从理论到实践
【10月更文挑战第39天】在软件开发的海洋中,自动化测试是一艘能够带领团队高效航行的船只。本文将作为你的航海图,指引你理解自动化测试的核心概念,并分享一段实际的代码旅程,让你领略自动化测试的魅力和力量。准备好了吗?让我们启航!
|
9天前
|
测试技术 API Android开发
探索软件测试中的自动化框架选择与实践####
本文深入探讨了软件测试领域内,面对众多自动化测试框架时,如何依据项目特性和团队需求做出明智选择,并分享了实践中的有效策略与技巧。不同于传统摘要的概述方式,本文将直接以一段实践指南的形式,简述在选择自动化测试框架时应考虑的核心要素及推荐路径,旨在为读者提供即时可用的参考。 ####
|
10天前
|
网络协议 关系型数据库 应用服务中间件
【项目场景】请求数据时测试环境比生产环境多花了1秒是怎么回事?
这是一位粉丝(谢同学)给V哥的留言,描述了他在优化系统查询时遇到的问题:测试环境优化达标,但生产环境响应时间多出1秒。通过抓包分析,发现MySQL请求和响应之间存在500毫秒的延迟,怀疑是网络传输开销。V哥给出了以下优化建议:
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
探索软件测试的边界:从基础到高级的实践之旅
【10月更文挑战第21天】 在当今数字化时代,软件已成为我们生活和工作中不可或缺的一部分。随着技术的快速发展,对软件质量的要求也日益提高。本文旨在通过深入浅出的方式,带领读者踏上一场从基础到高级的软件测试实践之旅。我们将探讨软件测试的基本概念、重要性以及如何有效地进行测试规划和执行。通过具体案例分析,揭示常见错误及其解决方案,同时展望未来软件测试领域的发展趋势。无论你是软件开发新手还是经验丰富的测试工程师,这篇文章都将为你提供宝贵的见解和启发。
35 8
|
19天前
|
监控 安全 jenkins
探索软件测试的奥秘:自动化测试框架的搭建与实践
【10月更文挑战第24天】在软件开发的海洋里,测试是确保航行安全的灯塔。本文将带领读者揭开软件测试的神秘面纱,深入探讨如何从零开始搭建一个自动化测试框架,并配以代码示例。我们将一起航行在自动化测试的浪潮之上,体验从理论到实践的转变,最终达到提高测试效率和质量的彼岸。
|
14天前
|
NoSQL 测试技术 Go
自动化测试在 Go 开源库中的应用与实践
本文介绍了 Go 语言的自动化测试及其在 `go mongox` 库中的实践。Go 语言通过 `testing` 库和 `go test` 命令提供了简洁高效的测试框架,支持单元测试、集成测试和基准测试。`go mongox` 库通过单元测试和集成测试确保与 MongoDB 交互的正确性和稳定性,使用 Docker Compose 快速搭建测试环境。文章还探讨了表驱动测试、覆盖率检查和 Mock 工具的使用,强调了自动化测试在开源库中的重要性。

热门文章

最新文章