App测试基础知识
App测试,是指对移动应用软件(如手机app、平板app等)进行全面和系统的测试,以确保其功能、性能、安全性、稳定性、兼容性等方面能满足用户的使用需求和期望。
App常见运行系统
-
IOS系统:
-
IOS系统是苹果公司推出的一款封闭式手机操作系统。
-
其主要开发语言是Objective-C、 Swift。
-
只能运行在苹果的移动设备上。
-
IOS系统的版本只能升级,不能降级。
-
-
Android系统:
由于Android系统开放源代码的特性,各个手机制造商可以基于Android系统开发出自己的定制系统,这些定制系统在保留了Android系统核心功能的基础上,增加了各自的特色功能和用户界面设计。
eg:-
三星-One UI:在Android基础上增加了一些特有的功能,如边缘屏幕、SPen笔功能等。
-
华为-EMUI:它添加了许多华为自有的功能,如一键优化、手机克隆等。
-
小米-MIUI:它改变了Android的许多默认界面,同时增加了许多小米特色的功能,如安全中心、小爱同学等。
-
OPPO-ColorOS:它在Android基础上进行了大量的界面和功能修改,例如添加了OPPO特有的智能助手、游戏空间等。
-
...
-
Android系统是谷歌公司以Linux为核心,开发、发行的一个智能的、开放式的软件平台。
-
其主要开发语言是Java 、 Kotlin。
-
可运行在各品牌的移动设备上。
-
Android系统的版本可升、可降。
-
在设计上,Android系统明显更多样化,辅助工具也明显多于IOS。
-
在兼容性问题上,Android也需要比IOS考虑得多一些。
-
-
HarmonyOS系统
-
HarmonyOS系统是华为自主研发的操作系统,采用了全新的微内核架构。
-
为了保证应用的兼容性,鸿蒙系统设计了一套兼容层,可以兼容 Android 应用。
-
-
Windows系统
-
.....
测试包安装
-
IOS安装:
-
安装包后缀:ipa
-
可通过Xcode、蒲公英等安装
-
ios测试包安装后,需要信任此 App
-
-
Android安装:
-
安装包后缀:apk
-
可通过浏览器、ADB工具等安装
-
App专项测试
App测试和web的测试之间的主要区别在于用户与软件交互的方式,用户在App上的操作方式和在浏览器上的操作习惯也大不相同。App 需要考虑各种类型的网络状况,还有电话、短信等中断性的事件。
所以在测试App时,我们不仅需要关注功能测试,还需要关注App的专项测试:
-
性能测试:包括测试App在各种网络环境下的加载速度,以及在多任务处理时的表现。
-
安全性测试:确保App在数据传输、存储等方面的安全性,防止数据泄露或被恶意攻击。
-
稳定性测试:测试App在各种极端情况下(如网络不稳定、内存不足等)的表现,以及其崩溃恢复的能力。
-
兼容性测试:测试App在各种设备、操作系统、浏览器等不同环境下的表现。
-
用户体验测试:评估App的易用性、交互性、视觉体验等,以提升用户满意度。
-
....
App测试常见缺陷
-
功能性缺陷:当App的某个功能无法正常工作时,通常需要开发人员对代码进行调试和修复。例如,如果一个按钮无法正确触发事件,可能需要检查事件处理代码,确认是否存在错误或遗漏。
-
性能问题:如果App加载缓慢或响应迟钝,可能需要对App进行性能优化。这可能包括优化代码,减少不必要的计算和内存使用,或者升级服务器配置。也可以考虑使用懒加载、缓存等技术来提升性能。
-
兼容性问题:如果App在某些设备或操作系统上无法正常运行,可能需要对App进行兼容性测试和优化。这可能包括使用更通用的代码和API,或者为特定的设备和系统提供特殊的适配方案。
-
安全性问题:如果App存在数据泄露或被攻击的风险,需要对App进行安全性加固。这可能包括加密数据,验证用户输入,防止SQL注入和XSS攻击,使用HTTPS等安全协议,以及定期更新和打补丁。
-
用户体验问题:如果App的操作流程复杂,界面设计不友好,可能需要对App进行用户体验优化。这可能包括简化操作流程,优化界面布局和颜色,提供更清晰的提示和反馈等
App特有性bug举例:
-
当用户在使用应用时接听来电,应用崩溃
-
当用户切换至另一应用时崩溃
-
当用户未主动使用它时,消耗系统资源
-
当用户离开应用并在稍后返回时,丢失用户的进度
-
当屏幕在横向和纵向之间旋转时,崩溃或丢失用户的进度
-
当用户切换界面时,卡顿
-
...
App常用测试工具
其中Charles是我们几乎最常用的测试工具,在做App测试时,我们为了分析App端与服务器端的网络通讯协议,常常需要截取网络封包来分析,Charles提供了强大的功能,可以供我们分析网络请求 ,例如:
-
查看网络请求信息
-
修改网络请求和返回
-
模拟弱网环境
-
简单的压力测试
-
...
安装和使用教程可参考:抓包工具的使用_Charles
App测试流程要点解析
- 集成测试:
一个App中功能繁多,为了提高功能发布效率,常将App中的各个功能模块,分别进行开发、测试,然后再将各模块的新功能代码合并到一起。
在功能测试阶段,我们都是在各自模块的新功能代码中进行测试,在各个模块单独测试通过之后,各模块的新功能代码将合并,此时我们将进行集成测试,再次验证各自的新功能及各个模块之间的交互是否正常,以确保各个模块能够正常协同工作,提供预期的功能。
- 渠道包测试:
在Android应用开发中,由于存在多个应用市场和发布平台,开发者通常需要为每个平台创建一个定制的应用程序包。这些定制的应用程序包可能会包含一些特定的配置、插件或SDK,以满足该平台的特定要求。这些定制的应用程序包被称为渠道包。
渠道包测试是针对不同发布渠道定制的应用程序包进行的测试,确保在不同的发布平台上,应用程序都能正常运行并提供一致的用户体验。
- BAT测试:
对App进行基础功能验证,确保基本功能可用。此阶段执行的测试用例是最核心的用例,因此用例数量非常精简,主要用于进行快速的回归测试。
App测试的挑战和发展趋势
挑战
- 设备和平台的多样性
移动设备的品牌、型号、屏幕尺寸、分辨率、操作系统及其版本等因素都非常多样化,这对App的兼容性测试提出了很大的挑战。
- 操作系统的更新频繁
移动操作系统经常会进行更新和升级,这可能导致App出现兼容性问题。
- 网络环境的不稳定
移动设备的网络环境相比桌面设备来说更不稳定,可能会频繁切换网络,或者网络信号弱等,这对App的网络性能和稳定性提出了高要求。
- 测试资源的限制
与桌面软件测试相比,移动App测试通常需要更多的设备和更复杂的测试环境,可能会导致测试资源的短缺。
- 安全性和隐私问题
移动设备通常会存储大量的个人信息,如联系人、照片、位置信息等,这使得App在处理这些信息时需要更加小心,防止数据泄露。
- 用户体验的挑战
移动设备的操作方式(如触屏、重力感应等)和使用场景(如移动中、户外、噪音环境等)与桌面设备有很大的不同,这对App的用户体验设计和测试提出了新的挑战。
- 测试自动化的难度
由于移动设备的特殊性,App测试的自动化往往比桌面软件测试更加困难。
- ...
发展趋势
- 测试自动化
由于移动设备种类繁多,手动进行全面的测试工作既耗时又耗力。因此,测试自动化被看作是提高测试效率和质量的关键。许多工具和框架(如Appium、Selenium等)都在支持移动App自动化测试。
-
云测试:云测试能提供各种设备和环境,方便进行大规模和全面的测试。随着云计算的发展,云测试可能会成为主流。
-
AI和机器学习
随着人工智能和机器学习技术的发展,它们开始被应用到App测试中。例如,可以利用机器学习分析测试结果,预测和定位缺陷;或者使用AI自动生成测试用例。
- ...