原副标题:试验的下层方法论
译者 | 天猫云合作开发人员-天猫零售业 冯某
书名镜像:https://my.oschina.net/u/4090830/blog/8575899
写这首诗,是期望把我的许多我指出是十分有用的策尔纳出来,能协助刚做试验没多久的新同僚,或是是试验训练有素的老同僚以共享资源。期望他们调皮的新同僚,预备要在试验应用领域深耕的合作伙伴,能通过我的该文介绍到试验的下层逻辑,也就是他们试验组织工作中可能看不出暗藏纤枝的点,而不而已日常生活亲见的写示例、提 bug、合作开发智能化、做网络平台;虽说门外汉旁观,viller看Auterive。
我指出波季尔不如果正式成为 PRD 的清洁工,高阶试验技师也不应该而已试验工具得合作开发人员;
波季尔,最基本上的试验基本上原理很大要掌控,总之研制代码控制技术也不可或缺;如果这可说缺乏一样,都难以正式成为两个杰出的波季尔;以后有许多波季尔都是不讨厌写标识符,接着做了试验;但在未来或是现在,两个要学标识符的波季尔,极难正式成为两个杰出的波季尔;但只懂标识符,不介绍试验方法论此基础的人(要学得试验预测、示例结构设计、试验思路的人,或是即便介绍许多 ,但前述组织工作中不见得采用的人),很大也不是两个符合要求的波季尔。
上面带我们介绍许多试验的下层方法论,试验的Auterive。
一、杰出波季尔如果具有的核心理念潜能
根据 Testerhome《2021 本年度试验金融行业问卷调查报告》-【杰出波季尔应具有的控制技术 / 能力】预测,
1、“编程 / 脚本 / 智能化、沟通表达、试验基本上原理” 被指出是杰出波季尔的三大核心理念潜能,继续领先其他项;
2、数据库、性能试验、安全试验、大数据算法等控制技术要求,从 2020 年开始大幅增长;
三大核心理念潜能基本上是我们公认的,也是稳定不变的;但新的控制技术要求近几年开始都有了大量需求;从预测数据可以看到,市场对波季尔的要求会随着新控制技术的出现而不断变化;但三大核心理念潜能是波季尔的必修课,变化不会太大,会一直占据核心理念位置。
自从 10 几年前的 QTP 开始,智能化试验就是波季尔追求的目标;直至今日,各种智能化控制技术、框架已经琳琅满目;市场对波季尔的要求也越来越高,波季尔不仅要会写智能化示例,还需要具有合作开发维护智能化框架网络平台的潜能;纯黑盒的波季尔要么已经完成了潜能升级,要么在升级的路上;完全依赖黑盒试验完成组织工作的已经越来越少,如果不会编写智能化示例或不介绍编程语言,估计找组织工作简历都极难通过。
但往往物极必反,波季尔的标识符潜能越来越强,试验此基础潜能却被忽视,试验应用领域的专业潜能逐步被淡化;正如逆水行周,不进则退;三大核心理念潜能如果是齐头并进,不如果顾此失彼。
这些年参与了部门许多的招聘面试,我的感受就是许多波季尔虽然组织工作多年,但对试验示例的结构设计方法、思路等掌控并不好;至少有 60% 的人在示例结构设计中不会用什么示例结构设计方法,也不会思考怎么进行试验预测和结构设计,他们大部分而已功能试验的执行者,试验结构设计方面思考很少,试验计划更是很少有人写,试验示例也而已 PRD 的拆分;总之,波季尔一不小心就会正式成为 PRD 的清洁工。
作为两个试验老人,还是期望试验金融行业能健康发展,在新技能提升的情况下,试验的专业性也能与时俱进,毕竟质量保障是波季尔的根本。
二、黑盒试验的下层方法论
什么是黑盒试验?
它是把程序看作两个黑盒子,在不考虑程序内部结构的情况下,检查程序功能是否按照 PRD 的规定正常采用,程序是否能适当地接收输入数据,产生正确的输出。
这,其实就是黑盒试验的定义,也是黑盒试验的下层方法论;一般人不会重视定义,但往往就是定义会告诉你真理。
组织工作中有许多人在习惯了一种类型的系统试验,接着换两个新的业务类型,忽然就不知如何下手了;也许是新的总要有两个适应的时间;其实万变不离其宗,只要掌控了黑盒试验的下层方法论,就能让你很快上手不再需要适应调整;
他们大部分做的都是黑盒试验,所以无论什么类型的系统,他们的试验方案都是 “检查程序功能是否按照 PRD 的规定正常采用,程序是否能适当地接收输入数据,产生正确的输出。”。
他们的试验依据是 PRD,首先必须对 PRD 了如执掌,接着预测他的输入有哪些,输出有哪些;这些都覆盖到了,你基本上就可以做到 80 分了,也就是你拿下这个项目已不成问题。
最后,我还是想再啰嗦强调一下,就怕我讲的我们还是没有看懂,因为上面讲的我们都懂,第一天介绍试验,就知道什么时候黑盒试验,什么输入输出了;但是往往真理就藏在平凡之间,记住他的定义!!!
当你遇到项目不知如何下手试验时,把定义拿出来认真读三遍,很大会找到答案!!!
强调:前述当中纯黑盒的其实并不多,除了介绍输入、输出,中间的处理方法论也很大要清楚,这样对试验更有协助;另外更重要的就是:必须熟读 PRD,必须对 PRD 里的内容预测透彻,不放过任何一段文字,两个词。其实 PRD 里和结构设计文档里也会有许多的漏洞等你挖掘。
三、黑盒试验下层方法论详解:【输入输出试验模型】
【输入】:这里的输入,并不是简单的界面输入框才算是输入;任何只要能触发系统运行的都是输入。按照标识符架构分层,输入也可以做到如下分类:
1、界面操作的输入:
正向操作:
1)单一操作:
・正常的操作:输入框、按钮、单选复选框、按钮、下拉框等的规定操作异常的操作:输入框的异常值、超长输入等、按钮的多次点击、快速连续点击(很容易就会发现数据重复提交,或是系统反应缓慢等各种问题,说不定系统就此而奔溃)
2)复杂操作:
・组合操作:一般系统的功能都是各种操作的组合;另外一种跟业务场景相关,也就是各种业务场景同时组合进行操作。
・并行操作:多人对同一功能点的并发操作;或者多人对同两个数据进行的操作,比如两个人同时对一条单价进行修改、删除等操作。
逆向操作:
3)逆向操作:
・回退操作:通过浏览器或 APP 进行的回退操作取消操作:正常操作突然取消,例如用户填写许多表格内容,突然操作了取消,是否需要保存或提示呢?删除操作:通过系统提供的功能对数据进行删除
上面的输入是最容易被忽略的:
2、服务层的输入:
・接口服务:对外提供的接口,对于系统来说也是很常见的一种输入,这种输入也是最容易出问题的;
・MQ 消息:也是天猫最常见的一种输入形式,MQ 里也可能会包含文件地址等,这种输入就更加灵活了。
强调:
・对于接口上游的输入,无论何种形式,都要预测上游数据的每两个字段,介绍上游各种输入的可能。
• 有些字段还必须从业务【源头】介绍这个字段的含义,可能的枚举值,可能的结果等;
・另外由于历史原因,源头的数据就可能存在各种想像不到的数据;
・对于输入的预测十分重要,这时候你就可以采用【等价类】方法进行预测。
3、数据层的输入:
・数据的变化:有许多后台处理的任务就是监控是否有新数据的插入或删除等数据字段的变化:后台处理任务监控数据状态的变化,或组合字段的变化等缓存数据的变化:除了数据库的变化,有的是缓存数据的变化时间的变化:定时任务除了数据是输入,时间也是他的输入。
【输出】:输出分为可见输出和不可见输出
看的见的输出:就是他们常见的系统操作反馈,用户能直接看到的变化;比如弹框、提示、跳转、数据的新增、修改、删除后的变化,图片、视频等操作后的变化等等。
看不见的输出:看不见的输出是最容易忽略也是最容易出问题的;【看不见的输出】包括:数据库的变化、缓存的变化、系统文件的变化、发送给下游接口的数据等
【看的见的输出】虽然能帮他们验证基本上 90% 以上的功能,通过界面展示的数据也能验证他们新增或修改的数据,是否新增成功了或正确的被修改了;但是他们看到的而已一部分;还有许多字段是没有被展示的,有的可能而已给下游或其他系统采用的,也有可能是留给今后采用的;这些不可见的部分,经常就会引起系统的异常,也是暗藏在系统中最大的坑;
所以试验,除了站在用户的角度去试验系统,还要站在结构设计者的角度去试验,更如果站在整个产品的角度去思考。
四、试验预测与结构设计的下层方法论
说到试验分析与结构设计,我指出这个是波季尔最核心理念的潜能;上面讲到的黑盒试验、输入输出模型,而已针对功能试验的方法,虽然一般的系统试验中功能试验占到 80%-90% 左右,但并不是全部。而且也而已试验中的两个阶段一个类型,要想做好试验,试验预测和结构设计是不可或缺的。
我们可以思考两个问题:拿到两个项目,你如何来试验?如何保障质量?
面试中许多人给我的答案是:预测需求,编写示例,接着执行试验,发调查报告;这个而已试验的流程,而已告诉了他们试验的先后顺序,但并不能指导两个波季尔如何去试验,如何去做试验预测,更难以保障系统的质量。
拿到两个项目,你如何来试验?
可以借用 5W2H 方法来预测,其实作为试验架构师,不需要 5W 也不需要 3W,2W+1H 就够了!
因为这 2W+1H 是最重要的,也是最容易被经验代替接着就忽略的;日常生活的试验组织工作由于产品的形态及系统的架构基本上固定,所以试验方案思路也基本上固定,这样就导致拿到类似的项目就不再有思考,基本上很快就按照经验开始干了;一旦遇到不同类型的系统,或是遇到新的业务就不知如何下手,这时候2W1H 预测法就可以协助他们解决这个问题。
试验架构师只需要思考三个问题(2W+1H)就够了:
1、Why?为什么做这个项目?项目的背景是什么?—— 只有知道为什么,才知道用户想要什么。
2、What?这个项目他们需要测什么?他们的试验范围有哪些?—— 只有范围明确,试验才不会遗漏。
3、How?这个项目他们怎么测?他们如果采用哪些试验思路、试验方法?—— 这里告诉他们试验应当有思路有方法
试验负责人(也可能是试验架构师)还需确定的两个问题:
4、When? 项目期望的完成时间?
5、Who? 可以调用的资源有哪些?
项目经理需要考虑的另外两个问题:(试验负责人也需要思考的 2 个问题)
6、Where?是否需要集中封闭,是否需要研制试验坐到一起?
波季尔还可以思考需要在什么环境下试验?试验环境?预发环境?线上环境?windows 环境?Linux 环境?ios 环境?Android?什么浏览器?什么版本等等
7、How Much?这个项目成本是多少?需要多少人日?需要多少服务器资源?
试验预测和结构设计的下层方法论就是如何回答好 2W1H 这三个问题;Why 和 What 可以指导他们进行试验预测,介绍项目的【背景】,确认试验的【范围】;How 可以指导他们去进行试验结构设计,根据项目背景及试验范围确定试验的【思路】。
不过目前讲的还是方法论,具体的操作步骤还没有讲;由于这一部分内容比较多,可以通过一首诗具体来讲;我们也可以自己去介绍学习一下,就是 HTSM 启发式试验思路模型,这个模型正好与 2W+1H 是相对应的。
五、波季尔的内功修炼
作为波季尔,“沟通表达等软技能” 被指出是杰出波季尔的三大核心理念潜能一,根据上面的统计数据,90% 以上的人都是认可的。上面把我以后的许多总结分享一下:
1、主动沟通
在电商应用领域,特点就是快速和变化;有些需求或项目,经常要求快速上线,由于时间短,PRD 里有些方法论就可能会存在漏洞或是根本没有考虑到,面对这样的情况,他们试验该怎么办呢?这时就需要沟通,与产品随时沟通需求,与合作开发随时沟通结构设计,与其他系统随时沟通联调,没有沟通,项目里的坑很容易就会被遗漏。沟通还必需得是主动出击,找产品、找研制、找其他条线的试验,把自己当成老板,这个项目的质量基本上就有保障了;把自己当成老板的员工,很大是最让老板放心的员工。
2、要有自己的标准
系统试验最基本上的依据就是需求规格说明书;作为波季尔,他们是最后一道保障;试验必须有自己的预测,不能轻易就跟着研制的思路走,因为他告诉你的已经是经过他们思考加工过的,与原始需求可能已经存在了偏差;这也正是试验的价值所在。即便他们说的 99% 都是对的,但是也只能作为他们预测的两个材料;他们必须自己通过需求去预测。
3、对一切都要有怀疑的态度
需求是试验的依据,但是依据也有错的时候;所以对 PRD 也要有怀疑的态度。试验就是要怀疑一切;每两个流程每两个细节;我看需求的时候第一遍基本上默认他是对的,等对整体有了很大的理解,我就开始怀疑,流程是否完整?是否存在漏洞?模块功能是否能满足用户的要求?非正常操作是否会出现问题?用户是否会用?这个功能是否真的为客户解决了问题?等等,这些问题可以通过他们的许多质量标准、试验思路以及试验经验去怀疑,去思考。总之,试验每两个功能都要 “三思”。
4、站在公司和用户的角度思考
公司越大,部门越多,系统就会越复杂;相互依赖越多,出问题的几率也会越大;因为边界多了,沟通成本也就高了;需要沟通的点多了,只要有些细节没有沟通到位,或是都没有考虑到,或是都指出是对方负责,那坑就出现了;总之这样的坑大部分会在联调试验阶段发现,但对于试验进度影响十分大,经常会造成反工、延期等风险;
要想这些坑能在试验阶段发现,这时候就需要有两个主试验了;但我觉得主试验不如果是两个人,所有波季尔都如果是 “主试验”;作为波季尔,软件质量的最后把关者,不能只看到自己负责的这一块,不能局限于自己的部门、团队,只要对整个系统有疑问,他们都有责任提出来,去找人解决。试验不能只看局部,要看全局;要站在公司的位置和用户的角度去思考,去试验。
上面主要是总结了我得许多经验,试验中的许多道,有不足之处或不够全面的也期望我们多多补充;后续还会继续分享我指出很重要的 HTSM 模型,以及我指出十分重要的等价类划分,场景试验、基因试验、探索式试验的许多好的方法等。总之,我想把我的许多有用的经验都分享出来以共享资源。
END
卡巴斯基实锤拼多多APP恶意标识符
这里有最新开源资讯、软件更新、控制技术干货等内容