面试必备之安卓APP测试知识大全(值得收藏)

news2024/9/24 11:26:41

目录

一、安卓系统知识概述

1.1 安卓系统架构

1.2 安卓权限系统

1.3 认识adb与安卓间的通信

二、安卓APP测试流程图(转)

三、安卓App测试点

3.1 UI测试

3.2 兼容性测试

3.3 安装卸载/本地升级测试OTA

3.4 版本在线升级测试FOTA

3.5 交互测试

3.6 并发测试

3.7 客户端数据库测试

3.8 接口测试

3.9 性能测试

3.10 安全性测试

3.10 其他测试

四、工具技术(第三方)

4.1 系统监控常用ADB命令

4.2 需要功能

4.3 实现原理

总结:


一、安卓系统知识概述

1.1 安卓系统架构

  • 应用程序层

  • 应用程序框架层

  • 系统运行库库层

  • 系统内核层

  • 四大组件和API

1.2 安卓权限系统

Android操作系统其实是一个多用户的linux操作系统,每个android应用使用不同的用户,运行在自己的安全沙盘里。系统为所有的文件设置权限,这样一来只有同一个用户的应用可以访问它们。每个应用都有自己单独的虚拟机,这样应用的代码在运行时是隔离的,即一个应用的代码不能随意访问或者意外修改其他应用的内部数据。

1.3 认识adb与安卓间的通信

ADB,即Android Debug Bridge,他是Android提供的一个通用的调试工具,借助这个工具,我们可以很好的调试开发的程序,adb.exe在安装的Android的sdk开发包platform-tools目录下。

它是一个客户端/服务器架构的命令行工具,主要由以下3个部分组成:

  • adb客户端:一个用于用户开发程序的电脑上运行的客户端

  • adb服务端:负责客户端与用户设备的守护进程的通信

  • adb daemon(守护进程):一个以后台进程的形式运行于模拟器或者物理手机设备上的守护程序

 

二、安卓APP测试流程图(转)

 

三、安卓App测试点

3.1 UI测试

  • 按钮、对话框、列表和窗口等静态界面测试

  • 内容(列表页、提示框)等动态界面测试

  • APP与系统相关联之处的UI测试,如:状态栏/锁屏弹出的提示,设置中的应用显示、手机界面的APP显示等

  • APP与launcher间的交互、与系统其它应用间的交互、与系统本身的交互UI测试

3.2 兼容性测试

  • 不同手机品牌

  • 不同手机的操作系统以及操作系统的不同版本

  • 不同手机屏幕分辨率和不同屏幕尺寸(一般测试主流分辨率)

  • 网络环境的兼容性 (WiFi、移动网络、弱网环境、无网络环境、专网环境)

  • 与本地软件的兼容性

  • APP匹配硬件设备测试(耳机、蓝牙、NFC、照相机、手环等等)--根据APP的业务需求特性

3.3 安装卸载/本地升级测试OTA

  • 应用程序的正常安装,图标显示正常,安装后正常运行(不同操作系统下安装)、版本号是否正确

  • 不同版本之间的覆盖安装(版本一致,版本大于、版本小于)

  • 覆盖安装后,用户数据的保留

  • 应用程序的正常卸载,卸载后用户数据是否删除

  • 安装/卸载过程中异常情况(断电,空间不足等)

  • 安装/卸载过程是否支持取消操作

  • 手动式、命令式adb、自动式(第三方辅助工具)安装

  • 安装前后恢复出厂设置,app/数据是否丢失、版本是否改变

  • 安装/卸载权限,是否有安装卸载权限,无权限时是否可安装,

  • root前后安装测试

  • 直接拷贝至手机system/app目录下是否直接使用

3.4 版本在线升级测试FOTA

  • 当客户端有新版本时,有更新提示。

  • 当版本为非强制升级版时,用户可以取消更新,老版本能正常使用。用户在下次启动app时,仍能出现更新提示。

  • 当版本为强制升级版时,当给出强制更新后用户没有做更新时,退出客户端。下次启动app时,仍出现强制升级提示。

  • 当客户端有新版本时,在本地不删除客户端的情况下,直接更新检查是否能正常更新。

  • 用户下载/安装版本过程中断网或断电异常情况,是否可恢复,是否支持断电下载

  • 恢复出厂设置后是否可以支持修改

  • 下载升级包后删除,是否还可以在继续下载/是否还有推送提示

  • 整机FOTA升级、独立APP应用FOTA升级策略

