热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

移动应用专项测试思路和方法

在之前的文章简单介绍了移动端应用类型及特点https:blog.csdn.netdou_beingarticledetails119304770,这篇文章主要介绍We

在之前的文章简单介绍了移动端应用类型及特点https://blog.csdn.net/dou_being/article/details/119304770,这篇文章主要介绍Web  App、Native App 和 Hybrid App三类不同移动应用的测试方法以及移动应用专项测试的思路和方法:

一、Web  App、Native App 和 Hybrid App三类不同移动应用的测试方法

1、Web  App测试:其本质就是 Web 浏览器的测试,测试方法基本上同Web浏览器测试

2、Native App测试:不同的平台会使用不同的自动化测试方案,比如,iOS 一般采用 XCUITest Driver,而 Android 一般采用 UiAutomator2 或者 Espresso 等。但是数据驱动、页面对象以及业务流程封装的思想是相通的,可以把这些方法应用到测试用例设计中

3、Hybrid App 测试:对 Native Container 的测试,可能需要用到 XCUITest 或者 UiAutomator2 这样的原生测试框架,而对 Container 中 HTML5 的测试,基本和传统的网页测试没什么区别,所以原本基于 GUI 的测试思想和方法都能继续适用。

注意:Native Container 和 Webview 分别属于两个不同的上下文(Context),Native Container 默认的 Context 为“NATIVE APP",而 Webview 默认的 Context 为“WEBVIEW_+ 被测进程名称”

二、移动应用专项测试的思路和方法

1.移动应用专项测试最主要的有:交叉事件测试、兼容性测试、流量测试、耗电量测试、弱网络测试、边界测试

2.交叉事件测试:

(1)交叉事件测试也叫中断测试,是指 App 执行过程中,有其他事件或者应用中断当前应用执行的测试。比如,App 在前台运行过程中,突然有电话打进来,或者收到短信,再或者是系统闹钟等等情况。

(2)交叉事件测试,需要覆盖的场景主要包括:


  • App 运行时接听电话

  • App 运行时接收信息

  • App 运行时提示系统升级

  • App 运行时发生系统闹钟事件

  • App 运行时进入低电量模式

  • App 运行时第三方安全软件弹出告警

  • App 运行时发生网络切换,比如,由 Wifi 切换到移动 4G 网络,或者从 4G 网络切换到 3G 网络等

(3)此类测试目前基本还都是采用手工测试的方式,并且都是在真机上进行,不会使用模拟器。

3.兼容性测试:

(1)容性测试顾名思义就是,要确保 App 在各种终端设备、各种操作系统版本、各种屏幕分辨率、各种网络环境下,功能的正确性。

(2)常见的App兼容性测试主要覆盖以下场景:


  • 不同操作系统的兼容性,包括主流的 Andoird 和 iOS 版本

  • 主流的设备分辨率下的兼容性

  • 主流移动终端机型的兼容性

  • 同一操作系统中,不同语言设置时的兼容性

  • 不同网络连接下的兼容性,比如 Wifi、GPRS、EDGE、CDMA200 等

  • 在单一设备上,与主流热门 App 的兼容性,比如微信、抖音、淘宝等

(3)兼容性测试,通常都需要在各种真机上执行相同或者类似的测试用例,所以往往采用自动化测试的手段。

4.流量测试:

(1)由于 App 经常需要在移动互联网环境下运行,而移动互联网通常按照实际使用流量计费,所以如果 App 耗费的流量过多,那么一定不会很受欢迎

(2)流量测试通常包含以下几方面的内容:


  • App 执行业务操作引起的流量

  • App 在后台运行时的消耗流量

  • App 安装完成后首次启动耗费的流量

  • App 安装包本身的大小

  • App 内购买或者升级需要的流量

(3)流量测试,往往借助于 Android 和 iOS 自带的工具进行流量统计,也可以利用 tcpdump、Wireshark 、 Fiddler 和Charles等网络分析工具

(4)对于 Android 系统,网络流量信息通常存储在 /proc/net/dev 目录下,也可以直接利用 ADB 工具获取实时的流量信息

(5)对于 iOS 系统,可以使用 Xcode 自带的性能分析工具集中的 Network Activity,分析具体的流量使用情况

(6)减少app消耗流量的一些常用方法:


  • 启用数据压缩,尤其是图片

  • 使用优化的数据格式,比如同样信息量的 JSON 文件就要比 XML 文件小

  • 遇到既需要加密又需要压缩的场景,一定是先压缩再加密

  • 减少单次 GUI 操作触发的后台调用数量

  • 每次回传数据尽可能只包括必要的数据

  • 启用客户端的缓存机制

5.耗电量测试:

(1)耗电量测试主要从3个方面来考量:


  • App 运行但没有执行业务操作时的耗电量

  • App 运行且密集执行业务操作时的耗电量

  • App 后台运行的耗电量

(2)耗电量检测方法:


  • Android 通过 adb 命令“adb shell dumpsys battery”来获取应用的耗电量信息

  • iOS 通过 Apple 的官方工具 Sysdiagnose 来收集耗电量信息,然后,可以进一步通过 Instrument 工具链中的 Energy Diagnostics 进行耗电量分析

6.弱网测试:

(1)移动应用的测试需要保证在复杂网络环境下的质量。具体的做法就是:在测试阶段,模拟这些网络环境,在 App 发布前尽可能多地发现并修复问题

7.边界测试:

(1)边界测试是指,移动 App 在一些临界状态下的行为功能的验证测试,基本思路是需要找出各种潜在的临界场景,并对每一类临界场景做验证和测试

(2)主要场景:


  • 系统内存占用大于 90%

  • 系统存储占用大于 95%

  • 飞行模式来回切换

  • App 不具有某些系统访问权限的场景,比如 App 由于隐私设置不能访问相册或者通讯录等

  • 长时间使用 App,系统资源是否有异常,比如内存泄漏、过多的链接数等

  • 出现 ANR 的场景

  • 操作系统时间早于或者晚于标准时间

  • 时区切换的场景

欢迎关注公众号:


推荐阅读
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
author-avatar
手机用户2602883115
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有