`

场景测试学习与探索

阅读更多

转自【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]
分享到:
评论

相关推荐

    读《探索式软件测试》的学习笔记

    探索式测试(exploratorytesting)是一种自由的软件测试风格,强调测试人员同时开展测试学习、测试设计、测试执行和测试结果评估等活动,以持续优化测试工作。  软件测试风格ratherthan具体的软件测试技术  探索式...

    敏捷开发模式下的利刃:探索性测试(ET)--测试用例如何设计?

    本文来自于51testing,文章主要...这是一种强调个人自由与责任的测试方法,让独立测试人员可以借用不断的学习来改善测试的规划与测试的执行,而在测试的过程中也会同时改善测试案例达到相辅相成的效果。它的本质是测试

    前沿软件测试杂志 内容丰富不可不看

    1.探索精神:软件测试员不会害怕进入陌生环境。 有较强的学习能力,可以用最快的速度成为一个新的行业的专家。 2.故障排除能手:软件测试员善于发现问题的症结,喜欢猜谜。可以迅速的通过事物的表面现象发现事物的...

    人工智能测试方法--探索.pdf

    ⼈⼯智能测试⽅法--探索 什么是⼈⼯智能 再讲如何 ⼈⼯智能产品之前,我觉得我要先跟不熟悉⼈⼯智能的同学们解释⼀下什么是⼈⼯智能。毕竟想要测试⼀个东西,就要先了解它么。⽤⼀句话来 概括现阶段的⼈⼯智能就是:...

    2020人工智能与机器学习创新峰会PPT汇总.zip

    2020人工智能与机器学习创新峰会PPT汇总,24个专题共73份资料。供大家学习参考。 一、测试新趋势 业务数据监控从0-1脱敏 AI在游戏数值与平衡性分析中的应用 ...多模态内容生成在京东商品营销中的探索与实践

    机器学习之线性回归文档,很详细

    归一与标准化应用场景 均方误差、均方根误差 R Squared 欠拟合与过拟合解决方案 欠拟合解决方案 PolynomialFeatures基本使用 升维提升正确率 欠拟合与过拟合 温故而知新 过拟合解决方案 L2正则化岭回归 常见的机器...

    《用Python做HTTP接口测试》练习资料共享.zip

    同时,我们也鼓励你在学习的过程中不断实践、探索和创新,将所学知识应用于实际场景,发挥Python的强大潜力。Python是一门强大且易学的编程语言,广泛应用于数据科学、机器学习、Web开发等多个领域。为了帮助大家更...

    【推荐】云安全解决方案和实践集合.zip

    零信任安全在精准云网场景应用的实践与思考 数据中心云基础设施资源安全防护 再看云虚拟化安全.QEMU通用漏洞挖掘新思路 上汽云中心全场景安全建设 数字化转型下软件定义广域网络如何实现业务安全高效在线访问 数字新...

    竞赛资料源码-JDD全球数据者探索大赛算法组第一题:信贷需求.zip

    学习与项目开发:可以用作毕设、课设、作业和竞赛项目的开发基础,可以使用这些源码作为项目开发的基础,快速构建出具有竞争力的作品。 【互动与交流】: 资料鼓励下载和使用这些资源,并欢迎学习者进行沟通交流、...

    2020QECon 全球软件质量和效能大会(上海站)PPT汇总.zip

    分布式场景下“超级终端”体验测试实践 华为鸿蒙分布测试框架建设之路 再访深度链接-移动端测试之虫洞 avd容器化在携程的规模化应用实践 数字化转型时代的工程管理效能提升之路 打造聚能环:高可用服务端的质量保障...

    精通QTP——自动化测试技术领航

    2.7 无人值守测试的守护神—场景恢复(Recovery Scenarios) 248 2.7.1 必须知道的几种场景恢复的误区 248 2.7.2 陌生的Web默认场景恢复 251 2.7.3 无所不能的自定义场景恢复函数 252 2.7.4 总结 256 3.2 HTML DOM...

    auto_vaidya:一个将深度学习应用于医疗场景的开源项目

    用于创建端到端Web应用程序的开源解决方案,以在各种临床场景中利用深度学习的力量,例如植入物检测,肺炎检测,脑部mri分割等。 公关建议: 除非项目维护人员另有要求,否则请提供测试分支的PR 适当地命名您的...

    2024年MATLAB-深度学习:使用LSTM进行时间序列预测(干货满满)

    文章首先解释了深度学习和LSTM的基本概念,接着详细阐述了在MATLAB环境中建立、训练和测试LSTM模型的步骤。最后,文章探讨了如何利用训练好的模型来预测未来的时间序列数据,如股票价格或天气变化等。 **适用人群**...

    Visual Basic计算器案例详解.zip

    从设计界面到编写代码实现功能,再到测试与优化,整个过程涵盖了VB编程的基本流程和关键技术。通过不断练习和实践,我们可以逐步掌握VB编程的精髓,并开发出更加复杂和实用的应用程序。 展望未来,随着技术的不断...

    基于概率神经网络的手写体数字识别(MATLAB)

    3. 算法优化与改进:作为基准实验平台,可以通过修改和优化概率神经网络的结构和参数,探索改进手写体数字识别准确性的方法。 其他说明: 1. 本资源提供了清晰的步骤和可复现的MATLAB代码,用户可以根据需要进行修改...

    springboot021校园周边美食探索及分享平台的设计与实现_zip.zip

    使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在...

Global site tag (gtag.js) - Google Analytics