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

  • ...

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务容错之限流之 Tomcat 限流 Tomcat 线程池的拒绝策略

在文章开头,先和大家抛出两个问题: 每次提到服务限流为什么都不考虑基于 Tomcat 来做呢?大家有遇到过 Tomcat 线程池触发了拒绝策略吗? JUC 线程池 在谈 Tomcat 的线程池前,先看一下 JUC 中线程池的执行流程&#x…

【Linux】进程间通信 -- 共享内存

共享内存 共享内存是SystemV标准进程间通信的一种&#xff0c;该标准还有消息队列和信号量&#xff0c;但下文主要介绍共享内存&#xff0c;然后在谈一下信号量的内容。SystemV标准的进程间通信可以看做单机版的进程间通信。 // 1. log.hpp #pragma once#include <iostrea…

Java(一)(引用类型的参数在传递,方法重载,面向对象编程基础)

基本类型和引用类型的参数在传递的时候有什么不同? 基本类型的值传递:参数传输存储的数据值 引用类型的值传递:参数传输存储的地址值 传递数组名字的时候,传递的是数组的地址,change方法可以通过地址直接访问我们在堆内存中开辟的数组,然后改变数组,数组中的元素发生变化 方…

K-Means算法进行分类

已知数据集D中有9个数据点&#xff0c;分别是&#xff08;1,2&#xff09;&#xff0c;(2,3), (2,1), (3,1),(2,4),(3,5),(4,3),(1,5),(4,2)。采用K-Means算法进行聚类&#xff0c;k2&#xff0c;设初始中心点为&#xff08;1.1,2.2&#xff09;&#xff0c;&#xff08;2.3,3.…

在Rust编程中使用泛型

1.摘要 Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义, 这样它们就可以用于多种不同的具体数据类型。下面的内容将涉及泛型定义函数、结构体、枚举和方法, 还将讨论泛型如何影响代码性能。 2.在函数定义中使用泛型 当使用泛型定义函数时&#xff0c;本来在函…

竞赛选题 疲劳驾驶检测系统 python

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#x…

基于Adapter用CLIP进行Few-shot Image Classification

文章目录 【ECCV 2022】《Tip-Adapter: Training-free Adaption of CLIP for Few-shot Classification》【NeuIPS 2023】《Meta-Adapter: An Online Few-shot Learner for Vision-Language Model》 【ECCV 2022】《Tip-Adapter: Training-free Adaption of CLIP for Few-shot C…

使用Redis实现分布式锁

Hi, I’m Shendi 使用Redis实现分布式锁 需求场景 需要使用到分布式锁的场景非常多&#xff0c;例如抢单等并发场景&#xff0c;这里举一个例子。 有一个商品&#xff0c;限量出售100个&#xff0c;一个用户下单&#xff0c;数量就减少一个&#xff0c;当剩下最后一个时&…

Unity在Windows选项下没有Auto Streaming

Unity在Windows选项下没有Auto Streaming Unity Auto Streaming插件按网上说的不太好使最终解决方案 Unity Auto Streaming插件 我用的版本是个人版免费版&#xff0c;版本号是&#xff1a;2021.2.5f1c1&#xff0c;我的里边Windows下看不到Auto Streaming选项,就像下边这张图…

基于猕猴感觉运动皮层Spike信号的运动解码分析不同运动参数对解码的影响

公开数据集中文版详细描述参考前文&#xff1a;https://editor.csdn.net/md/?not_checkout1&spm1011.2124.3001.6192神经元Spike信号分析参考前文&#xff1a;https://blog.csdn.net/qq_43811536/article/details/134359566?spm1001.2014.3001.5501神经元运动调制分析参考…

CUDA编程一、基本概念和cuda向量加法

目录 一、cuda编程的基本概念入门 1、GPU架构和存储结构 2、cuda编程模型 3、cuda编程流程 二、cuda向量加法实践 1、代码实现 2、代码运行和结果 有一段时间对模型加速比较感兴趣&#xff0c;其中的一块儿内容就是使用C和cuda算子优化之类一起给模型推理提速。之前一直…

HAL库STM32串口开启DMA接收数据

STM32CubeMx的配置 此博客仅仅作为记录&#xff0c;这个像是有bug一样&#xff0c;有时候好使&#xff0c;有时候不好&#xff0c;所以趁现在好使赶紧记录一下&#xff0c;很多地方用到串口接收数据&#xff0c;DMA又是一种非常好的接收方式&#xff0c;可以节约CPU的时间&…