探索式测试的18问
一、探索式测试的范围
1.探索式测试是不是就是一种黑盒的测试?显然探索式测试不区分黑盒还是白盒,可以用在任何一个测试里面,但是它需要我们更加理解产品,去产品内部理解产品的设计细节,才能发现一些更深层次的、隐蔽的问题。
2.探索式测试能不能用于硬件上?理论上来说,纯硬件是很难做探索式测试的,脚本测试都很难,硬件一般我们关注的是行数验证,硬件的老化测试,但是硬件上的软件是可以用探索式测试的。对纯硬件进行某一领域的探索式测试,如果造成了损坏,结果往往是不可逆的。
3.探索式测试怎么融入用户体验测试?探索式测试是一种 Test Style,不会局限于哪一种测试,把用户体验测试融入探索式测试就可以。
4.ET(探索式测试)主导和ST(基于测试用例的测试方法)辅助的探索式测试方法适合什么类型的项目?我们牢牢抓住探索式测试更灵活、适应性强、不需要编制繁杂的测试用例、鼓励测试人员探索出难以发现的问题等特点,所以就能得出ET主导和ST辅助的探索式测试方法适用于:
-
采用MVP模式的敏捷项目。
-
在Bug优先级定义中,出现的Bug不会是很高优先级且项目本身是中等类型的项目(因为特别高优先级的Bug往往是需要记录在规范的测试用例中以便审查的)。
-
离核心模块比较边缘的项目。
二、探索式测试的价值
5.探索式测试能够提供给团队什么帮助?探索式测试最大的特点就是机动性,通过探索式测试得出的结果,分析探索出来的缺陷密度,可以帮助调整团队的测试计划、测试策略以及测试设计,并且探索式测试可以分配到整个软件生命周期中。
6.做探索式测试的价值高吗,目前很多公司没有推行?有很多时候,在做了探索式测试之后,才会得到一些额外的测试用例,想要得到价值高的时候,那么它的价值就是很高的。为什么公司没有实行,因为有些公司对软件质量的要求不高,当一个软件的质量关乎重大利益的时候,对质量要求也很高的时候,那么探索式测试就很有价值,公司自然也会推行。
7.怎么在合理的时间内,进行有效的探索性测试,并且度量探索性测试的结果是合理并且是足够的?不管是敏捷模型还是瀑布模型,会有测试轮次的概念,第一轮会跑全链路的 Case,第二轮做 Bug 验证,第三轮会做全链路 Case 的回归;第一轮测试往往会用交叉测试的思路,这就是探索式测试的思路,在计划内、时间内去做探索性测试,做到什么样的程度是可控的;还有一个判断标准是,有没有在一个独立的 Session 内,到底有没有关注到很多探索式测试的执行,你关注到在探索式测试执行中后,你在这个 Session 内测了很多东西,即使没有发现 Bug 也没有关系,因为你知道自己测了什么,哪部分是没有问题的,然后根据自己的计划想停止就停止,不停止也可以,所以进行到哪种程度是和我们的测试模式是有关系的。
度量探索式测试做得好还是不好,Bug 和问题的产出可以来度量,但很难证明探索式测试的价值,从 Bug 产出的角度来看,不同实践方式做的探索式测试产出的 Bug 数量是不一样的,例如用ET主导、ST主导、Free Style的 ET,还是结对测试 BugBash 得出的 Bug 产出是不一样的;一个 Session 做完了,综合起来看 Bug 的数量、Issue 的数量,Test Note,Test Data 可以反映出一个价值。
三、探索式测试的前提条件
8.探索式测试对测试工程师的能力有什么特别的要求?探索式测试也要分阶段,这里的阶段包括对软件系统业务流以及数据流熟悉程度的不同阶段,还有测试设计能力的不同阶段,所以不要想到自己要做多么完美,把自己当前能力能做的探索式测试做好就行,每个阶段都可以做探索式测试。
9.探索式测试方法论比较依赖经验,是不是不适合新人?除了ET主导和ST辅助不适合新人以外,其它的方式新人都可以尝试学习,只要不把自己当新人,这些方法都可以去实践。
四、探索式测试怎么做
10.项目安排紧张,怎么保障足够的探索式测试?瀑布模型内做探索性测试,60-120分钟的时间都抽不出来,那就没办法做了,肯定是要抽一定时间来做探索式测试的,一个功能至少要进行两到三次探索式测试,还要进行功能与功能间结合式的探索;敏捷模式基本在敏捷开发中每个 Stage 都会做,在一张卡的各个阶段也会进行实施。
11.如何在大量回归测试过程中,进行探索式测试?
-
第一是先用交叉方式。
-
第二用 PI Testing(突变测试),可以缩小测试的范围,精确的测试该测的地方。
-
第三实在没有时间,那就用 Bug Bash 借助更多人的力量,不仅能 cover回归测试的范围,还可以找到一些测试范围以外的场景 case。
五、探索式测试的区别和优势
12.探索式测试和传统测试的区别是什么?依书中所言,从结果来看的话,传统测试流程和方法每小时发现 Bug 的数大概在0.2-0.3个,ET辅助和ST主导每小时大概在1.0左右,ST辅助和ET主导大概在1.5左右,Feel Style大概3个 Bug,其次探索式测试为了看系统是否能做超出既定期望的事,以及做了超出期望的事之后系统所做出的反应。
13.探索式测试和随机测试的区别以及探索式测试有什么优势?adhoc测试可以理解为错误猜测方法的升级版,随机测试没有那么聚焦的目的,探索式测试有明确的聚焦,发现 Bug 核心的影响力要比 adhoc 更大,探索式测试是抱着发现 Bug 的目的去做的,更重视UT。
14.探索式测试和混沌工程之间有什么联系和差异?没有关联,思路不同;混沌工程的核心就是故障注入,故障注入分系统层面、应用层面、中间键层面,断网,超时等一些破坏性测试,有日志级别的和代码级别的故障注入;做故障注入已经是知道这一块会出现故障,已经知道这里会设计怎样场景,探索式测试是不清楚情况,不断去探索,才会知道哪里可能有问题。
六、探索式测试的内容延伸
15.探索式测试跟我们的测试覆盖率是不是矛盾的?根本不矛盾,算测试覆盖率的时候我们要有明确的分母才能算出,如果探索式测试是保证每个功能都测试到了,那么我们的测试覆盖率就是100%;如果探索式测试的分母是整个测试用例集,是无法统计出测试覆盖率的。
16.活文档会花费 QA 较多时间来记录和管理吗?这个“活”字看大家怎么去理解,开发们的单元测试和 swagger 文档就是典型的例子,对于 QA 来说活文档是自动化测试代码的更改,要改其实和修改传统的测试用例一样的,花时间维护活文档带来的好处是会使活文档与产品代码保持一致性,并且及时提醒哪些文档错了需要修改,所以花时间去管理是很有意义的。
17.如何提高测试设计能力?首先要了解测试的基本理论,还要加深了解被测对象,然后去熟悉相关的测试类型所需要的测试知识和工具。
七、探索式测试的发展
18.探索式测试会越来越重要吗,它以后发展的趋势是怎么样的?国外是一种稳中求胜的趋势,在 Facebook 上都经常能看到很多探索式测试一些新奇的讨论;国内逐渐被自动化测试的声浪盖过去了,这个趋势跟大环境有关,其实有很多公司虽然说在做敏捷,其实并不是真正的敏捷,探索式测试做得很差,甚至不知道如何实施探索式测试,真正意义上在做敏捷的公司和项目,就会觉得探索式测试是真的很重要的,得到的回报往往在敏捷项目上反映得最明显(感觉作者也很认可敏捷)。
在我把这些问题总结出来然后去和前辈们交流的时候,有一些感悟,其实测试的本质就是对软件系统各个变量的单变量验证以及各种变量的组合验证,假设整个软件系统所有变量的组合结果为如图所示的空间几何体,已知的变量组合结果空间为S(可理解为我们期望软件系统能做和不能做的事,往往是故事卡上写的 AC),那么未知的变量空间区域为 S’(可理解为软件系统能不能做更多期望之外的事,以及做了更多不能做的事的反应),那么 S’就是我们要探索的一个领域。
在我们平常测试过程中,页面上的一个按钮、一个选择框其实就是一个变量,我们会去验证按钮和选择框各自的功能,也会去验证选择框加上按钮一起的组合功能,然后在这些变量上我们可能会去产生探索其他场景的想法;API的各个参数验证也是相同的道理。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
入侵和攻击模拟BAS是DevOps安全的“测试机”
DevOps(“开发”和“运营”的组合)是实践和工具的组合,相对传统软件开发流程,具有更快地交付应用程序和服务的能力,正因如此,其可以使组织能够更好地为客户服务。 简单来说,DevOps 就是要消除传统上孤立的开发和运营团队之间的障碍。在 DevOps 模型下,开发和运营团队在整个软件应用程序生命周期中协同工作,从开发和测试到部署再到运营,缩短了业务上线的时间,但同时也增加了安全威胁的可能性。不得不思考如何在DevOps中引入安全性,DevOps安全通常被称为DevSecOps,将安全属性融入DevOps中,确定从最初的规划到测试、上线运营阶段的安全性。 如今,DevSecOps越来越多的被企业使用,是因为包括操作系统、应用程序等在内的软件通常包含可被攻击者利用的漏洞,而且由于软件应用程序不断的更新迭代,总是有可能会出现新的安全威胁。而黑客往往只需要一个漏洞,便可以撬开防守者严防死守的大门,防守者却全然不知,殊不知自己已经裸奔在了安全威胁中。要找到这些安全威胁,需要进行定期测试。一般情况下会有以下几种方法: 漏洞扫描。使用漏洞扫描程序来识别基础架构组件中的各种漏洞,可以检查出网络中过时...
- 下一篇
Docker,containerd,CRI,CRI-O,OCI,runc 分不清?看这一篇就够了
自 Docker 开启了使用容器的爆发式增长,有越来越多的工具和标准来帮助管理和使用这项容器化技术,与此同时也造成了有很多术语让人感到困惑。 比如 Docker, containerd, CRI, CRI-O, OCI, runc,本篇将介绍这些你听过但并不了解的术语,并解释容器生态系统是如何在一起工作的。 容器生态系统 容器生态系统是由许多令人兴奋的技术、大量的专业术语和大公司相互争斗组成的。 幸运的是,这些公司偶尔会在休战中走到一起合作,商定一些标准,这些标准有助于使这个生态系统在不同的平台和操作系统之间更具互操作性,并减少对单一公司或项目的依赖。 这张图显示了 Docker、Kubernetes、CRI、OCI、containerd 和 runc 在这个生态系统中是如何结合的。 其工作流程简单来说是这样的: Docker,Kubernetes 等工具来运行一个容器时会调用容器运行时(CRI)比如 containerd,CRI-O 通过容器运行时来完成容器的创建、运行、销毁等实际工作 Docker 使用的是 containerd 作为其运行时;Kubernetes 支持 conta...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2整合Redis,开启缓存,提高访问速度
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程