3.5 交互测试

  • 应用的前后台切换

  • 杀进程

  • 锁屏

  • 长时间待机

  • 中断

  • 摇一摇、翻转

  • 开关机、重启

3.6 并发测试

  •    应用与应用间并发场景---使用APP时接收微信/QQ等来信(含视频呼叫)

  •    应用与定位场景----使用APP时不影响定位准确性

  •    应用与通话/短信场景----使用APP时来电话/短信

  •    应用与多媒体场景 ----使用APP时播放音乐/电影

  •   应用与流量并发冲突场景----使用APP时数据业务流量/wifi使用不受影响,且稳定,没有过大消耗流量场景

  •   应用并发时的功耗和数据流量场景

 

3.7 客户端数据库测试

  • 客户端后台数据的增、删、改、查等数据更新测试

  • 数据为空的情况测试

  • 检查客户端数据存在时,app数据是否能自动从客户端数据中取出,检查客户端数据存在时,app数据是否能自动从客户端数据中取

  • 当业务对数据进行了修改、删除后,客户端和服务端是否会有相应的更新。

  • 没有root权限,是否可以删除全部或重要系统文件,会导致app或手机无法使用的文件

3.8 接口测试

  • 业务逻辑功能测试

  • 边界值测试

  • 参数组合测试

  • 异常情况测试

3.9 性能测试

  • 单位时间耗电量----功耗:软件手段(工具、log)、硬件手段(电流表仪器)、其他策略(专项待机、随机待机、非待机)

  • 单位时间网络流量---公网数据/wifi流量、吞吐量

  • 移动端相关资源利用率---CPU、内存容量是否影响

  • 业务响应时间----响应速度

  • 帧率                ----流畅度

  • 稳定性

  • 可靠性/可恢复性

  • 压力测试

3.10 安全性测试

  • 反编译测试--代码示否混淆(逆向工程)

  • app签名/密钥/加密测试

  • 完整性校验

  • 敏感信息测试

  • 软键盘劫持

  • 权限设置检查--root

  • 组件安全测试--四大组件:Activity、Service、ContentProvider、Broadcast

  • 服务端接口测试

  • 攻击类测试--SQL注入、XSS跨站脚本攻击、CSRF跨站请求伪造、越权访问

  • 安全测试工具--扫描

  • 基础环境--公网环境、网络环境、数据存放环境

  • 数据安全(传输、通信、账户安全)

  • 程序/代码安全--后门

  • 业务安全

3.10 其他测试

  • 认证测试

  • 扣费测试

  • 应用商店发布测试

  • 上传下载测试

  • 模拟用户体验测试----测试人员测(公司内部人员)

  • 用户体验测试----给实际用户使用(非公司内部人员)

四、工具技术(第三方)

4.1 系统监控常用ADB命令

1.4.1 查看应用启动耗时

adb-s   *******设备id******    shell  am start -W -n 应用名.app/ .MainActivity

1.4.2 获得电池电量和电池温度

adb shell dumpsys battery

1.4.3 获得最耗资源的应用

adb -s ***设备id *** shell top -m 6 -n l -s cpu

1.4.4 获得内存使用情况

adb -s  ***设备***id  adb shell dumpsys meminfo 应用程序包名

1.4.5 获取指定程序cpu使用情况

adb -s  ***设备***id  shell dumpsys cpuinfo 应用程序包名

1.4.6 获取指定程序PID

adb shell "ps | grep packageName"

4.2 需要功能

  • 检测当前时间被测应用的CPU使用率 以及 总体CPU使用量。

  • 检测当前时间被测应用占用的内存量、百分比,剩余内存量。

  • 检测应用从启动开始到当前时间消耗的流量数。

  • 测试数据写入到CSV文件中,存储在手机/storage/sdcard0目录下,同时支持以邮件形式发送文件。

  • 可以选择开启浮窗功能,浮窗中实时显示被测应用占用性能数据信息。

  • 在浮窗中可以快速启动或者关闭手机的wifi网络。

