探索性测试笔记
什么是探索性测试
随着软件测试的发展,手工测试越来越倾向于精心策划。现代软件项目是庞大的人员成本是有限的,如何保证在有限的时间内做最正确的事,需要手工测试在开展之前,有明确的战略和方向,但又必须预留一定的发挥空间让每个人的大脑可以充分运转起来,在测试的过程中随机应变。我们把这种测试方式称作探索性测试:它鼓励测试人员一边测试、一边计划、他们使用在测试中收集到的信息,影响自己进行测试的实际方式。
理解探索性测试有两个前提:第一,测试之前一定会有一个全局的方针战略,即整体的测试计划,它可以避免走错大方向,该测的部分没有覆盖到,计划之外的部分却投入了大量时间。第二,测试一旦开始,没有固定的思路,测试人员不受任何先入为主的条条框框约束,根据测试途中获取的信息,指导各自走不同的路径,最终目的就是发现潜藏的缺陷。
探索性测试的种类
书中用了一个最恰当的比如来描述探索性测试的方法论,即把测试比做一场旅程。测试的对象就是旅游的目的地(比如说像伦敦这样一座古老的城市),软件的缺陷就比作是在这座城市里所有有趣的角落。
【引用】我们在旅程开始之前,首先会做一些全局的计划,比如把一座城市划分为商业区、旅游景点、娱乐区、旅馆住宿区、历史区还有治安不太好的旧城区,这就像软件产品里的各个模块一样,有主打卖点的核心功能、也有辅助功能和历史遗留代码等(例如商业区就代表了真正产生经济效益的实际业务完成区域)。当我们设计路线的时候,通常我们会拿着一份城市的地图来做规划,同样的道理我们也可以拿着一份产品的说明书来设计探索性测试的路线。
实践中的探索性测试方法
· 指南测试法:核心功能为导向
· 卖点测试法:客户关心为导向
· 地标测试法:关键点之间的不同组合
· 极限测试法:向软件提出难以回答的问题,比如最大可以发挥到什么程度,承受多少用户,承载多少数据。那个特性或功能会把软件逼到极限运作,哪些输入和数据会消耗软件最多的计算能力?哪些输入可能绕过它的错误检测?
· 快递测试法:后台数据为导向。
· 深夜测试法:城市灯火阑珊会在午夜过后逐渐安静下来,商场店铺纷纷打烊。但是软件不应该停止工作,软件测试人员有时应该刻意的关注在冷门时间段软件所做的附属工作,比如数据备份归档、维护监控任务的运行等等。
· 博物馆测试法:这是针对软件的遗留代码,保留了些许年代的一些功能,找出它们来验证是否有出现失效。当初开发它们的时候,甚至可能缺乏文档,但这并不意味着它们应该被忽略。
· 深巷测试法:在每个城市,都有些地方并不吸引游客意味着不吸引人群,但作为测试人员来说,反而是这种最不可能被用到或者最不吸引用户的特性,容易潜藏着难以发现的Bug。
· 通宵测试法:繁华的都市总会有通宵热闹的地方,比如夜总会KTV之类的,它们从不中断。那么应用程序是否也能坚持到最后呢?当它面临持续不断的调用、输入、重读重写之类的操作,如果运行时间足够长,就很可能会出问题,内存会需要回收、数据需要清空,永远不要关闭它,保持不间断的运行。(更多的时候会采用自动化)
· 超模测试法:页面展示为导向。
· 取消测试法:此方法的思想是启动了立即停止,特别是一些运行流程比较耗时的功能如备份还原或者搜索,在启动之后,立即取消。发散一点还可以变成,启动一个耗时操作,不停止立即启动另外一个耗时操作,以此来检测应用程序的自我清除能力。
· 懒汉测试法:选择尽可能少的输入,能不输入尽量不输入,能不修改尽量不修改,观察应用程序是否能响应得出正确结果。
· 反叛测试法
· 强迫症测试法
全局探索式测试&混合探索式测试
· 待续
一些博客摘录
重点:经营成功的测试职业生涯
· 每一个好的缺陷背后,都可能藏着一个更好的缺陷,在你确实了解缺陷的影响程度和破坏力之前永远不要停止探索。
· 测试人员的绩效不是通过他们找到了多少Bug来评估的,而是他们究竟提高了多少开发人员的工作效率和工作质量,从而反应在产品的质量上。
· 自动化测试在回归测试盒应用程序接口测试方面最有优势,而手工测试在验收测试盒用户界面测试上效果更佳。手工测试因为由人来做,可以执行非常复杂的业务逻辑,它虽然速度更慢但并不拖沓。自动化测试,擅长低级别的细节如不正确的返回值、错误代码、内存使用情况等,快速但阻力也巨大。
· 测试人员当然需要读写代码,而且最好的选择是直接从产品的错误处理代码入手,这样能一眼发现何种输入数据、输入顺序能把产品逼到极限。
· 待续