浅谈移动互联网App测试

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 该篇从各维度介绍了常见的移动互联网测试方法,测试思路可以借鉴。

前言

在移动互联网高速发展的今天,测试作为技术研发流程中最重要的环节之一,其地位是不言而喻的。一个测试人员需要具备什么样的技术能力,怎么样快速对移动互联网测试有一个全面的认识和学习,是测试人员必须面对和考虑的,也给测试人员提出了新的挑战。

功能自动化测试

如果仅仅依靠纯手工的测试,很快就会面临瓶颈,因为每个功能几乎都要经过 bug修复、验证和回归的过程。另外针对接口协议的验证,也必须依赖自动化才能验证。

移动互联网的产品和Web互联网产品类似,后台都有大量的接口提供相应的服务,很多的业务逻辑都是放在后台来处理的,所以可以针对这部分逻辑做轻量级的接口自动化测试。技术方案上,从界面发起相关请求的做法效率不高且不够稳定,所以我们一般采用直接从接口层面发起请求来验证。

除了接口的自动化,App UI 自动化也可以帮助快速地进行App功能的回归。考虑到UI自动化用例建设和维护成本,可以针对相对稳定的功能进行App UI 自动化用例建设,这些用例除了UI的自动化验证之外,持续集成和兼容性测试中也能发挥他们的价值。目前业界用的比较多的App UI自动化测试框架有Robotium和Appium,Robotium相对原生的UI自动化测试框架,提供了更友好的定位控件的方法,在写自动化脚本的时候建议使用Robotium类库来提高测试效率。Appium框架是一个开源的重量级的自动化测试框架,支持iOS和Android等平台的自动化测试,支持跨平台,支持真机和模拟器,也支持多种语言编写测试脚本。每种测试框架都有其优缺点,可以根据实际的项目来挑选适合自己的。

性能测试

产品经过了功能层面的验证,还达不到发布的要求,还有很多影响用户体验的问题需要重点关注,比如App使用时不流畅,操作时服务端响应慢,高峰期使用应用频繁报错,莫名闪退,App使用一段时间后占用内存过高,界面打开速度变慢等等。这些问题虽然不关乎功能,但很有可能造成用户的流失,影响产品的口碑。所以我们需要做充分的性能测试来规避相关风险。

性能测试是一个非常综合的测试技术,涉及面广,测试人员需要有一定的积累才能发现隐藏较深的问题,对于移动App的性能测试,分为Web前端的性能测试、App端的性能测试,后台服务的性能测试。Web前端的性能测试已经较为成熟,Fiddler、FireBug等工具都能辅助测试。App端的性能测试在这三项中是最重要的,页面渲染的时间,CPU的使用情况、内存泄露,都会直接影响到App的运行性能,甚至导致程序崩溃。测试的时候可以借助一些工具帮助分析内存使用情况。基于后台服务的性能测试主要是从负载、压力、持久性等方面量化地评估系统的响应时间和容量等指标。

专项测试

针对某个特殊问题进行的测试,我们称为专项测试,它是移动互联网产品中重要的测试类型,可以从不同的维度发现更多深层次的问题,必不可少。主要有以下几类:

兼容性测试

随着终端设备的型号多样化,用户多了以后自然而然就会遇到兼容性问题,因此需要覆盖不同的软硬件环境来进行兼容性测试。操作系统的版本、屏幕分辨率、网络类型、浏览器类型都是需要考虑的。执行方案上,一般会借助UI自动化和云测试平台来进一步提升兼容性测试的效率和覆盖面。

流量测试

App 使用过程中,很多用户会关心流量用了多少,特别是非宽带的流量需要付费时。如果App设计有缺陷,频繁联网去服务端获取信息,会导致流量消耗较快,最终结果是导致用户卸载App。所以流量测试从两个方面入手,前台用户的操作和后台的流量消耗情况。对于Android系统,可以通过系统提供的API接口来获取流量数据,而对于iOS系统,可以通过Instrument自带的Network来查看网络流量。当然还有其他方法,比如可以通过手机抓包、Wifi代理的方式来获取流量数据进行分析。控制流量的策略也有很多,数据压缩、访问控制、缓存、不同访问策略和不同的数据格式等等,在App设计之初最好能提前考虑到这些方面,避免后续架构改动较多带来一定的风险。

电量测试

电量和流量一样,也是用户较为关心的一个方面。耗电太快,也会导致用户流失。Android系统上,可以借助第三方App来评估手机上各个App的耗电情况。针对iOS系统,还是依赖Instrument提供的Energy工具,从多个维度来查看App的耗电情况,同时苹果提供了类库也可以获取当前设备电量信息。

弱网路测试