4.3 实现原理

4.3.1 监控CPU的实现原理

Android系统是基于Linux内核的,所以系统文件的结构和Linux下一样,系统总体CPU使用信息放在/proc/stat文件下,/proc/cpuinfo文件存放CPU的其它信息,包括CPU名称,直接读取即可。Emmagee是将选中应用的PID传入,读取/proc/PID/stat文件信息及可获取该PID对应程序的CPU信息。

4.3.2 监控内存的实现原理

内存和cpu的处理方式类似。先获取到当被测应用的PID,然后按照PID从 /proc/meminfo文件中获取当前被测应用占用的内存信息。

4.3.3 监控流量消耗的实现原理

系统中有存放整体流量和针对当程序的流量统计,/proc/net/dev和/proc/uid_stat/UID下存放tcp_rcv和tcp_send文件,分别存放下行流量和上行流量,操作前后相减就得出结果 。

4.3.4 监控电量的实现原理

电量、电压和温度情况是通过监听系统的电池管理事件的广播来获取的。

4.3.5 监控启动时间的实现原理

我们点击界面的开始测试时,程序会启动,之后所有的数据统计以及更新进行处理的。会在onStartCommand()里面启动一个线程“handler.postDelayed(task, 1000)”,进行数据的更新同时会尝试通过ActivityManger从logcat中获取到软件的启动时间。

红色框框内的东西就是通过调用一个管理Android帧缓冲区的系统服务SurfaceFlinger来获取用于计算fps的帧数据,具体可参考:Android fps的计算方式。

总结:

感谢每一个认真阅读我文章的人!!!

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

   Python自动化测试学习交流群:全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DhOSZDNS-qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198408628

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/710474.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记录--让整个网站界面无滚动条

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 界面无滚动条 滚动条的优化也有很多种,比如随便再网上搜索美化浏览器滚动条样式,就会出现些用css去美化滚动条的方案。 那种更好呢? 没有更好只有更合适 像默认的滚…

【网络安全入门】001、基础入门-概念名词

文章目录 基础入门-概念名词1、域名(1)什么是域名(2)域名在哪里注册(3)什么是二级域名多级域名(4)域名发现对于安全测试的意义? 2、DNS(1)什么是D…

C语言编程:坐标系的平移和旋转

本文总结博主在工作中遇到的坐标系转换相关问题,以及C语言编程实现。 文章目录 1 问题场景2 公式推导2.1 旋转坐标系推导2.2 平移坐标系推导2.3 完整公式 3 C语言编程 1 问题场景 对于ADAS算法开发,在工作中遇到过很多需要坐标系转换的场景。例如&…

进制转换(十进制与十六进制互转)

之前的一家公司基本上都是基于单片机进行开发,一般与上位机的通信都是按照自定义的协议进行操作,测试的时候会经常都对协议进行修改并且涉及到进制之间的转换,例如获取版本是十六进制的需要转换成十进制的版本信息,例如修改时间需…

013-从零搭建微服务-认证中心(五)

写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):https://gitee.com/csps/mingyue 源码地址(前端):https://gitee.com/csps…

LoRa模块(SX1278)详解

LoRa模块(SX1278) 0. LoRa概述概念LoRa技术的主要特点LoRa技术的工作原理 1. 常见的LoRa模块2. Semtech SX12783. STM32使用SX1278方法示例代码 0. LoRa概述 概念 LoRa(Long Range)是一种长距离、低功耗的无线通信技术&#xff…

被劫持的礼物

根据题目其实也猜得到这道题的大致考察内容 下载好后得到一个wireshark的流量文件 根据提示,flag是账号和密码组合的MD5值,想到登录,其实就想到两个登录框 也就是POST请求方法 打开文件后会也会得到一些 http的包,过滤一下 查看到…

线性DP—入门篇

线性动态规划的主要特点是状态转移的推导是按照问题规模 从小到大依次推导,较大规模的问题的解依赖较小规模的问题的解。 数字三角形: [USACO1.5][IOI1994]数字三角形 Number Triangles - 洛谷https://www.luogu.com.cn/problem/P1216我们来看一道经典…

ModaHub魔搭社区:向量数据库Milvus产品问题(三)

