App测试入门

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

  • ...

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MLC-LLM 支持RWKV-5推理以及对RWKV-5的一些思考

自从2023年3月左右,chatgpt火热起来之后,我把关注的一些知乎帖子都记录到了这个markdown里面,:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/large-language-model-note ,从2023年3月左右到现…

编写程序,要求输入x的值,输出y的值。分别用(1)不嵌套的if语句(2)嵌套的if语句(3)if-else语句(4)switch语句。

编写程序,要求输入x的值,输出y的值。分别用(1)不嵌套的if语句(2)嵌套的if语句(3)if-else语句(4)switch语句。 选择结构是编程语言中常用的一种控制结构&…

OpenGL 的学习之路-4(变换)

三大变换:平移、缩放、旋转(通过这三种变换,可以将图像移动到任意位置) 其实,这背后对应的数学在 闫令琪 图形学课程 中有过一些了解,所以,理解起来也不觉得很困难。看程序吧。 1.画三角形&am…

量化交易:公司基本面的量化

公司的基本面因素一直具备滞后性,令基本面的量化出现巨大困难。而从上市公司的基本面因素来看,一般只有每个季度的公布期才会有财务指标的更新,而这种财务指标的滞后性对股票表现是否有影响呢?如何去规避基本面滞后产生的风险呢&a…

网站SEO优化

网站SEO优化 浏览722 一、合理的title、description、keywords 搜索对着三项的权重逐个减小,title值强调重点即可;description把页面内容高度概括,不可过分堆砌关键词;keywords列举出重要关键词。 1、title title,…

【教3妹学编程-java基础6】详解父子类变量、代码块、构造函数执行顺序

-----------------第二天------------------------ 本文先论述父子类变量、代码块、构造函数执行顺序的结论, 然后通过举例论证,接着再扩展,彻底搞懂静态代码块、动态代码块、构造函数、父子类、类加载机制等知识体系。 温故而知新&#xff…

ZYNQ_project:LCD

模块框图: 时序图: 代码: /* // 24h000000 4324 9Mhz 480*272 // 24h800000 7084 33Mhz 800*480 // 24h008080 7016 50Mhz 1024*600 // 24h000080 4384 33Mhz 800*480 // 24h800080 1018 70Mhz 1280*800 */ module rd_id(i…

【MySQL】InnoDB和MyISAM区别详解(MySQL专栏启动)

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于…

OpenCV C++ 图像 批处理 (批量调整尺寸、批量重命名)

文章目录 图像 批处理(调整尺寸、重命名)图像 批处理(调整尺寸、重命名) 拿着棋盘格,对着相机变换不同的方角度,采集十张以上(以10~20张为宜);或者棋盘格放到桌上,拿着相机从不同角度一通拍摄。 以棋盘格,第一个内焦点为坐标原点,便于计算世界坐标系下三维坐标; …

【代码随想录】算法训练计划24

回溯模板: 1、77. 组合 题目: 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 思路: 很经典的回溯,也是回溯中模板的经典应用,因而是回溯中的简单题…

97.qt qml-自定义Table之实现ctrl与shift多选

我们之前实现了:93.qt qml-自定义Table优化(新增:水平拖拽/缩放自适应/选择使能/自定义委托)-CSDN博客 实现选择使能的时候,我们只能一行行去点击选中,非常麻烦,所以本章我们实现ctrl多选与shift多选、 所以在Table控件新增两个属性: 1.实现介绍 ctrl多选实现原理:当我…

Redis新操作

1.Bitmaps 1.1概述 Bitmaps可以对位进行操作,实际上它就是一个字符串,可以将Bitmaps想象为一个以位为单位的数组,数组中的每个元素只能存储0或者1,数组的下标在Bitmaps被称为偏移量。 setbit key offset value:设置o…

Filter和ThreadLocal结合存储用户id信息

ThreadLocal并不是一个Thread,而是Thread的局部变量。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。ThreadLoc…

M2 Mac Xcode编译报错 ‘***.framework/‘ for architecture arm64

In /Users/fly/Project/Pods/YYKit/Vendor/WebP.framework/WebP(anim_decode.o), building for iOS Simulator, but linking in object file built for iOS, file /Users/fly/Project/Pods/YYKit/Vendor/WebP.framework/WebP for architecture arm64 这是我当时编译模拟器时报…

cesium 重点区域大屏展示效果(加载行政区划)

cesium 重点区域大屏展示效果(配色不太好看,主要看思路和方法) 1、实现思路(文张最后有**源码 **) 1、第一步将cesium背景调成透明关掉光照大气等效果相关属性都在“viewer.scene”中 2、第二步添加背景图片此背景图片直接用html加css就可以完成 3、第三步添加蒙版效果也…

汇编基础知识

1.1 机器语言 机器语言就是一些二进制代码,存放在内存中。它是机器指令的集合,所谓机器指令就是机器能够正确执行的命令 1.2 汇编语言的产生 1.汇编语言的主体是汇编指令 2.汇编指令实际上就是机器指令的助记符。它们的唯一区别在于书写方式上 寄存器…

S7-1200PLC 作为MODBUSTCP服务器通信(多客户端访问)

S7-1200PLC作为MODBUSTCP服务器端通信编程应用,详细内容请查看下面文章链接: ModbusTcp通信(S7-1200PLC作为服务器端)-CSDN博客文章浏览阅读239次。S7-200Smart plc作为ModbusTcp服务器端的通信S7-200SMART PLC ModbusTCP通信(ModbusTcp服务器)_s7-200 …

Linux嵌入式I2C协议笔记

硬件: 1.I2C结构 在一个SOC中有一个或者多个I2C控制器,一个I2C控制器可以连接一个或多个I2C设备。 I2C总线需要两条线,时钟线SCL和数据线SDA 2.I2C传输数据格式 开始信号(S):SCL为高电平时,SDA山高电平向低电平跳变,开始传送数据。结束信号(P):SCL为高电平时,SDA…

Python中的实例属性和类属性

在这篇文章中,我们将探讨Python中的类是如何工作的,主要介绍实例和类的属性。这些属性是什么,它们之间的区别,以及创建和利用它们的python方法。 类属性与实例属性 首先,我们需要知道什么是实例。实例是属于类的对象。…

Docker安装Zookeeper

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…