【第22期】观点:IT 行业加班,到底有没有价值?

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

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

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

相关文章推荐

写可测试的代码

写可测试的代码 任何一个软件都是可以测试。在某种意义上,用户的使用过程也就是一个软件测试的过程。可是这并不是我们今天要讲的可测试性。我们讲的可测试性指的是代码的可测试性,通俗点儿说就是是一串代码...

写单元测试代码有什么好处

写作单元测试代码的好处 熟悉单元测试技术,了解相关的基本原理;掌握代码,积累代码编写经验,积累调试经验,积累分析问题、解决问题的经验;训练动手能力,单元测试代码不是业务代码,开发、维护过...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

测试代码的编写

说明:代码测试可能是软件测试的一个简化,一般是程序开发人员自己为了维护测试一段代码编写的健壮性所进行的一些测试。通常包括正向测试、负向测试和边界测试。而通常在程序开发阶段进行,并根据测试结果修改代码,...

【单元测试】关于自测试代码

我是一个完全目标导向的程序猿,万事都喜欢问一句“为什么需要这样?”。 今天我们谈一下“自测试代码”。看到这样一段文字:“自测试代码的价值”,以前的我只知道写测试代码很好,当时浪费时间,就懒得写了,自认...

代码大全(9)之软件测试及调试

单元测试要点: 对每个需求进行测试,以便确保需求得到实现 对和设计有关程序进行测试以确保设计得到了实现 在详细测试的基础上对需求和设计测试增加基本测试 不完全测试 善于结构的测试 ...

随想录(做自己代码的测试工程师)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】      很多工程师都有一个不好的习惯,因为大多数it工程师都喜欢写代码,但是不喜欢测试代码。...

测试代码

Application 类 package com.baway.test; import com.nostra13.universalimageloader.core.ImageLoader;...

如何快速看懂一个大型程序

(1)先建好环境,玩一遍 (2)看想办法掌握程序的结构     通过作者微博、Google、百度、PDSN、等找到程序的体系结构。     通过能找到。 (3)自已分析、验证程序的体系结构。 ...
  • JYSG9
  • JYSG9
  • 2014-04-20 20:00
  • 8537

如何快速的看懂别人的代码

最近由于公司的一位前辈,由于家中之事欲走,所以接手了一个公司长期再做的项目,自己也略有了解,知道这个项目先后经过3人之手的煅炼,现在这个交接棒传到了我的手中,初见代码,头绪全无。。故此从网上学习如何快...

如何读懂别人的代码

【转】如何读懂别人的代码 经常遇到接手别人做过的产品或者别人做到一半的东西。读人家的程序,有 时就像读天书一样。没有注释,没有文档,结构不清晰,逻辑混乱,定义不规范,写法不规 范等等都可能遇...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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