转自【http://qa.taobao.com/?p=6828】
我们的现实生活是由一幅幅生动的场景画面所组合而成的。对于一个电影导演来说,要想获得一个高票房的收入,在拍摄的过程中必须事先精心设计好画面中的每一个场景,否则观众是不会来买单的,同样测试的工作也不例外,交付用户使用的系统要想获得用户的认可,必须站在用户的角度,以用户的使用逻辑及操作习惯为出发点,结合功能用例的设计方法,使用例设计更贴近实际,从而最大程度上满足用户的需求。
举一个生活中常见的例子,来感受一下常用的测试设计方法与场景测试之间的关系:测试一个创建贺卡的功能,对比两个不同视角的结果。从功能测试的角度出发,要测试的功能点大致为: 1.为卡片添加文本信息 2.为卡片添加图片 3.从卡片库中获取草图 4.发送卡片: 1) 通过email发送 2) 打印卡片;添加文本、图片,从库中加载卡,以及发送卡片这些可以通过我们常用的等价类,边界值等手段进行测试,而站在用户使用的角度出发则会更偏重于: 1.发送生日贺卡 2.发送周年纪念卡 3.发送聚会请帖 4.从一张空白卡片开始制作贺卡,并通过前面提供的这一堆功能创建一张自己需要的卡片。这就是场景测试的一个缩影,场景其实就是对每一个活动进行再细化描述活动执行的过程。
现在的软件几乎都是由事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果形成事件流。这种在软件设计方面的思想被引入到软件测试中,生动的描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时测试用例也更容易的得到理解和执行,从而最大程度上覆盖用户需求。这就是我们通常所说的基于场景的测试方法。
说到这里,大家可能会比较关注场景测试适用于什么样的项目呢?个人认为对于业务流程或事件比较复杂的程序,主要用来探索对于比较有经验的用户是怎么来使用软件的,并查找出更加有说服力的bug。不同的触发顺序和处理结果形成事务流,通过设计足够多的测试用例来覆盖基本流和各种备选流。流程性比较强,显然一个一个模块测试是不明智的,他的模块之间需要有数据流的流动才能运转,这是可以采用场景法确定数据流的大致情况。有些软件有明确的但是复杂的各种输入(原因),他们会导出许多复杂的输出,这个时候用因果图方法理清因、果之间的关系。但是光用这两个方法显然是不够的,针对每一个输入,有无数种情况,我们要用等价类的方法把无限测试变为有限测试。当然边界值、错误测试都是很有用也必要的测试案例的补充。对于一个软件,如果没有很明确的流程,也不需要使用因果图、场景法等方法,但是它依然需要等价类、边界值与错误输入等技术。对于这类软件我们可以分模块来进行功能的“扫菜单”方式组织案例的编写。
谈到场景测试,首先要知道什么是场景?场景是从用户的角度来描述系统的运行行为,反映系统的期望运行方式,是由一系列的相关活动组成的, 它就像一个剧本,是演绎系统未来预期的使用过程。场景可以看作是用户需求的内容,完全站在用户的视角来描述用户与系统的交互,之后的功能需求说明,则是用户需求分解的结果,定义了必须实现的软件功能。场景描述是一个迭代细化的过程,一般以故事叙述的方式描述如何帮助用户解决问题,辅以系统的交互草图。场景需要有清晰、明确的上下文环境,说明这个场景发生在什么背景下,何时会发生,从用户的角度出发,描述用户做什么,与系统的交互行为,以及用户对出现问题的反应。设置场景的目的是让所有人员明白用户的目标是什么,以及用户希望怎样做,不涉及具体的界面展现是怎样的,也不关注具体的实现方式是怎样的。
场景来源于哪里?场景是use case的一个实例,一个简单的场景是通过一个use case,并定义一些相关的数据以及覆盖这个case所流经的路径,数据通过输入,输出,以及一些中间状态与具体的场景相关联。一个复杂的场景包含对多个use case的组合,通过控制场景或子场景的执行顺序、条件控制、并行或反复处理来组合而成的,表明多个功能之间的信息流是如何进行运作的。 场景需要定义actors, roles, business processes, events以及the goal(s) of the actor(s) 。
什么是基于场景的测试方法呢?说白了就是在场景的基础上进行的测试,通过执行测试场景或与需求以及系统可操作的流程相关的测试用例来验证系统的功能。一个场景测试用例仅测试一个场景、事务或业务流程。基于场景技术的软件测试,首先需要完成对被测试系统进行分析建模,通过分析需求规格说明书,获得系统级的输入/输出变量,然后模拟用户的各种使用场景,基于该使用场景对测试对象进行测试。
基本流是经过用例的最简单的路径。备选流可能是从基本流开始,在特定条件下执行。备选流也可能会源于另一个备选流。备选流一般有两种去向:回到基本流或者异常中止。在用例场景作成时,有时候很难搞清楚哪些是基本流,哪些是备选流。基本流就是那些完成某个操作需要经过的必须步骤,而备选流则是完成这些必须步骤中出现的一些可选操作。当业务流、场景都确定下来以后,一个业务的具体操作流程就确定了,基于场景的测试主要集中在用户和系统之间的交互,主要用来检测业务需求的正确性,而不是代码本身的正确性。
Cem Kaner, Florida Tech, 《An Introduction to Scenario Testing》
Using Dependency Charts to Improve Scenario-Based Testing
Management of Inter-Scenario Relationships:Depicting and Managing Dependencies between Scenarios
Scenario Test Pack:A Summary of the Testing Scenarios Produced by the Retail Market Testing Team
本研究隶属于万剑归宗项目组。
VN:F [1.9.3_1094]
分享到:
相关推荐
在快速变化的软件开发领域,探索性测试(Exploratory Testing)作为一种灵活且高效的测试方法,逐渐受到越来越多的关注与重视。本文将根据提供的资料,围绕探索性测试的概念、特点及其在软件测试中的核心价值进行...
1)探索性测试与脚本化测试的主要区别在于,前者侧重于执行时的认知和反馈,后者更关注测试设计的前期工作。探索性测试的活动是并行和相互作用的,而脚本化测试的流程相对线性。 2)脚本化测试的优点包括早期缺陷...
- **测试目的分层**:漫游测试侧重于追求已知用户场景下的代码覆盖率,而探索测试则更加关注未知用户行为模式的覆盖率。 - **全面性评估**:结合代码覆盖率和用户行为模式覆盖率两个维度来综合评估测试的全面性。 #...
4. **学习与反馈**:探索式测试强调在整个测试过程中不断学习和改进,通过反馈机制优化测试活动。这包括测试记录、反思、以及与开发团队的有效沟通。 5. **工具的使用**:虽然探索式测试强调人的因素,但工具也是不...
### 探索式测试四象限与实践 #### 核心概念解析 ##### 探索式测试(Exploratory Testing, ET) 探索式测试是一种强调测试人员个人直觉、经验和创造力的测试方法。它并不依赖于事先准备好的测试用例,而是鼓励测试...
本文将深入探讨零代码智能测试在银行业的全链路场景中的探索与实践,并分析其定义、测试痛点、解决方案以及关键技术。 首先,零代码智能测试是一种创新的测试模式。传统测试方法需要测试工程师根据测试需求编写详细...
8月6日的软件测试学习,是这个探索旅程中的一站,旨在深化理解测试原理、掌握测试方法和工具,以及提升测试效率。在这个学习主题中,我们可以关注以下几个核心知识点: 1. **测试基础理论**:软件测试是验证和确认...
总之,探索性测试是对传统剧本化测试的有效补充,它强调在测试过程中不断学习和适应,以提高测试的效果和价值。通过灵活运用这两种测试方法,测试团队可以在保证质量的同时,提升测试工作的效率和适应性。
3. **并行的学习、设计、执行与评估**:探索式测试的一个关键特点是在测试过程中同时进行学习、测试设计、测试执行以及结果分析。这些活动不是孤立进行的,而是互相支持、相辅相成,共同构成了一个持续改进的过程。 ...
未来的研究可以探索如何进一步优化算法,提高模型的准确度和鲁棒性,以及如何将场景分类技术应用于更多实际场景中。 以上是对文档内容的知识点进行的详细解析,覆盖了场景分类的研究背景、现状、数据集、处理步骤和...
测试是软件开发过程中的关键环节,它确保了产品的质量和稳定性,是用户满意度的重要保障。...而"测试学习文档pdf"正是这样一份宝贵的资源,它将引导我们进入测试的世界,探索其精髓,成为一名优秀的测试开发工程师。
在虚拟场景测试应用方面,测试方法可以分为单一片段测试、组合片段测试和融合交通流的测试三个维度。单一片段测试关注于单一场景的测试,组合片段测试则是将多个不同场景组合起来进行测试,而融合交通流的测试则...
1. **测试基础**:了解软件测试的基本概念,如黑盒测试、白盒测试、灰盒测试以及单元测试、集成测试、系统测试和验收测试的区别和应用场景。 2. **测试策略**:学习如何制定有效的测试计划,包括测试目标、测试范围...
"软件测试学习案例测试参考案例" 是一个集合,旨在帮助学习者深入理解软件测试的各种方法、技术和工具。这个压缩包可能包含了多种测试案例,用于演示不同的测试策略和步骤。下面,我们将详细探讨与软件测试相关的...
文章概览:本文旨在全面解析由董杰提出的41种探索性测试方法,这些方法广泛应用于软件测试领域,旨在提高测试效率与质量,确保软件产品的稳定性和用户体验。我们将逐一探讨每种方法的核心思想、适用场景、测试目标,...
### 基于深度学习与遗传算法的动车组与ATP车载设备接口试验测试序列优化...未来的研究可以进一步探索如何将这种方法应用于更多复杂的测试场景,以及如何通过实时数据分析动态调整测试策略,以适应不断变化的技术环境。
在探索人工智能(AI)测试方法的过程中,我们首先需要对AI的本质有所了解。AI技术目前的核心可归纳为大数据与机器学习的结合体。这种结合让机器能够在海量的历史数据中学习和发现规律,进而对未来做出预测,从而表现...
黑盒测试,也被称作功能测试或数据驱动测试,是一种广泛应用于软件开发领域的测试方法,特别适合于软件测试的入门级学习。在黑盒测试中,测试者将软件视为一个无法窥探其内部结构的“黑盒”。这意味着测试过程完全...
《测试学习宝典.chm》和《测试学习宝典.chw》可能是电子书格式的文档,包含了这些详细的知识点和实战案例,为读者提供了丰富的学习资源。通过深入阅读和实践,你可以逐步成为一名熟练的软件测试工程师,为软件质量...
《JMeter性能测试学习视频1》是一套针对JMeter工具的详细介绍和实操教程,旨在帮助初学者快速掌握性能测试的基础知识和技能。本课程涵盖了JMeter的基本概念、目录结构、测试计划的创建与配置,以及如何使用HTTP请求...