测试,自动化测试框架(Juint、Monkey等),mockito

 AccessibilityService也可以用在自动化测试中。
Android平台的安全测试框架,安全评估框架drozer- http://mwr.to/drozer
利用drozer进行android渗透- https://www.cnblogs.com/goodhacker/p/3906180.html
自动化渗透测试框架,静态和动态分析 - https://github.com/MobSF/Mobile-Security-Framework-MobSF
腾讯的专项测试之道- https://blog.csdn.net/GV7lZB0y87u7C/article/details/80603621
Android 测试技能树- http://blog.csdn.net/gb112211/article/details/45419907
测试的框架- http://blog.csdn.net/itfootball
软件测试知多少?- https://mp.weixin.qq.com/s?__biz=MzI0MDIwNTQ1Mg==&mid=2676491864&idx=1&sn=e1a582f307dbbbefd021635bcc255822&chksm=f362cdbbc41544add36d2672070d1b22ab008ea4f936bc4ec6bab798b9b8529ae66149839b41#rd
https://img-blog.csdnimg.cn/20190212112020565.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NoYXJlVXM=,size_16,color_FFFFFF,t_70

> 单元测试框架:
Juint ,Roboletric ,Instrumentation test,Espresso,UiAtyomator,appium,calabash,RoboGuice,Dagger,Dagger2(DI), Monkey

-- JUnit框架,单元测试junit 。


-- mock数据接口的数据 mockito库。
 mock技术的目的和作用就是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。
Android单元测试-Mockito 浅析- https://www.jianshu.com/p/b2084377b340
Mockito就是一个优秀的用于单元测试的mock框架- https://github.com/mockito/mockito
 Mockito是一套非常强大的测试框架,被广泛的应用于Java程序的unit test中。相比于EasyMock框架,Mockito使用起来简单.
dependencies { 
    testCompile 'junit:junit:4.12'
    //testCompile "org.mockito:mockito-core:1.10.19"
    testCompile "org.mockito:mockito-core:2.11.0"
}
 由于Mockito生成mock对象的原理是基于CGLIB,而CGLIB生成代理对象有其局限性,如final类型、private类型以及静态类型的方法不能mock。 
https://github.com/alighters/AndroidDemos/blob/master/mockito/src/test/java/lighters/mockito/MockTest.java
除了Mockito以外,还有一些类似的框架,比如:
 1.EasyMock:早期比较流行的MocK测试框架。它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常;
 2.PowerMock:这个工具是在EasyMock和Mockito上扩展出来的,目的是为了解决EasyMock和Mockito不能解决的问题,比如对static, final, private方法均不能mock。其实测试架构设计良好的代码,一般并不需要这些功能,但如果是在已有项目上增加单元测试,老代码有问题且不能改时,就不得不使用这些功能了;  

  3.JMockit:JMockit 是一个轻量级的mock框架是用以帮助开发人员编写测试程序的一组工具和API,该项目完全基于 Java 5 SE 的 java.lang.instrument 包开发,内部使用 ASM 库来修改Java的Bytecode;

> 专项测试

 专项测试有资源类性能、交互类性能、稳定性、兼容性和安全性等。
假如不是BAT,专项测试要怎样做- http://www.infoq.com/cn/articles/how-subject-test-works
手Q专项测试最佳实践- http://www.infoq.com/cn/presentations/mobile-qq-special-test-best-practice

> Studio 单元测试,JUNIT测试
@Test注解,添加了@Test的就变成了双向箭头,右键和Run/Debug Configuration就可以操作了!升级Gradle让它支持单元测试和测试依赖库
Android studio中单元测试和UI测试- https://blog.csdn.net/dengpeng_/article/details/54908473
在Android Studio中使用JUNIT测试- https://blog.csdn.net/liubo253/article/details/54846498
在Android Studio中进行单元测试和UI测试- https://www.jianshu.com/p/03118c11c199

> 测试与性能测试

