App测试入门

news/2024/10/27 21:19:35/

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为核心,开发、发行的一个智能的、开放式的软件平台。

    • 其主要开发语言是JavaKotlin

    • 可运行在各品牌的移动设备上。

    • 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自动生成测试用例。

  • ...


http://www.ppmy.cn/news/1225897.html

相关文章

Flutter 应用启动从闪屏页短暂黑屏再到第一个页面

由于应用初始状态启动会有白屏现象,便使用 flutter_native_splash 2.3.5 插件生成了启动相关的配置,并且按照示例使用了 import package:flutter_native_splash/flutter_native_splash.dart;void main() {WidgetsBinding widgetsBinding WidgetsFlutte…

高校教师资格证备考

高等教育制度 关于人的全面发展和个体发展的关系,说法正确的是(ABC)。 A.个体发展是在全面发展基础上的选择性发展 B.全面发展是个体发展的前提和基础 C.个体发展又是全面发展的动力 D.个体发展是全面发展的前提和基础

MSYS2介绍及工具安装

0 Preface/Foreword 1 MSYS2 官网:MSYS2

界面组件DevExpress Reporting v23.1亮点 - 全新升级报表查看器

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表 界面组件DevExpress Reporting v23.1已经发布一段…

如何零基础自学AI人工智能

随着人工智能(AI)的快速发展,越来越多的有志之士被其强大的潜力所吸引,希望投身其中。然而,对于许多零基础的人来说,如何入门AI成了一个难题。本文将为你提供一份详尽的自学AI人工智能的攻略,帮…

(二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、数据集二、导入数据以及展示部分1.导入数据集以及对数据集进行处理2.展示数据(看看就好) 三(1)、搭建网络进…

C#可空类型

在C#中,可空类型(Nullable types)允许值类型(比如int, double, bool等)接受null值。这是特别有用的,因为在很多应用程序中,如数据库交互和数据解析,值类型的字段可能需要表示没有值&…

C++加持让python程序插上翅膀——利用pybind11进行c++和python联合编程示例

目录 0、前言1、安装 pybind11库c侧python侧 2、C引入bybind11vs增加相关依赖及设置cpp中添加头文件及导出模块cpp中添加numpy相关数据结构的接收和返回编译生成dll后改成导出模块同名文件的.pyd 3、python调用c4、C引入bybind11 0、前言 在当今的计算机视觉和机器学习领域&am…