源码时代软测干货分享|探索语境驱动测试七大原则

IT-source IT-source     2022-12-13     435

关键词:

探索式测试的奠基人和积极实践者cemKaner和JamesBach都支持语境驱动

测试。语境驱动测试的7条基本原则对于正确理解并应用探索式测试具

有重要意义,本文将予以简单讨论。

 

原则1:任何实践的价值都取决于其语境(Context)

 

 这条原则几乎是不言自明的。中国人很早之前就有相似的认识,“南橘北枳”

 指相同的种子在不同的环境中会结出不同的果实。因此古人建议“因地制宜”

 即根据当地的具体情况,采用合适的措施。

然而,软件开发者往往会在无意中忘记这条原则。开发团队会照搬以往的经验,却不考虑经验可能己经过时;会不假思索地采用他人建议的开发方法,却不怀疑南橘北枳的可能;会按照高层的指示亦步亦趋,却不思索指令合理·更糟糕的是,在感觉到情况不妙后,却将错就错,不思变更。因此开发团队需要频繁地反思其开发实践是否符合当前的语境,并做出相应调整。

 

原则2:在特定语境下存在好的实践,但不存在最佳实践

 

    这条原则看似有些武断,毕竟软件研发己经沉淀出一批公认的实践方法,它

们是现代软件开发必不可少的核心实践。但是,细细一想便会发现这些方法也需

要因地制宜。“持续集成”是公认的最佳实践,但是不同的团队往往有不同的集成

频率。对于小型项目,一次签入(Check-in)会触发一次完整的构建;对于大型

项目,开发团队可能每天做一次完整构建;对于超大型项目,做一次完整的构建

可能需要几天甚至更长的时间。不同的构建频率和构建代价自然会导致不同的签

入策略和测试方法。虽然都在实施“持续集成”,但是不同的团队会设计出不同的

流程和方法。

    对于测试工作者,这条原则表示任何一种测试方法(包括探索式测试)都不

是无条件的最佳选择。测试人员始终要评估当前情况,寻找适合当前语境的测试

风格和技术。

 

原则3:人,在一起工作的人,是项目语境中最重要的部分

 

    这条原则强调了软件开发的社会学因素。软件开发专家Tom DeMarco 和Tim Lister指出:“本质上,我们工作中的主要问题,与其说是技术问题,不如说是社会学问题”。而社会学因素的根源是“软件开发是一个创造与沟通的协作游戏”。在创造与沟通的过程中,一定是个体和他们的交互起主要作用·

 

    在软件测试中,以下观点反映了人的重要性。

*软件开发是具有挑战性的智力活动,开发人员(包括测试人员)的责任感、技能、状态将强烈影响软件实现和代码质量。因此,招聘、培训、挽留高水平开发人员是软件企业最重要的工作之一。

*软件开发是一种创造与沟通的游戏。软件企业应该营造一种开放、协作的工作环境,使得开发人员能够自如地去思考、去发明、去创造。

*软件测试的核心任务是寻找并传递信息。在寻找信息的过程中·测试人员的能力和相互协作的水平将在很大程度上决定信息的数量和质量。

*软件测试提供信息服务。服务就意味着有客户,测试人员是否成功,主要取决于是否很好地满足了客户的要求和最佳利益。也就是说,测试人员的重要任务是理解客户,并与他们展开有效的交流。

 

 

原则4:项目的发展往往难以预料

 

    在一些语境中,项目的发展是可以预料的。随着时间的推移,项目的不确定性逐渐降低,当项目即将结束时,开发团队能够准确预期项目的结局。但是,在项目的开始阶段,项目的不确定性也非常高。在初始概念阶段建立的估算值可能是实际值的4倍。

该原则并不是一个悲观的见解,相反它体现了一种实事求是的态度和对软件风险的成熟认知。探索式测试有助于快速获得信息,从而降低软件项目的不确定性。成功的测试团队在整个项目过程中会结合广度优先探索和深度优先探索,在特定的时间选择适合的方法,从而更明智地利用测试资源。

 

 

原则5:产品是一种解决方案。如果问题没有被解决,它就是无用的

 

    成功的软件必须帮助用户解决现实世界中的问题,辅助他们获得成功。在极