很多时候,问题总是在环境比较复杂的情况下才会暴露出来,弱网络就是其中之一。与其让用户遇到带来不好的体验,不如在测试阶段模拟弱网络环境,及早解决。iOS系统中自带的开发者选项可以对网络状态进行设置。另外目前还有好多弱网络模拟工具比如Charles可以帮助测试,还可以采用真机模拟弱网络的方式。

稳定性测试

说起移动App稳定性测试,第一个想到的肯定是Monkey测试,Monkey工具使用起来也比较简单,通过命令就可以执行。当应用程序崩溃或者产生了ANR(Application not responding),Monkey就会停止并报错。

安全测试

移动App产品的安全测试主要有以下几个方面:安装包的安全测试,能否反编译、是否签名、权限检查、完整性校验;敏感信息测试,包括数据库、日志、配置文件中的信息;账户安全和数据通信安全;服务端接口的安全测试,常用的SQL注入,XSS跨站脚本攻击、CSRF跨站请求伪造,越权访问。

以上各项测试可以独立执行,也可以交叉结合,构造更加复杂的测试场景。

写在最后

也许这里的技术/工具方案并不是最好的,但是各维度领域的测试思路,希望能对你有所帮助。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
5月前
|
Java Android开发
Rockchip系列之CAN APP测试应用实现(4)
Rockchip系列之CAN APP测试应用实现(4)
93 1
|
5月前
|
测试技术 UED Python
App自动化测试:高级控件交互技巧
Appium 的 Actions 类支持在移动应用自动化测试中模拟用户手势,如滑动、长按等,增强交互性测试。ActionChains 是 Selenium 的概念,用于网页交互,而 Actions 专注于移动端。在Python中,通过ActionChains和W3C Actions可以定义手势路径,例如在手势解锁场景中,先点击设置,然后定义触点移动路径执行滑动解锁,最后验证解锁后的元素状态。此功能对于确保应用在复杂交互下的稳定性至关重要。
126 5
|
1月前
|
测试技术
基于LangChain手工测试用例转App自动化测试生成工具
在传统App自动化测试中,测试工程师需手动将功能测试用例转化为自动化用例。市面上多数产品通过录制操作生成测试用例,但可维护性差。本文探讨了利用大模型直接生成自动化测试用例的可能性,介绍了如何使用LangChain将功能测试用例转换为App自动化测试用例,大幅节省人力与资源。通过封装App底层工具并与大模型结合,记录执行步骤并生成自动化测试代码,最终实现高效自动化的测试流程。
54 4
|
2月前
【Azure App Service】同一个App Service下创建多个测试站点的方式
【Azure App Service】同一个App Service下创建多个测试站点的方式
|
2月前
|
网络协议 安全 前端开发
【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)
【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)
|
2月前
|
测试技术
一款功能完善的智能匹配1V1视频聊天App应该通过的测试CASE
文章列举了一系列针对1V1视频聊天App的测试用例,包括UI样式、权限请求、登录流程、匹配逻辑、消息处理、充值功能等多个方面的测试点,并标注了每个测试用例的执行状态,如通过(PASS)、失败(FAIL)或需要进一步处理(延期修改、待定、方案再定等)。
55 0
|
2月前
|
Linux C#
【Azure App Service】C#下制作的网站,所有网页本地测试运行无误,发布至Azure之后,包含CHART(图表)的网页打开报错,错误消息为 Runtime Error: Server Error in '/' Application
【Azure App Service】C#下制作的网站,所有网页本地测试运行无误,发布至Azure之后,包含CHART(图表)的网页打开报错,错误消息为 Runtime Error: Server Error in '/' Application
|
3月前
|
前端开发 开发者
移动端-------app开发02,了解apicloud功能和使用,真机测试
移动端-------app开发02,了解apicloud功能和使用,真机测试
|
5月前
|
XML 数据格式
Xpath高阶定位技巧,轻松玩转App测试元素定位!
XPath是一种用于XML文档中节点定位的语言,支持逻辑运算符(and、or、not)、轴定位、谓词和内置函数。
81 0
|
5月前
|
XML 测试技术 数据格式
解决 App 自动化测试的常见痛点
在App自动化测试中,常见挑战包括启动加载慢和弹框干扰。为处理弹框,可以创建一个黑名单列表,遍历并点击消除。使用`handleAlertByPageSource()`方法结合`getPageSource()`判断弹框元素在当前页面的存在性,提高效率。对于首页加载延迟,使用显示等待特定元素如`user_profile_container`,但需注意弹框可能阻止元素定位。因此,结合PageSource判断首页元素和弹框,确保加载完成判断的准确性。通过这样的优化,能更有效地处理自动化测试中的中断问题。
67 1