移动测试基础 成为 Android 测试开发的关键第一步

小清新 · 2018年09月12日 · 1107 次阅读

测试学习开发的难题 -- 时间

我是一名有 3 年工作经验(1 年全职实习 +2 年全职工作)测试工作人员,目前岗位是手机方面的测试。
作为一个测试人员,3 年的工作经验让我明白,掌握 Android 开发也很必要。掌握了 Android 开发,对于测试过程中遇到的功能、性能问题能够更快的从表现定位到问题根因,甚至在实现自动化测试上有很大的帮助。
而开发能力中很重要的一点是代码的逻辑思维,即代码的码感。这种感觉大多数来源于日积月累的练习。所以你可以看到很多初入门的开发人员经常做的事情就写代码、练代码。
但是测试的工作其实十分琐碎,学习 Android 开发,需要耗费的精力不少。一天可能大部分时间都是搭建测试环境、准备测试资源、采集测试的数据、分析测试数据、编辑测试报告,如果遇上让人糟心的开发或项目经理或产品经理,临时加测也是常有的事情。这样一天下来,可以让测试学习开发练习代码能力的时间就更少了。
其实即使对于 Andorid 的开发人员来说,需要学习 Android 的特性就足够多了,除此之外还要学习 Sqlite 数据库、设计模式、业务等等,那么对于我们测试人员来说更加不是一件容易的事情。
但是打蛇七寸找要害。在目前市场对于测试人员的要求越来越往开发能力方面靠拢,学习 Android 开发很必要。如何快速入手 Android 开发?
根据我目前的经验和身边同事的学习经历,在入门 Android 开发中,测试同学遇到的第一个最大问题是 Android 开发环境搭建。其实除了熟悉代码语法、编程逻辑,开发集成环境的知识也必不可少。而掌握熟悉 IDEA 才能更好的实践代码、练习逻辑

开发环境搭建重点了解 -- 选好 IDEA

Android Studio 是一个基于 IntelliJ IDEA 社区版本的 Android 开发环境。可能有人用惯了 Eclipse ADT,但是作为谷歌官方的 IDEA,是进行 Android 开发的首选利器。
那么 Android Studio 有哪些特点是你必须要了解的呢?
谷歌官方对 Android Studio 的特点总结如下:
1.智能的代码编辑器
2.代码模版和 Github 集成
3.开发适用于多屏幕的应用
4.支持所有形状和尺寸的模拟器
5.基于 Gradle 的灵活构建系统
6.强大的即时运行功能
......
以上的特点里面,我认为对于初入门的测试同学来说,最重要的是 Gradle。

Gradle 是什么?

来自度娘的解释是:Gradle 是一个基于 JVM 的构建工具,是一款通用灵活的构建工具,支持 maven, Ivy 仓库,支持传递性依赖管理,而不需要远程仓库或者是 pom.xml 和 ivy.xml 配置文件,基于 Groovy,build 脚本使用 Groovy 编写。
这样说还是比较抽象。
或许下面的这个例子可以帮助你更好的理解它。
“比如,大部分的 Java 项目基本流程都是相似的:编译源文件、进行单元测试、创建 Jar 包,使用 Gradle 做这些工作可以不用为每一个工程都编写代码。使用 Gradle 和它的插件可以为你减少重复性的代码与工作。”
如果这个还有一点抽象的话,或许下面这个也是一个不错的例子。
我们拿手机抓 trace 后自动转化来说。trace 分析手机卡顿的一个方法。抓取后 trace 需要转化为 html 格式,其中的一个方法是:

