【腾讯TMQ】像google一样测试系列之二:方向篇
来源:互联网 发布:java使用百度地图api 编辑:程序博客网 时间:2024/05/17 04:15
一、左移方向
左移目的大家都明了,不必细说。但左移进行方向不知大家是否有想过?我觉得有2个方 向。在开发现有代码的基础点上:
向左:如何让现有代码更可测。
这里会因为人的经验,单测写法等各种原因会认为现有代码不可测。同时,输出的可测案。
例上,开发在短时间内也难以修改。新代码也不一定会按照可测性来。这个在测试程度上可能会依赖开发,如果离职换了一个新来的开发,难免又会出现这种情况。
向右:如何能测试到更多的现有代码。
这个是基于测试角度,假设开发代码就是这个样子,如何才能测试更多。这需要测试人员对单测的深度理解,对android环境,及代码实现上一个熟悉。如异步线程如何可测。
在左移上,2个方向可同时进行,这样将会达到一个最大覆盖率。
本文后续文章,都将以 向右方向进行探索和实践。
二、google单测为什么能达到70%的覆盖的理解
Google单测覆盖率达到70%。然而为什么我们却达不到,甚至只能是20%。
我认为:
1、开发代码可测规范性是个原因;
2、单测的理解误区:
Google对单测的定义,也是不同于以前,可能不少人对单测的理解还停留在对一个类的测试上。google单测的定义如下图:基本上能测试的都被定义为单测了。
3、测试范围上:
国内的很多单测,大部分只做了 下图中的 1、2,很少有做 3,而4、5、6部分是基本没有。即使有也只是通过UI自动化的方式来操作的。而一般Android业务代码上,4、5占了很大比重。
以上几点是主要导致覆盖率低的原因。
三、google单测中 2种测试代码的运行机制
1、google单测之Test运行机制:
(1)Test 在google官网文档里是:Local Unit Tests。
(2)主要测试范围是: java层测试,和部分依赖Android环境的测试。
(3)Junit和Testng支持:支持Junit4和Testng,及Mock库。
(4)运行原理:
将依赖的android环境android.jar,用一个mock的android.jar替代,这个jar没有具体的实现代码,只有接口,所有的返回均可通过mock来实现你的需求。
因此是运行在JVM上的。
(5)测试代码目录:src/test/java/
(6)运行模式如下:
2、google单测 之 AndroidTest 运行机制:
(1)AndroidTest 在google官网文档里是:Instrumented Tests。这里也不要认为和之前Robotium时代的Instrumented test一样,是不一样的,这里是比之前高级一点;
(2)运行环境:运行在真机或模拟器上;
(3)主要测试范围是:理论上一切都可测,包括 Local Unit Tests;
(4)Junit和Testng支持:普通测试用例支持Junit和Testng,但Application的测试只能用Junit;
(5)运行原理:测试代码和源代码分别build成一个app,安装到真机,但是是运行在同一个进程里,因此可以调用业务代码和反射执行。测试代码运行环境均是android真环境。你可以选择mock或不mock,可以得到业务app的context等;
(6)测试代码目录:src/androidTest/java/;
(7)运行模式如下:
汇总:
问题:
你认为android测试,覆盖率可以达到多少?
UI层可以覆盖么?
组件交互层可以覆盖么?
适配可以覆盖么?
未完待续……
关注微信公众号:腾讯移动品质中心TMQ,获取更多测试干货!
- 【腾讯TMQ】像google一样测试系列之二:方向篇
- 【腾讯TMQ】像google一样测试系列之一:目录篇
- 【腾讯TMQ】像google一样测试系列之三:方案选型篇
- 【腾讯TMQ】像google一样测试系列之四:技术篇
- 【腾讯TMQ】像google一样测试系列之五:流程与覆盖率篇
- 【腾讯TMQ】像google一样测试系列之六: 实战篇
- 【腾讯TMQ】穿山甲系列之像修复Crash一样修复卡顿
- 【腾讯TMQ】【Android场景化性能测试专栏】方向与框架篇
- 【腾讯TMQ】精准测试之精简用例
- 【腾讯TMQ】静态测试技术之Lint冗余资源清理
- 【腾讯TMQ】测试左移之代码评审
- 【腾讯TMQ】走进标准化测试
- 【腾讯TMQ】win32应用程序性能测试-内存篇
- 【腾讯TMQ】【Android场景化性能测试】启动速度篇
- 【腾讯TMQ】Crash之防测漏篇
- 【腾讯TMQ】Google是如何做Chrome浏览器的性能测试的?
- 【腾讯TMQ】腾讯电量仪——智能硬件测试工具尝试之路
- 像Google一样开会
- cmd 伪多线程执行
- chales学习笔记之 重定向
- Hibernate 使用ehcache配置二级缓存
- 16. 3Sum Closest
- USTC2017 writeup
- 【腾讯TMQ】像google一样测试系列之二:方向篇
- Handler+ImageView控件实现定时换图片
- windows平台QT程序发布打包
- Java创建ClassTag的方法
- 机器学习启程
- 简明Python教程笔记四 python3.x
- 同步应用(python 版)
- Kotlin 喧嚣过后,Java 程序员未来在哪里
- Eclipse中修改SVN用户名和密码方法