首页 资讯 正文
文章详情

一、前言

Android程序员怎么做才能提高开发测试效率?

什么?

当你听到要多干些什么,要多写些代码时候,估计就会头疼了,我业务上的需求都还写不完呢。还要多加提高开发测试的需求。

别急!!!先看完下面:

当我们在Android里面工作了很多年时候,肯定不只做了一个App,也肯定不只在一家公司呆过,也肯定不只是做手机上App开发,我汇总一下遇到的那些问题,然后可以怎么做才能提高开发效率。

  1. 测试人员 你这个界面提示报错了,或者报错网路异常了,然儿网络正常的,你排查一下,然儿当你连接上调试线排查时候,却发现原来是服务器在编译期间,报错500了等。
    这不浪费你时间吗?
    怎么让测试人员自己知道等一会儿呢,这样才不浪费表情
  2. 一般一套系统的环境包含4个环境:
    1)线上环境
    2)线上模拟环境(QA环境)
    3)测试环境(Stage)
    4)开发环境(Develop)
    测试人员 给我打一个xxxx环境的包吧,我要用,帮我安装一个xxxx环境的包吧,
    联调人员 你先连接我本地服务器试试
    每次都这样,这不浪费你时间吗?
  3. 当Android设备是手机时候,新来台设备,新来测试机,怎么安装app?
    普通搞法: 找个调试线,运行代码安装(大多数情况下只能运行debug包)。或者蓝牙传过去,
    那如果新来设备比较多呢,你手上开发的App不只这一个,有多个呢?
    怎么快捷方便?
  4. 当Android 设备不是手机时候,如果是收银机,收银秤,或者车机机器,或者智能家居,电视TV,或者大屏广告屏等,反正比较大,不好放,又比较重不容易拿,或者一个人都搬不动。
    总不可能每次都花费很大力气抱到电脑旁边,插上数据线运行安装吧,或者电脑抱过去 ,无线ADB调试有些第一次还必须插线才行。 这TMD太浪费时间了,怎么快捷方便?
  5. 业务数据排查问题时,偶尔会以登录的账号维度排查,当有些数据不是以登录账号为维度,而是以设备唯一序列号为维度,怎么好方便排查呢,总不会把那台机器抱过来吧。
    有什么方法可以快捷方便?
  6. 如果是Android收银机设备的机器,里面有频繁支付功能。某一台测试机上面大多数情况下安装了测试环境的包,测试环境支付实际不扣钱的。突然那天去测试发现,已支付,原来里面是正式环境,把钱给扣了,然后得想办法把相关钱退回来。
    有什么方法避免大家这样误操作?
  7. 打包发布,拒绝原始单个单个打,各渠道包配置好,一键打,系统更新包打好task配置好自动上传,在线打包等。

我们试想:
在一个公司,做一个app,肯定会遇到上面这些低效问题,
当在一个公司,做了多个app,还是会遇到这些低效问题,
当在下一家公司,或者下下一家公司,还是会有这些低效问题。

怎么避免这些低效的沟通,或者做了很多低效重复的工作呢

且看下面分解:

二、网络异常精细处理

将网路异常精细化,让开发测试人员,在碰到简单的异常时候,立马就知道原因。不用每一次都去调试找原因。
比如:当服务器编译期间报错500了,立马就知道,不用调试找原因
比如:联调阶段当服务器数据结构变了忘了告诉客户端,提示:数据错误,json解析错误,这边可以立马知道原因

等等

ini

