随机测试:如何从小白快速进阶为大咖

发表于:2017-10-26 10:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:小梦    来源:51Testing软件测试网采编

  前言
   小编曾经也是一个没有测试经验的小白,且被leader评价为测试发散度、灵敏度不够。但半年后,小编在组内多次随机测试比赛中获得了第一名(发现bug最多),当然组内不乏从事软件测试多年的老员工。现在的你,想和小编一样快速逆袭为大咖吗?下面小编以亲身经历带你快速进阶。
   
  何谓随机测试?
  顾名思义,随机测试是一种脱离执行测试用例的测试方法,存在一定的自由性。同时因为名字,随机测试一直被误解。为了让大家更准确的理解自己,它有了另外一个名字--探索式测试。何谓探索?探索宇宙,一个耳熟能详的名词,人类从古代起一直在不断的通过各种方式了解宇宙,从玉皇大帝到现代的卫星、加加林登录月球、载人航天飞船升天。这一系列的行为都是在探索宇宙奥秘。由此可见,探索是一种有目的为了发现未知事情的一种行为。想要取得好的探索结果,需要一定的技术支撑,否则只能停留在玉皇大帝的幻想中了。
  随机测试之误解分析
  1)随机测试是自由测试,测试没有重点,漫无目的尝试各种情况试图发现软件缺陷
  答:如果准备不充分,没有条理,缺乏方针,没有思想的盲目测试,就会对某些功能重复测试多次,导致测试效率低下,有多个测试人员和测试团队共同测试的时候此情况会更严重 。
  2)随机测试没有文档,所以不需要进行任何准备
  答:孙子兵法中说夫未战而庙算胜者,得算多也;未战而庙算不胜者,得算少也。多算胜,少算不胜,而况于无算乎!古时打仗如此,随机测试亦如此。如果想取得好的随机结果,需要做好充分准备。
  随机测试的准备工作
  1)明确测试范围
  随机测试分为局部测试和全局测试。局部测试是指针对软件的部分功能进行测试。全局测试是指针对软件的所有功能进行测试。测试前明确要测试的功能范围,并对需求内容了然于胸。
  2)了解测试功能的基本信息
  随机测试一般是在软件功能一轮测试结束之后进行,当然也有一些版本迭代快的产品一开始就随机测试。需要了解的信息包括一轮测试覆盖薄弱的部分,开发人员技术高低,与测试功能相关联的功能,功能是新功能还是老功能。
  3)了解功能产生的原因及要达到的效果
  此处属于提升版,通过了解软件产生背景,便于我们理解产品需求,从而感知产品设计上的缺陷。
  如何提高随机测试能力
  A. 发散度
  通过看同事报的bug,分析其发现bug的思路,考虑的角度。通过了解别人提的bug可以了解自己所在项目产品一般会出现哪些方面的bug。
  B. 敏感度
  1)对需求了然于胸,知道需求要达到的目的,开发实现是否符合产品预期。
  2)从用户角度感知产品,是否便于用户操作,流程如否合理。
  C. Bug定位力
  分析典型bug,了解bug产生的原因,以及开发的修改方案,分析修改的方案是否存在缺陷。知道原因后,下次测试遇到同样问题就可以知道bug产生的原因了。
  原bug:在注音输入法测试键盘语音的时候,APP挂入后台,键盘启动语音会失败。开发对此的修改方案是判断语音如果失败,则再次跳转APP启动。
  新bug:APP未挂入后台时,启动键盘语音时会多次跳转到APP进行启动。
  由于了解了原bug的原因,发现新bug后立即定位是修改原bug出现的新bug。
  D. Bug发现延伸力
  了解一个bug原因后,举一反三。思考同样的原因,其他地方是否也存在问题,并进行验证。
  原bug:搜狗输入法快捷符号区在系统闹钟标签页颜色显示有问题。原因是label颜色刷新有问题。
  延伸bug:验证花漾字、按键音等界面同样操作也存在问题。
  随机测试常用方法
  破坏法:场景是破坏活动的绝好开始。对于一些使用测试人员能访问资源的功能。在运行场景的时候,可以进行破坏。
  例:搜狗输入法语音功能有一个自动返回微信和QQ功能,返回功能实现方式是通过模拟iPhone手机左上角的返回前置应用实现,在使用此功能时,如果有消息通知,电话通知等打断时,此功能返回失败。后期开发针对此bug进行了特殊处理,在被消息打断的情况下依然可以正常自动返回。
  极限法:采用的途径是向软件提出很多难以回答的问题。如如何使软件发挥到最大限度?那些输入和数据会耗费软件最多的运算能力?
  例:输入法中有很多文本框限制字数,对于这些文本框需要测试超过限定的字数输入法会有什么表现,以及输入一些特殊字符如emoji的表现。
  取消法:不但充分利用了取消按钮,而且执行了启动和停止功能。
  例:输入法中有一个语音自动返回功能,从QQ或微信跳转到APP语音输入界面,有内容上屏后单击home键或者手机锁屏,还是会自动返回微信或QQ。此问题原因是开发未对取消操作进行处理。
  暴力法:进行一些非常规操作,意在看软件是否会出现崩溃。
  例:小编在最近测试注音输入法时,一只手的5个手指全在键盘上,随机打字上屏等操作。通过测方法,发现了输入法代码中多个崩溃问题。
  逆向思维法:通过相反的思维方式测试软件,验证软件针对逆向行为是否进行了特殊处理。
  例:小编在一次测试输入法大白狗功能时,大白狗开关开启在键盘上打字正常。但是将开关关闭后,大白狗数据没有记录,上传也正常。但是在键盘上连续打字几分钟后,键盘开始卡顿出现各种问题。后期开发排查原因时发现大白狗线程为了防止多线程访问造成问题,在大白狗数据写入内存时会锁线程,记录完成后解锁。但是大白狗开关关闭后,开发未对此情况进行解锁处理,导致线程一直被锁,出现其他线程访问时一直访问不了。
  随机测试之收益
  1)可以发现正常思路不容易发现的bug
  2)可以发现隐藏路径比较深的bug
  3)可以发现新功能与老功能交叉位置的隐患
  4)通过已有bug扩展延伸发现新bug
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • 努加成
    2017-11-03 10:13:01

    谢谢你的分享,受益匪浅

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号