思考--测试应该从代码中读懂什么

原创 2016年05月30日 22:38:21

前言:
作为系统测试工程师,你不需要对代码了如指掌,不需要掌握每一个方法,每一个逻辑,但是适当的阅读代码是有必要的。可是到底阅读到什么深度,需要掌握多少,这也是每一个测试工程师要面对的问题。阅读得浅了,往往会遗漏;阅读得深了,浪费时间,我又不是开发,也没必要,是不 @.@

分级理论:

为了更好地区分对代码的理解程度,个人主观是把开发代码分级了,这个分级个人主观偏多,如有不当,欢迎指出。
分级一共分为三级(表胡思乱想),下面对这个级别的小技巧分享一下。
一级:对于java来说,万物皆对象;对于android来说,万物皆运行在组件之上,而组件的老大,就是activity。因此,我们首先的入口就是从activity入手,准确的说是activity的生命周期入手。生命周期的定义就不说了,那么结合我所在的项目来说,最重要的就是onCreate()和onDestory()这两个函数,前者负责资源分配以及初始化,后者负责资源回收或者状态保存。
比如说github上面某个简单的开源项目

mWorkHandler = new WorkHandler(mWorkerThread.getLooper());
mWorkHandler.sendEmptyMessage(MSG_READ_ONLINE_PARAM_URL);
mWorkHandler.sendEmptyMessage(MSG_CHECK_DISK_SPACE);

比如上面的onCreate()方法里面的部分截取,看一下就知道是每次打开这个模块就开启了一个HandlerThread线程去检查磁盘剩余空间,以及去读取一些参数,那么一级逻辑看到这里就差不多了。

二级
前面的一级是顾名思义,测试其实已经完成大部分的逻辑,已经是知道的范围了,比如MainActivity的检查更新,安全认证啊等等,在需求文档不会设计到的地方,测试已经关注到了,那么二级是什么呢?那么我认为是在onCreate()方法之下,在具体算法之上的逻辑,比如读取一个播放器列表,一级就是知道什么时机去读取去解析去存储,二级就是这个列表是什么时候去替换旧列表,本地存储什么时候会被换掉,有没有通知其他关联模块去同步…再比如,前面分析robotium的时候,一级就是知道通过viewFetcher去查找控件,二级就是知道它是通过windowManager去得到decoderView,三级就是要掌握这么个算法去筛选我们需要的view。嗯,可能第二个例子可能好懂一点。

三级
三级其实就是具体的算法了,具体的函数了,更多的是作为工具类的定义。作为灰盒测试,其实这部分内容是属于兴趣范围,在三级逻辑下,更多的接入是单元测试,属于白盒测试功能师的范围啦,笔者目前也只是完成一些简单的单元验证,没法深入讨论的,其实很多网络上分析的一些框架,也是到这里就止住了,没办法,算法这东西,博大精深,但偏偏对灰盒测试工程师的作用也不大(除非你是测试开发:<)

对实际测试的益处

在有了理论的分类后,我们扒一扒好处吧
好处一:加深对逻辑的理解提高测试覆盖率
其实对于功能测试来说,最头疼的就是覆盖率,以及出问题被领导质问,功能测试流程一般是这样的:根据需求文档写用例–测试前和过程和开发沟通疑问点–测试完成。这个流程也是大多数测试人员的流程,包括之前的我,这么做没什么问题,但是却不够全面,问题出在和开发沟通上面,谢过一些程序的都知道我们不可能把所有逻辑都记住,意味着测试和你沟通的时候你不可能把所有写的逻辑都很好地列出来,导致测试的盲点,所以代码的粗读(指的是一级二级阅读)也都会很好地发现隐藏的彩蛋,哦不,是代码逻辑,那么据跳槽到bat的某同事讲也确实如此。

好处二:为单元测试和自动化做铺垫
自动化可不止测试当前界面存在,点击跳转正常就完了,在弄清楚代码逻辑后,做自动化可以明白数据的走向,让你的自动化不局限于界面的点点滑滑,而是深入到数据库,二进制文件的验证,效果无疑会好得多。

好处三:提高测试效率
当你知道模块重要数据的调用的时候,构造复杂数据测试显得容易的多了,改改就行了,比如我测试一个列表,只需要在循环里面add多次就行了,这样就产生了多倍数据,多个方便啊。