目录 Milvus 的数据落盘逻辑是怎样的? Mishards 推荐的配置是什么? Mishards 支持 RESTful API 吗? 什么是归一化?Milvus 中为什么有时候需要归一化? 为什么欧氏距离和内积在计算向量相似度时的结果不一致&#x…

【Git原理与使用】-- 分支管理

目录 理解分支 创建分支 查看当前分支 创建本地分支 切换分支 合并分支 删除分支 合并冲突 分支管理策略 分支策略 bug 分支 不建议的合并方式 建议的合并方式 第一步 第二步 删除临时分支 理解分支 分支就是科幻电影里面的平行宇宙,当你正在电脑前…

java 全局、局部异常处理详解及result结果封装

1、引入spring-boot-starter-web依赖和new-swagger依赖 <dependency><groupId>com.jjw</groupId><artifactId>new-swagger</artifactId><version>1.0-SNAPSHOT</version> </dependency> <dependency><groupId>or…

Linux系统编程:进程的替换

目录 一. 进程替换的原理 二. 进程替换的方法 2.1 进程替换的相关函数 2.2 进程替换为其它的C/C程序或其它语言编写的程序 三. 自主实现简单地命令行解释器 四. 总结 一. 进程替换的原理 进程替换&#xff0c;就是对进程所执行的代码进行替换&#xff0c;让正在运行的一个…

华为OD机试真题 Python 实现【简单的自动曝光】【2023Q1 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、备注五、解题思路六、Python算法源码七、效果展示1、输入2、输出3、说明4、再输入5、输出6、说明 一、题目描述 一个图像有 n 个像素点&#xff0c;存储在一个长度为 n 的数组 img 里&#xff0c;每个像素点的取值范围[0,255]的…

HOT33-排序链表

leetcode原题链接&#xff1a;排序链表 题目描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4]示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输出…

html内盒子长宽增加溢出但是外盒子不自动向下延

自动扩展 问题描述 外盒子设置固定px&#xff0c;导致内盒子如图片长宽增加后&#xff0c;溢出但是外盒子不自动扩展&#xff08;向下延申&#xff09; 图片高230时正常 设置250后超出 问题解决 /*height: 660px;*/ /*设死就不能自动扩展&#xff0c;内块块长宽超出&#x…

vuex-persistedstate —— 数据持久化

在之前的篇目当中对于 Vuex 中的相关内容都讲得差不多&#xff0c;但是在项目中去使用vuex&#xff0c;虽然数据状态得到管理了&#xff0c;但数据在每一次都需要去重新加载&#xff0c;那么对于数据的持久化vue是没有给解决的&#xff0c;而是通过第三方的工具去进行数据的持久…

代码随想录算法训练营第17期第4天(5休息) | 24. 两两交换链表中的节点、19. 删除链表的倒数第 N 个结点、面试题 02.07. 链表相交、​​​​​​142. 环形链表 II

目录 24. 两两交换链表中的节点 19. 删除链表的倒数第 N 个结点 面试题 02.07. 链表相交 ​​​​​​142. 环形链表 II 这题不是很难&#xff0c;目前除了从【.】变成了【->】之外&#xff0c;python和C也没啥区别 另外就是对虚拟头结点的掌握了 /*** Definition for …

爬虫小白入门在服务器上-部署爬虫或者开服务接口并供给他人访问

目录 一、准备工作-服务器1、先准备一个服务器&#xff08;以阿里云为例子&#xff09;2、开通服务端口号访问权限 二、准备工作-Xshell登录服务器1、xshell基本登录操作2、xftp基本操作 三、部署代码到服务器上1、部署一个python爬虫脚本在服务器上定时运行等2、部署一个pytho…

Java-API简析_占位符类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/131504916 出自【进步*于辰的博客】 因为我发现目前&#xff0c;我对Java-API的学习意识比较薄弱…

区块链开发:JS/TS本地|项目环境搭建

区块链开发&#xff1a;JS/TS本地|项目环境搭建 本地环境搭建VSCode Solidity扩展全局安装Solc,corepackVSCode配置本地Solc安装Ganache搭建JS虚拟环境 项目测试安装依赖编写代码部署合约test_blockchain.ts 设置Script部署查看 报错说明1. Error&#xff1a;missing revert da…