作者:刘洋 团队公众号:腾讯移动品质中心TMQ 一、单元测试及Android单元测试简介 惯例,先简单介绍下理论知识,懂得的可以跳过。 1、单元测试定义和特性 单测定义: 在计算机编程中,单元测试(U
为了保证APP的质量,有一些自动化测试也是很重要的。很长一段时间Android Developement Tools缺少了对自动化测试的支持。但是最近Google让开发者们可以更容易的接入这些测试了。
由于 Robolectric 3.0 和 3.1 版本(包括后续3.x版本)差异不小,该工程中包含这两个版本对应的测试用例 Demo 。
单元测试(Android) 活动时间:2017年6月14日 斗鱼直播:http://www.douyu.com/TMQ 活动介绍:TMQ在线沙龙第二十二期分享 本次分享的主题是:单元测试(Android) 直播期间,有299位小伙伴在线观看! 想知道活动分享了啥吗, 请往下看吧! 活动嘉宾 嘉宾简介 刘洋,腾讯应用宝高级测试工程师,目前主要负责应用宝业务的代码分析、精准测试、工具建设等。在安卓客户端、后台类领域测试有比较丰富的经验。 分享主题 1、Android单元测试简介和意义 2、Androi
在TW技术雷达上,有一个很重要的趋势,就是把在传统技术领域已经成熟的技术实践,比如持续集成,推广到新兴技术领域,比如移动开发和前端开发。 北京办公室的朱傲这次用自己的实践告诉我们如何在Android这
作者:赵丽娜 简介 移动 APP 的 UI 自动化测试长久以来一直是一个难点,难点在于UI的”变”, 变化导致自动化用例的大量维护。 从分层测试的角度,自动化测试应该逐层进行。 最大量实现自动化测试的
通过实现一套 JVM 能够运行的 Android 代码,从而实现脱离 Android 环境进行测试。
简介 移动APP的UI自动化测试长久以来一直是一个难点,难点在于UI的”变”, 变化导致自动化用例的大量维护。从分层测试的角度,自动化测试应该逐层进行。最大量实现自动化测试的应该是单元测试,最容易实现也最容易在早期发现问题;其次是接口级测试,以验证逻辑为目的进行自动化,由于接口的相对稳定,自动化测试成本相对也可以接受;自动化成本最大的便是UI级自动化测试,然而UI界面是直接反馈给用户的效果展示,适度的尤其是BVT级的自动化测试也是非常必要的。本文通过分析几种自动化框架的异同,使测试人员在选
简介 移动APP的UI自动化测试长久以来一直是一个难点,难点在于UI的”变”, 变化导致自动化用例的大量维护。从分层测试的角度,自动化测试应该逐层进行。最大量实现自动化测试的应该是单元测试,最容易实现也最容易在早期发现问题;其次是接口级测试,以验证逻辑为目的进行自动化,由于接口的相对稳定,自动化测试成本相对也可以接受;自动化成本最大的便是UI级自动化测试,然而UI界面是直接反馈给用户的效果展示,适度的尤其是BVT级的自动化测试也是非常必要的。本文通过分析几种自动化框架的异同,使测试人员在选择自动化框架时有所
在今年的 Google I/O 大会上,我们推出了 AndroidX Test,作为 Jetpack 的一部分。今天,我们很高兴地宣布 v1.0.0 最终版本和 Robolectric v4.0 一起发布。作为 1.0.0 版本的一部分,所有 AndroidX Test 现在都是开源的。
Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。 本期,我们邀请了蘑菇街 Android 开发工程师——小创,为大家分享《安卓单元测试:What, Why and How》。 分享内容简介: 单元测试一直是软件开发过程中保证软件质量、提高代码设计非常重要的一环,然后国内环境普遍不重视这点,移动开发圈更是如此。这次分享主要介绍什么是单元测试、为什么要做单元测试、以及如何在安卓平台上做单元测试。 下面是本期分享内容整理
充分的单元测试就是提高代码质量最有效的手段之一,而单元测试严重依赖代码的可测试性,本文主要通过一个简单的DEMO演示如何对Android原生应用进行单元测试,同时示例代码采用MVP模式以提高代码的可读性和可测试性
如今,已经有大量的Android自己主动化測试架构或工具可供我们使用,当中包含:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolectric。另外LessPainful也提供服务来进行真实设备上的自己主动化測试。 Android自身提供了对instrumentation測试的基本支持,当中之中的一个就是位于android.test包内的ActivityInstrumentationTestCase2类,它扩展了JUnit的TestCase类来提供Android activities的功能測试。在应用測试中,每个activity首先会被Instrumentation初始化,然后再载入到Android模拟器或设备的Dalvik虚拟机中来运行。 Android SDK自带一个測试工具MonkeyRunner,它提供的API和执行环境能够执行Python语言编写的測试代码。它提供API来连接设备,安装/卸载应用,执行应用,截屏,比对图片来推断特定命令执行后的屏幕是否包括预期信息,以及执行相应用的測试。MonkeyRunner使用ActivityInstrumentationTestCase2, ProviderTestCase,ServiceTestCasek, SingleLaunchActivityTestCase及其它类来定义測试用例,并使用InstrumentationTestRunner类来执行測试。 Robotium是还有一种通过InstrumentationTestRunner来完毕Android交互式測试的架构,它横跨多个activities,支持功能測试,系统測试和接收測试。Robotium支持Activities、Dialogs、Toasts、Menus、Context Menus甚至Honeycomb,而且它能够同Maven和Ant集成来完毕持续集成測试。Robotium被称之为针对Android应用的又一个Selenium。 Robolectric另辟蹊径,它并不依赖于Android提供的測试功能,它使用了shadow objects而且执行測试于普通的工作站/serverJVM,不像模拟器或设备须要dexing(Android dex编译器将类文件编译成Android设备上的Dalvik VM使用的格式),打包,部署和执行的过程,大大降低了測试执行的时间。Pivotal实验室声称使用Robolectric能够在28秒内执行1047个測试。 LessPainful将Android測试又推进了一步,它提供了一个多设备平台自己主动化測试的服务。用户上传应用(*.apk)和用Cucumber(一种业务相关的DSL)编写的測试文件,选择測试执行须要的设备配置,最后測试将自己主动执行并生成測试报告。它支持的设备包含Garmin Asus,几款HTC,LG,Samsung Galaxy,Sony Xperia和Motorola Motodefy。 为了了解很多其它LessPainful提供的服务细节,我们採訪了LessPainful公司的CEO Jonas Maturana Larsen。以下就是这次简短的訪问: InfoQ:在不同版本号的Android上执行应用程序,存在什么问题?为了保证程序能正常执行,开发人员须要在Android的每个版本号上測试他的应用吗? JML:举个样例,SAXParser在Android 2.2之前有一个bug存在于对ContentHandler.startElement的回调中,它导致应用产生错误的行为。 到眼下为止,我们已经在非常多方面发现了不同操作系统版本号间的差异性。当中一些可能在2.1-update1上导致崩溃,但能够正常执行于2.1-update3和2.2. InfoQ:不同的设备对Android来说,有没有真正的差别?你是否能给我们举个样例,比方Android2.2应用能够执行在HTC但不能执行于Samsung?(或其它各种Android版本号和设备制造商的组合) JML:在LG手机,HorizontalScrollViews有时会导致子视图上的背景图片消失。这个问题存在于我们測试的全部的LG手机,无论Android版本号是多少。 假设你不自己处理这类问题,它将导致你的应用在不同设备上不尽相同。比如,Motorola将会用红色边框来高亮一个输入域。在我以前參与的一个项目中,我们用相同的红色边框来表示输入有误。 另一些问题,与其说和制造商相关,不如说是和硬件相关:比方,一些手机使用了较小的RAM和高分辨率的摄像头,当你处理手机上的图像时就会将导致崩溃。 InfoQ:这些測试是怎样运行的? JML:測试就如同执行一个ActivityInstrument
本文介绍了如何在Android App中实现UI自动化测试,重点介绍了Espresso的使用,包括如何利用Espresso进行UI自动化测试、如何处理异步加载和空指针等常见问题。同时,也介绍了如何为UI控件添加单元测试,并使用Espresso对UI控件进行测试。通过本文的学习,读者可以掌握如何在Android App中实现UI自动化测试,提高代码的健壮性和可维护性。
将你的Android SDK放在你的home目录或其他应用程序无关的位置。 当安装有些包含SDK的IDE的时候,可能会将SDK放在IDE同一目录下,当你需要升级(或重新安装)IDE或更换的IDE时,会非常麻烦。 此外,若果你的IDE是在普通用户,不是在root下运行,还要避免吧SDK放到一下需要sudo权限的系统级别目录下。
笔者在项目中实际有写过单元测试的代码,也用过一些单元测试的框架,但对单元测试的理解都很浅显,直到有一次在InfoQ编辑徐川主导的微信群里面看了蘑菇街小创同学的分享,加深了我对单元测试的兴趣和理解,他针对android平台的单元测试写了一个系列的文章,从什么是单元测试、单元测试的意义、各种方法怎样做单元测试、单元测试和集成测试的区别、各种测试框架和开源库在写单元测试时如何很好地被使用、以及如何mock、在PC上运行需要依赖android设备环境的测试等方面都做了非常详细的介绍,下文中的很多观念都是看了他的文章吸收得来的。
运行monkeyrunner之前必须先运行相应的模拟器或连上设备,不然monkeyrunner无法连接设备。
其实很简单,直接在build.gradle中配置repo地址,不过这个问题曾经浪费好几天的时间
从同时支持Android / iOS这个条件来看, 只有Appium和Calabash能胜任, 但Appium作为后起之秀比Calabash要更为优秀一些
AndServer是阿里大佬yanzhenjie的开源项目,项目地址: https://github.com/yanzhenjie/AndServer, 目前有大约2.5k的star,写得还是相对不错的,感兴趣的同学可以尝试去阅读一下源码.
顾翔老师近期推出一对一入职面试辅导。有兴趣者可加微信xianggu19720625与我联系。先要提供简历初选,合适者进一步洽谈。
Android 测试主要分为3个类型: 单元测试(Unit Test) 区分UI代码和功能代码在Android开发中尤其困难。因为有时Activity既有Controller的功能,又有View的功能。Robolectric是一个很优秀的Android测试框架,它提供了一个Android框架的stub,这样测试运行时实际上是在JVM上运行,而不是在Android平台(比如Robotium和Instrumentation都是在Android平台运行测试),从而提高了速度。另外请参考Gradle 对 Unit
Android是第二个最流行的用于 智能手机和平板电脑 的操作系统。这里有8个最好的 Android工具以许多不同的方式 帮助开发人员 ,例如 - SDK和AVD管理器,android ADT,and
1 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2 图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展示图
Android自带很多测试工具:JUnit,Monkeyrunner,UiAutomator,Espresso等
本文主要介绍了如何将Eclipse中的Robotium测试工程迁移到Android Studio中,包括配置Java依赖库、修改签名、运行测试用例、持续构建测试工程等方面的内容。通过迁移,可以方便地在Android Studio中开发和测试Robotium用例,提高开发效率。
根据我们曾经做的调查,开发者们希望 Android 官方可以维护一些实用的组件库和架构实践,以降低中大型应用的开发门槛,这样开发团队就可以集中更多精力在实际业务的优化和改进上。
https://github.com/xuexiangjys/TemplateAppProject
每一个准备学习Android自动化测试的同学,都会面临一个Android自动化测试框架的选择问题。与之前PC和WEB的测试框架不同,Android的自动化框架乍一看,非常的唬人。接踵而来的问题就是:怎么能有这么多呢,到底要选择哪一个呢?
在Android Studio中新建一个项目的时候,app的gradle中会默认添加单元测试的相关依赖库:
JakeWharton 是 Android 大神,同时也是开源狂魔。他开源的项目特点是小而美,且应用广泛,比如 butterknife、RxBinding、hugo 等,本文从受众最广泛,star 最多的 ButterKnife 讲起。
Rust语言在Android平台的广泛应用带来了卓越的性能、安全性和开发者生产力,但在如Android这样的大型项目中,构建时间较慢成为一个问题。为此,作者为Android工具链做了很多优化, 包括
英文链接:http://anupcowkur.com/posts/a-look-at-android-support-annotations/
在项目开发中,将公用的代码提取到common_module中,将某些单独功能封装到lib_module中,再根据业务划分module,团队成员分别开发各自的模块。 但随着项目的迭代,功能越来越多,增加了一些业务模块后,相互调用的情况会增多,就会发生各个业务模块之间的耦合非常严重,导致代码难以维护且扩展性很差。组件化就应用而生了。 组件化基础:多module划分业务和基础功能。 组件:单一的功能组件,如适配,支付,路由组件等,可单独抽出来形成SDK。 模块:独立的业务模块,如直播,首页模块等。模块可能包含多个不同组件。
本文为Android开发环境搭建教程,主要用于备忘,因为我毕竟不是总玩Android,重做系统后,一旦想玩,安装开发环境总会折磨我一会,所以,决定做一个备忘文章 。
网上有很多关于MVP架构的文章和示例,并且有很多不同的实现。但开发者社区仍不断努力,想以尽可能最好的方式将此模式应用在Android上。
盘点App测试会用到哪些工具 目录 1、常见应用模式 2、常用平台工具 2.1、Android平台 2.2、iOS平台 3、常见的UI自动化框架 3.1、Android平台 3.2、iOS平台 4、常见的单元测试框架 4.1、Android平台 4.2、iOS平台 5、常用的抓包工具 6、弱网模拟 7、常用的专项测试工具 7.1、Android平台 7.2、iOS平台 8、静态代码分析 8.1、Android平台 8.2、iOS平台 9、代码覆盖率 10、常用的云测平
原文出处: 汤涛(@星星D灯) 很长一段时间以来,我都在关注如何提高代码质量,也为此做过一些尝试,我想这个话题可能大家会比较感兴趣,在这里分享一下我关于如何提高代码质量的一些体会。 1. 打好基础 写出高质量代码,并不是搭建空中楼阁,需要有一定的基础,这里我重点强调与代码质量密切相关的几点: 掌握好开发语言,比如做Android就必须对Java足够熟悉,《Effective Java》一书就是教授大家如何更好得掌握Java, 写出高质量Java代码。 熟悉开发平台, 不同的开发平台,有不同的API, 有
Clean 一般是指,代码以洋葱的形状依据一定的依赖规则被划分为多层:内层对于外层一无所知。这就意味着依赖只能由外向内。
这个系列我做了协程和Flow开发者的一系列文章的翻译,旨在了解当前协程、Flow、LiveData这样设计的原因,从设计者的角度,发现他们的问题,以及如何解决这些问题,pls enjoy it。
Fragment 是 Android 中历史十分悠久的一个组件,它在 API 11 被加入,时至今日已成为 Android 开发中最常用的组件之一。Fragment 有了哪些新特性、修复了哪些问题,都是开发者们十分关心的话题。下面我们就来重新说一说 Fragment —— 不仅仅是说现在的 Fragment,还会回顾它的发展,并让您一瞥它未来的样子。
Arid Viper是一个带有极强网络间谍特征的威胁组织,Arid Viper的工具集涵盖多种操作系统平台,自2017年出现以来,该组织一直都在持续开发和使用各种移动端间谍软件。
导读 山雨欲来风满楼,最近微信小程序相关开发文章吹遍大江南北,亦有摧枯拉朽万象更新之势。问小程序形为何物,直教IT众生怡情悦性高潮迭起。作为一名有着远大理想“包袱”与互联网变革 “使命感”的测试工程师,我再也按耐不住内心中的渴望与好奇,代表测试行业各大门派肩负起了迎接时代变革的挑战。话说经历了围观查看、溜边打探等种种过程,终于在隔壁老王那里弄到了测试体验资格,开始了一场对小程序的自动化亲密接触。 上篇---小程序初探 上手的小程序是微信官方的测试Demo,类似Android Api Demos一样,官方小程
原文地址:ViewModels and LiveData: Patterns + AntiPatterns 原文作者:Jose Alcérreca 译文出自:掘金翻译计划 本文永久链接:github.
随着Unity、cocos2dx等优秀跨平台游戏引擎的出现,开发者可以把自己从繁重的Android、iOS原生台开发中解放出来,把精力放在游戏的创作。原来做一款跨平台的游戏可能需要开发者懂得Java、Objective-C、C#甚至是C、C++,现在借助Unity我们开发者只需要懂得很少的原生应用开发知识就能够打造一款优秀的游戏。特别是在鹅厂,有了Apollo这样的组件,原生的接入更加简单,可能每个项目组只需要有1-2个人懂Android,iOS开发就够了。但是也正因为如此,很多同事有了充足的理由不去学习、接触Android和iOS的开发,等到真正需要做接入的时候才开始找人找资料,难免会踩坑。基于此,本文的目的就是通过介绍基础的Android开发知识以及部分的实际操作,让大家有一定的Android基础知识储备。又或者是当作一份Unity接入Android SDK/插件的基础教程,只要照着做,就基本上不会错了。
常规类参数 1、 -help 作用:列出简单的用法 例:adb shell monkey -help 也可不写help 2、-v 作用:命令行上的每一个-v都将增加反馈信息的详细级别。 Level0(默认),除了启动、测试完成和最终结果外只提供较少的信息。 adb shell monkey -p com.shjt.map -v 100 Level1,提供了较为详细的测试信息,如逐个发送到 Activity 的事件信息。 adb shell monkey -p com.shjt.map -v -v 100 Level2,提供了更多的设置信息,如测试中选中或未选中的 Activity 信息。 adb shell monkey -p com.shjt.map -v -v -v 100 比较常用的是-v -v -v,即最多详细信息,一般会保存到指定文件中供开发人员查找bug原因时使用。 例:adb shell monkey -v 10 事件类参数 1、-s <seed> 作用:伪随机数生成器的seed值。如果用相同的seed值再次运行monkey,将生成相同的事件序列。 例:adb shell monkey -s 1483082208904 -v 10 2、–throttle <milliseconds> 作用:在事件之间插入固定的时间(毫秒)延迟,你可以使用这个设置来减缓Monkey的运行速度,如果你不指定这个参数,则事件之间将没有延迟,事件将以最快的速度生成。 注:常用参数,一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件,所以此处一般设置为300毫秒。 例:adb shell monkey –throttle 300 -v 10 3、–pct-touch <percent> 作用:调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作) 注:常用参数,此参数设置要适应当前被测应用程序的操作,比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。 例:adb shell monkey –pct-touch 100 -v 10 4、–pct-motion <percent> 作用:调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成) 注:常用参数,需注意的是移动事件是直线滑动 例:adb shell monkey –pct-motion 100 -v 10 5、–pct-trackball<percent> 作用:调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件) 注:不常使用参数,现在手机几乎没有滚动球,但滚动球事件中包含曲线滑动事件,在被测程序需要曲线滑动时可以选用此参数。 例:adb shell monkey –pct-trackball 100 -v 10 6、–pct-nav<percent> 作用:调整基本的导航事件百分比。(导航事件由方向输入设备的上下左右按键所触发的事件组成) 注:不常用操作。 例:adb shell monkey –pct-nav 100 -v 10 7、–pct-majornav<percent> 作用:调整主要导航事件的百分比。(这些导航事件通常会导致UI界面中的动作事件,如5-way键盘的中间键,回退按键、菜单按键) 注:不常用操作。 例:adb shell monkey –pct-majornav 100 -v 10 8、–pct-syskeys<percent> 作用:调整系统事件百分比。(这些按键通常由系统保留使用,如Home、Back、Start Call、EndCall、音量调节) 注:不常用。 例:adb shell monkey –pct-syskeys 100 -v 10 9、–pct-appswitch<percent> 作用:调整Activity启动的百分比。(在随机的时间间隔中,Monkey将执行一个startActivity()调用,作为最大程度覆盖被测包中全部Activity的一种方法) 注:不常用。 例:adb shell monkey –pct-appswitch 100 -v 5 10、–pct-anyevent 作用:调整其他事件的百分比。(这包含所有其他事件,如按键、其他在设备上不常用的按钮等) 注:不常用。 例:adb shell monkey –pct-anyevent 100 -v 5 约束类参数 1、-p<allowed-package-nam
文|汤涛 很长一段时间以来,我都在关注如何提高代码质量,也为此做过一些尝试,我想这个话题可能大家会比较感兴趣,在这里分享一下我关于如何提高代码质量的一些体会。 1. 打好基础 写出高质量代码,并不是搭建空中楼阁,需要有一定的基础,这里我重点强调与代码质量密切相关的几点: 掌握好开发语言,比如做Android就必须对Java足够熟悉,《Effective Java》一书就是教授大家如何更好得掌握Java, 写出高质量Java代码。 熟悉开发平台, 不同的开发平台,有不同的API, 有不同的工作原理,同样是Ja
领取专属 10元无门槛券
手把手带您无忧上云