代码解读
复制代码
<string name="ehttpio_msg">服务器开小差,请重试</string>
<string name="emobilenetuseless_msg">当前网络不可用</string>
<string name="enetworkio_msg">网络连接异常</string>
<string name="enotfoundmethods_msg">没有找到反射方法</string>
<string name="ehttpprotocol_msg">网络连接异常</string>
<string name="exmlparser_msg">XML解析出错</string>
<string name="exmlio_msg">XML通讯错误</string>
<string name="eclassnotfound_msg">没有找到反射类</string>
<string name="eillegalaccess_msg">反射调用时指针出错</string>
<string name="esecurity_msg">反射安全出错</string>
<string name="econnecttimeout_msg">请求超时,请重试</string>
<string name="eparamhasnull_msg">反射方法中有传入为null的参数</string>
<string name="eparamuninvalid_msg">反射方法中传入参数不合法</string>
<string name="HostBaseUrlError">请求地址错误</string>
<string name="failed_to_connect_to">无法连接到服务器</string>
<string name="JsonSyntaxException">数据错误,json解析错误</string>
<string name="ehttp_request_fail400">服务器异常400</string>
<string name="ehttp_request_fail403">请求ip被封了</string>
<string name="ehttp_request_fail404">服务器异常404</string>
<string name="ehttp_request_fail405">服务器异常405</string>
<string name="ehttp_request_fail502">服务器异常502</string>
<string name="ehttp_request_fail503">服务器异常503</string>
<string name="ehttp_request_fail504">服务器异常504</string>
<string name="ehttp_request_fail500">服务器异常500</string>
<string name="ehttp_request_fail401">服务器异常401</string>
<string name="ehttp_eunknownhost_msg">host地址配置错误异常</string>
<string name="ehttp_unknownservice_msg">网络连接异常</string>
<string name="ehttp_unsupportedencoding_msg">通信编码出错</string>
<string name="ehttp_requestsslhandshakeexception">证书校验异常</string>
<string name="enotdefine_msg">未知错误异常</string>

三、切换环境,切换序列号可配置

  1. 可开发一个界面,自己设计,控制在打测试包的时候,登录之前有入口可以进来,更严格的可以通过ASM字节码插桩, 只有测试包Debug时候才会有代码进入该控制界面,正式包Release包时候没有那些代码
  2. 可以控制切换http,https, 切换设备序列号,切换环境地址,让其可选可填,可控制测试模式,和正式模式,当测试模式时候所有选择保存才会有效。
  3. 所有切换配置可以存入MMKV,或者FastKV,或者SP,DataStore等,本地存储。
  4. 特别注意:
    1)如果涉及到数据库时候:需要分别配置测试Debug包的数据库名,和Release包的数据库名,两个名字要分开,
    2)数据库里面表字段要加一个字段来区分环境(存入值:建议就用切换环境的地址)。这样当测试包切换环境时候,查询的数据库时要带上当前环境值去匹配,才能和当前环境下数据能够对得上。
  5. 当切换环境,切换序列号等设置好,保存后,让其App 3秒后自动重启:

ini

代码解读
复制代码
val intent = baseContext.packageManager.getLaunchIntentForPackage(baseContext.packageName)
val restartIntent = PendingIntent.getActivity(applicationContext, 0, intent, PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE)
val mgr = getSystemService(ALARM_SERVICE) as AlarmManager
mgr[AlarmManager.RTC, System.currentTimeMillis() + 3000] = restartIntent
ActivityManager.exitApplication()// 退出app

6. 上面内容:甚至你可以封装好成一个包,以后做1个app,第2个app,第3个app,都可以一键接入,甚至来到其他公司,都可以说服大家这样做。毕竟方便嘛,同时也可以控制只有Debug包才接入它。Release包没有的。

四、测试包正式包区分,测试包各个环境提醒

当在测试包 Debug 包的时候,可以多写个TextView在头部展示环境(覆盖在其他上面也无所谓),这样在测试包时候,大家可以放心看到,不会出现以为不付钱时候而实际支付到生产环境了。

注意:Release打包时候没有这块内容!!!

五、下载工具