Android performance test tool-CPU,memory,network traffic,starting time,battery current and status- https://github.com/NetEase/Emmagee
测试用到的几个基本技术:Juint+mockito+Dagger2+Roboletric(如网易的Emmagee测试)
性能测试场景设计深度解析- http://geek.csdn.net/news/detail/195559
我的性能测试经验分享- http://best.factj.com/linlin547/Performance_Analysis?ref=myread
自动化测试框架及测试工具Instrumentation、Monkeyrunner、Robotium、UIAutomation、Espresso。。。
初创团队的Android应用质量保障之道- http://blog.csdn.net/bboyfeiyu/article/details/73716633
魅族自动化测试架构之路-- http://geek.csdn.net/news/detail/106426
  魅族主要使用UIAutomator和Monkey两个框架进行自动化测试:

 1. UIAutomator
  UIAutomator是系统原生支持的框架,用它来做系统的稳定性测试是非常方便的,在4.0的机器上,升级完成固件之后就可以直接做测试工作。因为  UIAutomator是基于系统底层的,所以整个框架代码不是很多,可以在上面做简单的扩展、实现一些便利于测试工作的逻辑。它还可以支持跨APP的测试,验证APP的功能是否正常、流畅度和待机耗电情况等。
  UIAutomator主要用于回归测试和冒烟测试。对于一些成熟的不容易产生控件变更的项目,我们主要通过UIAutomator的脚本测试APP是否正常;对于一些待机耗电的专项测试,我们也会用UIAutomator的脚本来辅助一些控件操作。

 2. Android自动化测试Monkey
  Monkey也是系统原生支持的,我们主要用它来做长时间的压测,如检查7*24小时的压测是否出现崩溃的情况。Monkey可以指定随机事件的种子,通过一些方法调整它的时长,调整事件的比例,来达到测试侧重点的要求。
  Monkey主要是用来做稳定性测试和冒烟测试。Monkey属于没有太多逻辑的点击,对于Monkey的冒烟测试,我们主要是测一些安装拆卸能不能正常打开、会不会产生无响应、崩溃等情况。
  Android 性能测试基本上都是被遗忘的,因为功能测试和稳定性测试才是重点
  性能测试总的来说,可以分为卡顿ANR测试、流畅度测试、电量测试、流量测试。一个APP为什么需要性能测试,总的来说就是一些不严谨的代码,在低端机型造成卡顿,对手机上有限电量的浪费,昂贵流量的浪费,造成用户流失。
ANR一般有三种类型:
1)KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应
2)BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成
3)ServiceTimeout(20 seconds) --小概率类型 Service在特定的时间内无法处理完成

-- 自动化测试Monkey的使用
真机或模拟器 使用Monkey:在Android SDK 根目录下的tools 目录下可以找到(MonkeyRunner),有如下步骤
 1) 先配置adb的环境变量 
 adb C:\Users\desaco\AppData\Local\Android\sdk\platform-tools
 path ;%adb%  ,并检测是否配置成功
 2) Root手机,并安装root exploer手机软件
 3) android adb 读写模式 挂载文件系统,adb挂载手机的文件系统
  >adb shell
shell@android:/ $ su
shell@android:/ # mount -o rw,remount yassf2 /system/
shell@android:/ # chmod 777 /system/app/
 4) cd /data/data
 5) 输入 ls  命令;可以列出data文件夹中所有的app包名
 6) 然后可以运行monkey测试了: monkey  –p  (packageName)  –v  500  //它就会启动指定的应用程序,并向其发送500个伪随机事件
adb shell monkey -p your.package.name -v 500 > monkeytest.txt  

-- 连接真机(模拟器),打开CMD,进入:E:\android-sdk-windows\tools文件夹内(里面有monkeyrunner.bat)
创建一个Python脚本文件:testrunner.py,内容如下:
注意!如果monkeyrunner脚本文件要使用中文,记得格式保存为utf8,不然会ASCNII无法支持错误

-- monkeyrunner脚本下载 -- http://download.csdn.net/detail/mad1989/7674089
android使用monkey自动化测试真机上的app-http://blog.csdn.net/zhangzhilai8/article/details/18405511
android adb 读写模式 挂载文件系统-http://blog.sina.com.cn/s/blog_6e7dfa3d0101d2x0.html

-- monkeyrunner同monkey的区别
Monkey测试log的保存与分析-http://www.cnblogs.com/zyanrong/p/5417535.html
Android初体验之Monkey和MonkeyRunner - http://blog.csdn.net/mad1989/article/details/38087737
android自动化测试-monkey简介(1)- http://blog.csdn.net/yafeng_0306/article/details/7283075

monkey -p com.lenovo.ideafriend --ignore-crashes --ignore-timeouts --ignore-native-crashes --pct-touch 30 -s 1 -v -v  --throttle 200 100000 2>/sdcard/error.txt 1>/sdcard/info.txt

-- 一个cmd窗口,路径切换到模拟器目录下的tools目录下
输入:adb install --(apk完整路径)
    例如:adb install c:/NetScramble_1.1.apk 
与安装类似的,卸载是利用adb执行一个卸载指令:
    输入:adb shell rm data/app/NetScramble_1.1.apk
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值