端情况下,一个符合规格说明且没有技术缺陷的软件会遭遇失败,因为它没有解

决用户的问题,甚至阻碍用户解决问题。在需求完成时,不确定的范围会大幅缩小。但是,如果需求存在重大缺陷,甚至初始概念就是错误的,那么稳定的开发过程只会“稳定地”产生失败的产品。

    这一原则要求测试工作者用软件用户的视角考察整个产品,从显式规格说明(不完整、模糊、包含错误的项目文档)和隐式规格说明(包括竞争对手产品、相关产品、己发布版本、电子邮件讨论、口头讨论、论坛反馈、博客文章、领域专著、测试经验等)中,挖掘、推导、发现需求。这是探索式测试人员需要掌握的探索技能。

 

原则6:好的软件测试是一个具有挑战性的智力过程

 

    这又是一条不言自明的原则,相信大家也会认同该原则。虽然您可能会质疑,但是您的阅读己经说明软件测试的挑战性和复杂性需要认真研究与思考·

 

    这条原则的推论是枯燥、机械、无成就感的测试过程不是好的软件测试,这样的过程压抑了测试人员的创造性,分散了他们的注意力,降低了他们的智力水平。然而,必须承认,我们在日常工作中也时常会感到枯燥、单调、缺乏创造力。对此,笔者的基本观点是:

第一,测试人员应该以合乎要求的质量完成自己的工作,这是测试人员必须履行的职责;

第二,应该将单调的工作视为改进的信号,通过改变工作内容和流程,将更多的时间用于具有挑战性的工作。

 

原则7:只有通过判断和技能,并在整个项目过程中协同练习它们,我们才能在正确的时间做正确的事,以有效地测试我们的产品

 

    软件测试领域的一些文献似乎在暗示,只要严格遵循“优秀”的测试过程或模板,就可以使普通的测试人员成为测试专家,并获得理想的测试结果。这种观点是不正确的,因为只有高素质的测试人员才能根据语境设计出合适的流程、计划、策略和用例,而这些才是有效测试的基础。

    那么该如何培养高素质的测试人员呢?CemKaner指出:“测试过程的一个重

要成果,是更好、更聪明的测试人员。”优秀的测试人员具备高超的技能,而这种技能只能通过持续的学习和实践才能获得。而且在一个合作与分享的环境中,测试人员可以学得更快、练得更好。

 

                                                                                                                                摘自《探索式测试实践之路》---史亮 高翔 著

 

源码时代软测干货分享|今天来说说测试转向敏捷路线

尽管跳上敏捷的潮流对企业来说很有诱惑力,但这并不总是那么容易,向敏捷的转变很可能伴随着的是测试方面的一系列挑战。为了使敏捷能够快速交付高质量的产品,测试必须比以往更早地开始介入。 今天,... 查看详情

源码时代软测干货分享|带你了解cgi支持模块

该模块定义了许多由Python编写的CGI脚本使用的实用程序。 21.2.1。介绍HTTP服务器调用CGI脚本,通常用于处理通过HTML<FORM>或<ISINDEX>元素提交的用户输入。 通常,CGI脚本存在于服务器的特殊cgi-bin目录中。HTTP服务器... 查看详情

腾讯bugly干货分享深入源码探索reactnative通信机制

...感悟撰写而成,内容均属原创,转载请标明出处。本文从源码角度剖析RNA中Java<>Js的通信机制(基于最新的RNARelease20)。对于传统Java<>Js通信而言,Js调用Java通不外乎Jsbridge、onprompt、log及addjavascrip 查看详情

源码时代前端干货分享|javascript编程优化,超强入门必备技能!

一、按强类型风格定义变量大家要知道js是一种弱类型语言,定义变量的时候不要太随意,大多数初学者定义变量时,只是声明变量而没有赋值,这样就显得太随意了声明变量的时候,一定要指明变量的类型,告诉解析器,你要... 查看详情

源码时代前端干货分享|swoole开启后无法访问问题

首先说一下环境,由于swoole只能在linux环境中使用,开发者通常使用的windows系统,所以我的swoole是安装在Cygwin环境中的。Cygwin可以在windows系统中运行,提供一个类似linux命令行的环境。同时,也虚拟机不同ÿ... 查看详情