但是如果我们有很多的 trace 要转化,每次都开一个 cmd 窗口来敲命令转化就很麻烦了,所以我们可以写一个脚本让它实现自动转化:
File fileParent = new File(fileDir);
if(fileParent.isDirectory()){
File fileList[] = fileParent.listFiles();
String systracePyFilePath = getSystracepyPath("D:\\systrace\\systrace");
for(int i = 0;i < fileList.length;i++){
try {
// String saveSystracePyFilePath = saveSystracepyPath("C:\\Users\\chenxiuxian\\Desktop\\result",fileList[i].getName());
String saveSystracepyName = fileList[i].getName();
Process pr = Runtime.getRuntime().exec("python "+ systracePyFilePath + " --from-file " + fileList[i]);
BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));
try{
Thread.sleep(5000);
}catch(InterruptedException e){
e.printStackTrace();
}
while(br.readLine() != null){
String s = br.readLine();
System.out.println(s);
}
if(br.readLine() == null){
String systemDir = System.getProperty("user.dir");
System.out.println("Systrace file save path:" + System.getProperty("user.dir"));
try{
Thread.sleep(5000);
}catch(InterruptedException e){
e.printStackTrace();
}
br.close();
pr.destroy();
File file = new File(systemDir + File.separator + "trace.html");
file.renameTo(new File(file.getParent() + File.separator + saveSystracepyName + ".html"));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

看到这里大概你明白了,Gradle 是一个自动化构建的脚本,帮助我们自动化完成一个工程/应用/项目需要的资源、编译、打包等工作。
所以,在 Android Studio 中你可以看到,Gradle 配置了很多属性,主要是工程编译需要的属性

build.gradle:分为项目级和模块级别,用于描述 APP 工程的编译规则。
proguard-rules.pro:该文件用于描述 java 文件的代码混淆规则。我的代码没有做混淆,所以你可以看到的没有改动过的文件是这样子的:

gradle.properties:该文件用于配置编译工程的命令行参数,一般无须改动。

settings.gradle,配置哪些模块在一起编译。初始内容为 include':app',表示只编译 App 模块。

local.properties,项目的本地配置,一般无须改动。该文件是在工程编译时自动生成的,用于描述开发者本机的环境配置,比如 SDK 的本地路径、NDK 的本地路径等。

对于 Gradle 了解到这里似乎也没有什么让人值得注意的。但是对于我们测试同学来说,可以用来学习编程实践的时间是宝贵的,我们更要分清主次。所以下面的话是重要的:
项目级别的 build.gradle 一般无须改动,我们只需关注模块级别的 build.gradle。
所以弄清楚 build.gradle 里面每个参数的用途,可以在你搭建 Android 项目、编译 APP、导入其他 Android 项目时遇到的环境报错处理起来更有方向感:

所以当你遇到以下问题,你就知道的工程问题出现在依赖库,只要修改依赖库的版本号即可:

如果说测试开发是一条升级打怪之路,那么搭建起一个可以运行的开发环境就是打怪升级的第一步。

开发环境搭建问题分类

当然,搭建环境可能遇到的问题并只有这么一两个,从我遇到的可以分为 5 个方面
1.编译使用的 sdk 与 sdk 工具库不存在或不匹配
2.依赖库版本不匹配
3.Gradle 版本不匹配
4.网络问题
5.Android 模拟器
问题 1 可以通过 SDK Manager 来进行修改,如果没有则进行下载:

问题 2 可以根据报错信息和 SDK Manager 进行修改匹配,如果没有则进行下载:

问题 3 一般比较隐秘,但是我遇到类似的问题。我的问题现场没有记录下来,但是问题表现和解决方法与下面这位博主的类似:

解决方法是:

博客的链接:ttps://blog.csdn.net/daxue_haha/article/details/76919120
问题 4 主要是我们的网络一般无法直接链接谷歌的网络,导致 Gradle 更新或同步时一些依赖库无法下载而工程报错。解决方法是 *** 或下载相关的库,然后解压或安装到相关的目录。
问题 5:Android 模拟器启动慢,效率低。对于这个问题,建议直接使用已有的手机等 Android 设备,避免设置一些列 Android 模拟器参数的麻烦。

经过上文的讲述,我们已经能够成功搭建起 Android 开发的环境,而且有信心无论遇到什么样的环境问题都能从容淡定的应对。为什么?因为我们了解了本质、抓住了要点。
搭好开发环境后,我们可以愉快的开始写代码啦。在 Android 开发目前已经十分成熟,这方面的书籍多如汗牛充栋。以下挑选部分入门参考书籍:
1.《Android 从入门到精通》,作者:明日科技
2.《Android Studio 开发实战:从零基础到 App 上线 》,作者:欧阳燊
3.《第一行代码:Android》,作者:郭霖

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册