前言
在互联网产品快节奏的迭代情况下,传统的测试方法正在逐步被颠覆,为了能适应当前的产品迭代速度和质量要求,一些新的测试方法和理念正在被业界推广和使用。搜狗测试的小伙伴们目前就在学习和研究《探索式测试》中的一些方法,今天分享下探索式测试中的一个新方法:“测一送一”测试法。。
在互联网产品快节奏的迭代情况下,传统的测试方法正在逐步被颠覆,为了能适应当前的产品迭代速度和质量要求,一些新的测试方法和理念正在被业界推广和使用。搜狗测试的小伙伴们目前就在学习和研究《探索式测试》中的一些方法,今天分享下探索式测试中的一个新方法:“测一送一”测试法。。
方法简介
在商场常见的一种促销活动叫"买一送一",探索式测试也借鉴这种思想,测试同时运行同一应用程序多个拷贝的情况。
以上是探索式测试原文中所提的方法,内容介绍很短,不太容易理解。为了便于这种方法的理解,我们通过一些实例来进行方法的总结提炼。
在商场常见的一种促销活动叫"买一送一",探索式测试也借鉴这种思想,测试同时运行同一应用程序多个拷贝的情况。
以上是探索式测试原文中所提的方法,内容介绍很短,不太容易理解。为了便于这种方法的理解,我们通过一些实例来进行方法的总结提炼。
实例
搜狗PC浏览器某版本时曾有这么一个Bug:
Bug描述:多次启动浏览器时,每次启动都会打开关闭前的页面
操作步骤:
1.访问http://www.baidu.com,http://www.sohu.com,http://163.com
2.直接关闭浏览器。
3.启动浏览器,此时浏览器会打开关闭前的三个页面
4.快速再次双击浏览器图标
预期结果:
启动一个新的浏览器进程,不再重复打开关闭前页面,而是打开空白页。
实际结果:
启动一个新的浏览器进程,并且仍然打开关闭前的三个页面。
Bug产生机理:
1.浏览器在关闭的时候,会将已经打开的页面URL保存在注册表HKEY_CURRENT_USERSoftwareSogouExplorerTabSnapshotURL下。
2.当浏览器关闭后重新启动时,会读取这个注册表下的URL地址以作为上次关闭时的页面, 提示用户打开。
3.当按照上述Bug步骤操作时,在步骤3执行之后,浏览器还没有来得及删除注册表中的URL地址,再次启动会错误地认为上次关闭时的页面没有被打开,所以会重复打开。
以上Bug实例与测一送一方法的介绍非常类似,我们将此测试场景进行提炼,得到几个关键词:数据相关的读写操作、多次重复操作。
展开全文
搜狗PC浏览器某版本时曾有这么一个Bug:
Bug描述:多次启动浏览器时,每次启动都会打开关闭前的页面
操作步骤:
1.访问http://www.baidu.com,http://www.sohu.com,http://163.com
2.直接关闭浏览器。
3.启动浏览器,此时浏览器会打开关闭前的三个页面
4.快速再次双击浏览器图标
预期结果:
启动一个新的浏览器进程,不再重复打开关闭前页面,而是打开空白页。
实际结果:
启动一个新的浏览器进程,并且仍然打开关闭前的三个页面。
Bug产生机理:
1.浏览器在关闭的时候,会将已经打开的页面URL保存在注册表HKEY_CURRENT_USERSoftwareSogouExplorerTabSnapshotURL下。
2.当浏览器关闭后重新启动时,会读取这个注册表下的URL地址以作为上次关闭时的页面, 提示用户打开。
3.当按照上述Bug步骤操作时,在步骤3执行之后,浏览器还没有来得及删除注册表中的URL地址,再次启动会错误地认为上次关闭时的页面没有被打开,所以会重复打开。
以上Bug实例与测一送一方法的介绍非常类似,我们将此测试场景进行提炼,得到几个关键词:数据相关的读写操作、多次重复操作。
实战演练
带着以上的思路,我们对搜狗手机输入法的快速分享功能进行了实战演练。
被测功能简介:
快速分享是这样一个功能,当在任意编辑框使用输入法打字上屏后,点击搜狗输入法工具栏的放大镜图标进行搜索,输入法键盘区域会显示对应的搜索结果卡片信息(如图)。
点击之后会显示如下卡片
被测版本:搜狗输入法最新版本8.13(Android平台)
测试时长:15分钟
测试方法:按照测一送一方法中的核心理念:运行多个实例,或者运行同一功能多次,或者运行类似功能多次,构造数据读写可能冲突的场景。
测试结果:发现5个Bug(负责此功能的测试同学,为此紧张了好一阵)
其中3个Bug是通过测一送一方法的理念发现的,它们分别是这样:
Bug1:在已经显示快速分享卡片的情况下,快速多次进行不同tab的切换,当手动切换操作停止之后,输入法仍然会出现卡片类别在切换的情况
Bug2:在编辑框输入词点击放大镜进行搜索之后,立即点击返回,反复进行搜索和返回操作,会出现下方内容不能显示的问题
Bug3:在快速分享显示图片栏目时,同时点击卡片中的图片和下方其他类别(例如生活),预期结果是切换到对应的Tab,实际结果会出现内容切换到了对应的类别,但同时弹出了前一类别图片点击后对应的分享弹层。
带着以上的思路,我们对搜狗手机输入法的快速分享功能进行了实战演练。
被测功能简介:
快速分享是这样一个功能,当在任意编辑框使用输入法打字上屏后,点击搜狗输入法工具栏的放大镜图标进行搜索,输入法键盘区域会显示对应的搜索结果卡片信息(如图)。
点击之后会显示如下卡片
被测版本:搜狗输入法最新版本8.13(Android平台)
测试时长:15分钟
测试方法:按照测一送一方法中的核心理念:运行多个实例,或者运行同一功能多次,或者运行类似功能多次,构造数据读写可能冲突的场景。
测试结果:发现5个Bug(负责此功能的测试同学,为此紧张了好一阵)
其中3个Bug是通过测一送一方法的理念发现的,它们分别是这样:
Bug1:在已经显示快速分享卡片的情况下,快速多次进行不同tab的切换,当手动切换操作停止之后,输入法仍然会出现卡片类别在切换的情况
Bug2:在编辑框输入词点击放大镜进行搜索之后,立即点击返回,反复进行搜索和返回操作,会出现下方内容不能显示的问题
Bug3:在快速分享显示图片栏目时,同时点击卡片中的图片和下方其他类别(例如生活),预期结果是切换到对应的Tab,实际结果会出现内容切换到了对应的类别,但同时弹出了前一类别图片点击后对应的分享弹层。
方法的提炼延伸
通过对上述实战演练结果,我们将探索式测试"测一送一"方法进行了提炼和延伸,得到如下方法规则:
了解被测功能中数据存储和传输方式。例如:
有无注册表操作。
有无文件操作。例如:下载文件、保存文件、删除文件、更新文件等。
有无数据库操作。例如:存储数据、查询数据、删除数据等。
有无网络请求操作。例如:发送请求查询数据等。
以上四类操作都是有时延的,因此在有时延的情况下,数据的互斥冲突容易构造。
反推以上数据读写相关所涉及的各种功能。例如:
在浏览器的示例中:关闭浏览器会写注册表,启动浏览器会读注册表。
在输入法的示例中:切换Tab、点击放大镜都会触发网络请求。
进行重复、快速地相关功能操作,构造数据互斥冲突的场景。例如:
启动多个应用进程。
同一功能执行多次。
反复执行类似相关的功能,混合起来执行。
多个客户端进行功能操作,触发服务端的数据的冲突。
通过对上述实战演练结果,我们将探索式测试"测一送一"方法进行了提炼和延伸,得到如下方法规则:
了解被测功能中数据存储和传输方式。例如:
有无注册表操作。
有无文件操作。例如:下载文件、保存文件、删除文件、更新文件等。
有无数据库操作。例如:存储数据、查询数据、删除数据等。
有无网络请求操作。例如:发送请求查询数据等。
以上四类操作都是有时延的,因此在有时延的情况下,数据的互斥冲突容易构造。
反推以上数据读写相关所涉及的各种功能。例如:
在浏览器的示例中:关闭浏览器会写注册表,启动浏览器会读注册表。
在输入法的示例中:切换Tab、点击放大镜都会触发网络请求。
进行重复、快速地相关功能操作,构造数据互斥冲突的场景。例如:
启动多个应用进程。
同一功能执行多次。
反复执行类似相关的功能,混合起来执行。
多个客户端进行功能操作,触发服务端的数据的冲突。
除了在测试技术和工具方面进行改进之外,我们希望在测试设计也有新的突破,最终能够帮助所有的测试同学"脱离苦海",让测试变得更高效、更有效。
目前在探索式测试的学习方面,还有许多不足之处,欢迎各位粉丝指出交流;同时也欢迎在对此方法有实际成熟经验的同学进行交流学习。
除了在测试技术和工具方面进行改进之外,我们希望在测试设计也有新的突破,最终能够帮助所有的测试同学"脱离苦海",让测试变得更高效、更有效。
目前在探索式测试的学习方面,还有许多不足之处,欢迎各位粉丝指出交流;同时也欢迎在对此方法有实际成熟经验的同学进行交流学习。