源码时代java干货分享|springsecurity快速上手秘籍(代码片段)

前言至今Java能够如此的火爆Spring做出了很大的贡献,它的出现让Java程序的编写更为简单灵活,而Spring如今也形成了自己的生态圈,今天咱们探讨的是Spring旗下的一个款认证工具:SpringSecurity,如今认证框架主流“sh... 查看详情

源码时代前端干货分享|new关键字底层原理-执行过程

构造对象关键字:new众所周知,js是用new来产生对象的,那么今天我们就来说说js里new产生对象的构造原理。//人类构造函数functionPeople()People.prototype.index=1;//在原型上绑定一个index属性,值为1varp1=newPeople();//... 查看详情

源码时代ui干货分享|axure基础教程

主界面介绍知识重点一、页面的切换热区:就是可做交互的区域。动态面板:多种状态,可以反复切换。第一步:鼠标选择热区,鼠标左键拖拽到画布中,调整到合适位置,合适大小第二步:在图... 查看详情

源码时代java干货分享|带你认识zookeeper分布式服务框架

本质它是一个分布式服务框架,是ApacheHadoop的一个子项目提供一种集中式信息存储服务,用于解决分布式应用中的一些数据管理问题简单来说zookeeper=文件系统+监听通知机制。特点数据存在内存中类似文件系统的树... 查看详情

源码时代java干货分享|带你了解原型模式_prototype

原型模式概述在java中创建一个对象通过new是非常繁琐的,需要创建检查权限,做一些数据准备等等,因此也会销毁系统性能,那么想要快快速简单的创建出对象,我们可以通过原型模式实现,以某个对象... 查看详情

源码时代前端干货分享|从零动手封装一个通用的vue按钮组件

我们在使用目前最主流的前端框架vue在开发过程中,组件是一个非常重要的组成部分,可以这么说,所有的vue应用,都是由一个一个的小组件拼装而成的。正是由于vue组件如此重要,所以vue的生态中,也非常多的UI组件库,其中... 查看详情

源码时代java干货分享|手把手教你用maven构建docker镜像

一、原理分析由于我们开发pc上面没有docker,所以没办法直接打包镜像,所以要调用远程主机docker进行。并且远程主机docker默认不支持远程访问,所以需要开启远程。然后我们在项目中以dockermaven插件方式进行打包镜... 查看详情

源码时代java干货分享|手把手教你springboot配置ssl证书(代码片段)

图说明第一步首先去阿里云弄一个免费的SSL证书下载然后放到项目里面的resource路径下这里一定要注意是key-store和key-store-password我在配置时写出了key-password弄了很久没找到原因换成了nginx去配置,最近还是嫌弃服务启动太多改... 查看详情

上下文驱动测试

原则语境驱动的学校的七个基本原则任何实践的价值取决于其背景。在上下文中有良好实践,但没有最佳实践。人们一起工作是任何项目背景中最重要的部分。随着时间的推移项目以往往无法预测的方式展开。该产品是一种解决... 查看详情

上下文驱动测试

原则语境驱动的学校的七个基本原则任何实践的价值取决于其背景。在上下文中有良好实践,但没有最佳实践。人们一起工作是任何项目背景中最重要的部分。随着时间的推移项目以往往无法预测的方式展开。该产品是一种解决... 查看详情

设计模式软件设计七大原则(依赖倒置原则|代码示例)(代码片段)

...简介二、面向实现编程代码示例(反面示例)1、顾客类2、测试类三、依赖倒置原则代码示例(推荐示例|使用接口方法注入IGood实现类)1、顾客类2、商品接口3、冰箱商品4、电视商品5、测试类四、依赖倒置原则代码示例(推荐示例|使... 查看详情

面向对象七大原则。

...一个功能,有可能中止另一个功能,这时就需要新一轮的测试来避免可能出现的问题。简而言之,SRP就是指单个类 查看详情

设计模式软件设计七大原则(单一职责原则|代码示例)(代码片段)

...原则代码示例(反面示例)1、不遵循单一职责原则的类2、测试类三、单一职责原则代码示例(正面示例|类的单一职责)1、用翅膀飞的鸟2、用脚走的鸟3、测试类四、单一职责原则代码示例(接口的单一职责)1、反面示例2、拆分出的接... 查看详情