好处四:对性能还是有些用处的
研究性能已经有段时间了,效果也还可以,所以现在习惯的看代码的时候,看到注册回调了,马上想到在模块退出有没有反注册;在消息中开启多线程处理任务的时候,马上去检查onDestory有没有remove所有消息;各种try…catch资源的时候,也会反射性去看看finally有没有关掉… …这些,都是在学习中不知觉养成的习惯,所以说还是有些用处的

好处N:
对自己未来有好处,加强语言阅读能力,简介提高编码能力,学习开发的思路,巴拉巴拉,差不多就这些了,今天就扯这么多吧,嘿嘿。

版权声明:本文为博主原创文章,转载请说明出处!

如何快速看懂别人的代码

我们在写程式时,有不少时间都是在看别人的代码。  例如看小组的代码,看小组整合的守则,若一开始没规划怎么看,  就会“噜看噜苦(台语) ”  不管是参考也好,从开源抓下来研究也好,为了了解箇...
  • smqh2011
  • smqh2011
  • 2013年04月09日 11:23
  • 3822

对软件测试团队“核心价值”的思考

之前曾写过《软件质量管理的困境与对策思考》,在其中谈到开发部门与质量管理部门(QA)应形成一个有“交集的双环”而非“哑铃型”组织,也指出软件质量管理应重实践轻量化,其目标应是帮助工程师改善工作习惯和提...
  • hzliyun
  • hzliyun
  • 2013年08月05日 22:11
  • 7554

如何看懂源代码--(分析源代码方法)

积累一些读软件源码的好方法: 转载:http://blog.csdn.net/challenge_c_plusplus/article/details/6680220 想要更多软件开发资料或帮助,...
  • liuer2004_82
  • liuer2004_82
  • 2016年04月27日 14:03
  • 5794

每一个人都应该学习电脑编程,因为它会教你如何思考

扎克伯格11岁开始学习编程,创办Facebook;比尔·盖茨13岁学习编程,创办微软……乔布斯说:“每一个人都应该学习电脑编程,因为它会教你如何思考。" 现在在北...
  • UFv59to8
  • UFv59to8
  • 2017年11月29日 00:00
  • 166

关于测试思维的一点思考

今天学习了思维导图的工具并就测试水杯进行了小组讨论。我的一点想法是,既然是发散思维、头脑风暴,结构、规范、测试点总结都是其次的,重要的是尽可能地发散你的思维,去挖掘别人想不到的点。在测试点上,按照测试...
  • mr_lady
  • mr_lady
  • 2016年04月15日 12:06
  • 333

LoadRunner性能测试-思考时间

LoadRunner思考时间  一、virtual user generator(脚本录制与设置)        1、在录制脚本的时候LoadRunner会自动记录录制者在录制软件系统...
  • liuyuzhu111
  • liuyuzhu111
  • 2015年11月12日 19:38
  • 1181

读懂shell脚本

Linux中有大量的shell脚本,读懂shell脚本,对理解linux或其他软件,很有帮助。 但是shell的语法和java还是有很大差别的,需要了解一下他的语法。 1 $# $0 $1 ${2...
  • ggaofengg
  • ggaofengg
  • 2016年12月29日 20:20
  • 151

性能测试-事务、思考时间和集合点设置

使用过Loadrunner的童鞋应该对事务、思考时间、集合点这三个概念不陌生,这三样对测试脚本编写有很大的作用,今天楼主就跟大家讲讲在Hyperpacer中,这三个是怎么实现的。 为照顾零基础的童鞋,...
  • baidu_34751764
  • baidu_34751764
  • 2016年04月22日 12:09
  • 2267

读秋叶《如何高效读懂一本书》第一次分享

前记 在京东阅读看到秋叶大叔的《如何高效读懂一本书》,看到了150页后,果断放弃电子书,在淘宝发了19元买纸质书,我相信是正版的,因为还有书套夹。这本书给我极大的震撼,读书也可以很有趣,读书也可以...
  • xxzhangx
  • xxzhangx
  • 2016年09月23日 15:16
  • 690

一文读懂卷积神经网络

转自:http://blog.csdn.net/stdcoutzyx/article/details/41596663 自今年七月份以来,一直在实验室负责卷积神经网络(Convolution...
  • u012943043
  • u012943043
  • 2016年02月23日 17:12
  • 2771
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:思考--测试应该从代码中读懂什么
举报原因:
原因补充:

(最多只允许输入30个字)