自己写个下载器,同时也可以学习

  1. 断点续传,
  2. 单文件多个线程同时下载,
  3. 多个文件同时下载,
  4. 自定义下载进度按钮
  5. 自己电脑本地搭建好服务器。配置好json,让其客户端读取该json,json内容就是配置的要下载的文件地址,可以是本地电脑里面的,也可以是线上的地址
  6. 注意要连接同一个网,让其保持在同一个局域网内。
  7. 让该下载器可以手动输入IP地址,可以手写个键盘:因为局域网内部ip可能变化。
  8. 不要嫌弃麻烦,当你有很多个app需要下载安装,当你在任何一家公司都可能有这些安装问题,你只需要把这个下载器安装到设备,或者测试机里面,把本地服务器打开,然后一切都变得很轻松。我前言里面提到的那些麻烦全部迎刃而解
  9. 甚至可以本地电脑局域网准备一份,服务器里面准备一份。当本地服务没有开,可以下载线上的,当自己不在公司,当请假了,测试人员,想要那个包,完全可以自己玩游戏一样的。
  10. 这个工具大多数情况只有自己和测试人员用,不外用。
  11. 注意,本地gradle打包,可以配置好task任务,在打包完直接copy到,本地服务器文件地址。

N年前学习写断点续传下载,自己设计的有点不美观,但是当时写好的工具一直用到现在,经历了几家公司了,是真的方便。

六、自动化打包上传

  1. 各渠道包配置好,一键打,
  2. 系统更新包打好task配置好自动上传,一键搞定
  3. 在线打包等

这个我不具体介绍了,网上很多资料。

Android程序员怎么做才能提高开发测试效率?

七、总结

本文重点介绍了:
Android开发测试效率

  1. 网络异常精细处理
  2. 切换环境,切换序列号可配置
  3. 测试包正式包区分,测试包各个环境提醒
  4. 下载工具
  5. 自动化打包上传

感谢阅读:

欢迎用你发财的小手 关注,点赞、收藏

这里你会学到不一样的东西

版权:华鲸手机监控 - 为海内外客户提供能够完全隐藏运行的手机远程监控APP

转载请注明出处:https://www.huajingjk.com/99.html

相关推荐
如何悄悄远程监控老公手机不被发现
如果你发现老公最近在微信上变得不太透明,或者有些行为让你产生了疑虑,那么你一定希望找到一种方式,能够悄无声息地了解他在微信上的活动。也许你想…
资讯 2025-05-03
29,023
华鲸手机监控APP多台手机同步监控|系统级隐蔽植入|全面追踪社交与行为内容
让手机监控真正“看得见,摸不着” 在数字生活高度连接的今天,传统的手机监管手段已经无法满足用户对于多端、多场景、多系统的实时掌控需求。华鲸远…
资讯 2025-05-02
8,291
华鲸远程监控APP · 全场景监控手机一切内容解决方案
让每一次手机使用,都在您的掌控之中 在这个移动设备几乎等同于“第二大脑”的时代,一部手机所承载的不只是通讯工具,更是一个人的社交网络、思想痕…
资讯 2025-05-02
16,037
华鲸手机监控软件 | 全系统兼容的隐形远程管理专家
一、重新定义远程监控:不被发现,才是真安全 在数字世界日益庞大的今天,如何悄无声息地掌握关键信息,守护家庭成员的行为安全或管理企业设备使用,…
资讯 2025-05-02
25,830
手机远程控制别人手机智能管理解决方案
一、品牌使命:掌控信息,不失信任 在信息泛滥的时代,手机已成为人与世界连接的主要入口,也因此成为风险的高发区。华鲸品牌诞生的初衷,是为了给家…
资讯 2025-05-02
12,644
华鲸远程手机管理系统—管控数字边界,守护每一份责任
你能时时守护孩子的视线,却未必看清他们的数字生活 孩子每天对着手机的时间,远远超过他们与家人对话的时间。短视频诱惑、游戏沉迷、陌生人社交、深…
资讯 2025-05-02
12,457

扫描二维码

手机访问本站