APP适配测试白皮书(二)

本文涉及的产品
图像搜索,7款服务类型 1个月
简介: 碎片化越来越严重,苹果相比Android来说稍微好点但最近几年由于创新乏力不断在屏幕尺寸上做文章也使得苹果的适配开始面临更多的挑战。

项目各阶段适配策略



Android严重的碎片化提升了适配测试的难度,我们无法做到100%的适配测试,但可以按照不断完善的适配策略通过项目中各角色相互协同,一起努力将适配问题尽可能的减少,以便更好的提升用户体验。


项目过程可分成以下四个阶段:需求/交互/视觉阶段、开发阶段、测试阶段、发布阶段,每个阶段都需要各负责人对适配做出明确处理。


  • 需求/交互/视觉阶段,需要需求方在PRD中做简要说明,需要交互设计师和视觉设计师在各自的交互稿和视觉稿中明确指出,哪些页面需要横竖屏适配,哪些页面需要手机和平板适配
  • 开发阶段,需要开发同学对需要适配的需求点做好技术设计和编码,包括手机平板横竖屏、第三方组件新增和升级以及新Android SDK/API使用
  • 测试阶段,需要测试分别通过白盒适配方式和机型适配方式进行有针对性的适配测试;白盒适配主要针对于开发过程中适配的代码进行测试。机型适配的基础需要一个适配的机器列表,机型列表总结好后,就可以通过手工适配、UI自动化、云测平台等多种手段进行适配测试
  • 发布阶段,通过众测及时发现Beta阶段的适配问题,通过灰度及时处理真实用户遇到的适配问题


对于测试同学而言,需要在项目的各个阶段都关注适配问题,并给出合理的适配测试用例,并在项目过程中通过各种适配测试手段,尽可能多的发现适配问题,将线上的适配问题概率降低。


适配策略详解



手机横竖屏适配


从4.0版本开始,Android客户端开始适配平板和横竖屏,实现方式主要是是新增了平板以及横竖屏的layout文件,对于一个页面来说可能最多存在四种不同的layout样式:手机竖屏、手机横屏、平板竖屏和平板横屏,针对于不同layout可以采用白盒测试的方式做有针对性的适配测试:


  • 通过代码梳理当前所有页面layout样式,梳理每个页面共支持多少种layout
  • 通过视觉稿初步确认手机和平板适配的页面以制定适配测试方案
  • 通过开发测试过程中res/layout下新增的不同layout文件来做有针对性的测试


第三方组件新增和升级适配


我们的APP中一般会依赖很多的第三方组件,主要是各种so文件和jar文件,这些so、jar中有些时候进行升级后,底层编译器对不同的OS或者ROM支持的情况不同,导致了APP出现Crash/ANR等异常情况:


  • 对第三方依赖按照重要性进行梳理
  • 针对每一个第三方组件梳理历史适配问题,整理第三方组件的适配方法
  • 熟悉每次第三方组件升级的业务逻辑和升级原理,进行有针对性的适配方法,比如V4和V7包的差异,以及V7带来的新组件特性。对于底层更加复杂可测性不高的第三方组件,可以结合适配机型列表进行不同机型适配,可以采用手工和自动化的方式进行


新Android SDK/API适配


在开发过程中可能会出现引用最新版的Android SDK中新API来实现功能,而该API可能存在不兼容的情况引起适配问题,可以采取下面的方式进行保障:


  • 梳理从应用最低适配的系统版本开始以后新增API的详细情况
  • 借助Lint对每次项目版本中API使用情况进行扫描和统计,对新的API做针对性的适配测试
  • 借助于infer等静态扫描工具,对Android代码进行静态扫描,提升代码质量

代表机型适配


Android的碎片化导致适配的手机设备花样繁多,主要通过手工或自动化的方式覆盖更多的机型来加以保证,大致可以按照下面的思路来开展工作:


  • 线上Top机型代表设备
  • 线上Top系统版本代表设备
  • 不同SOC/ROM厂商代表设备
  • 对平时工作中的问题机型进行梳理,并提交采购,纳入手工适配范围


自动化平台适配


通过UI自动化平台,对核心业务场景进行自动化覆盖,在做功能回归测试的同时也可以达到适配测试的目的,我们选了Top设备进行了UI自动化适配,发现了在不同机型上有些页面存在兼容性问题(例如:某个按钮在华为机型上不显示等)。


国内外云测平台适配


国内有很多测试平台提供云测的服务,包括百度MTC、阿里MQC、腾讯WeTest、Testin以及TestBird等。各大测试平台的移动应用兼容性测试服务所采用的方法其实大同小异,一般都包括在大批量真机上进行安装、启动、运行Monkey脚本(某些会带有智能算法)、卸载测试,但是从测试效果来看,其实差别还是蛮大的,对比下来我们是选用的阿里MQC,对于有国外适配需求的团队这里推荐两个平台:AppThwack和Testdroid。


众测和灰度发布


开发、测试同学进行适配测试,碍于Android的严重碎片化,手头设备是极其不完整,在未全量上线前,借助于真实用户手中自己的设备进行众测和灰度发布阶段的正式使用来提前暴露问题,只要合理利用,不失为一个发现适配问题的有效手段。 由于各公司采用的众测和灰度发布方式不尽相同在这里就不展开说了。


基于图像识别做适配


最近测试智能化的趋势和话题也非常热,一些团队看到了图像识别在适配测试中发挥作用的可能,于是他们基于图像识别技术去做了一套一系统来提升适配测试的效率。


关于模拟器


客户端测试的一个好处就是可以利用模拟器来代替真机进行一部分的测试工作,比如可以利用模拟器进行手动或自动化的方式来发现一些功能性Bug,但对于网络模拟、摄像头的调用、消息推送等功能就不建议用模拟器来测试了。


总结



适配测试对于移动应用来说是一个重要的环节,本文基于在开发、测试过程中积累的经验总结了一套可行的适配测试策略,并在实际工作中实施,当然其中肯定有考虑不全的地方,接下来还会继续深入白盒适配策略、机型适配策略以及借助自动化、图像识别技术等来更好的发现适配问题,也欢迎对此感兴趣的同学多交流!

相关文章
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
95 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
3月前
|
测试技术
基于LangChain手工测试用例转App自动化测试生成工具
在传统App自动化测试中,测试工程师需手动将功能测试用例转化为自动化用例。市面上多数产品通过录制操作生成测试用例,但可维护性差。本文探讨了利用大模型直接生成自动化测试用例的可能性,介绍了如何使用LangChain将功能测试用例转换为App自动化测试用例,大幅节省人力与资源。通过封装App底层工具并与大模型结合,记录执行步骤并生成自动化测试代码,最终实现高效自动化的测试流程。
|
4月前
【Azure App Service】同一个App Service下创建多个测试站点的方式
【Azure App Service】同一个App Service下创建多个测试站点的方式
|
4月前
|
网络协议 安全 前端开发
【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)
【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)
|
4月前
|
测试技术
一款功能完善的智能匹配1V1视频聊天App应该通过的测试CASE
文章列举了一系列针对1V1视频聊天App的测试用例,包括UI样式、权限请求、登录流程、匹配逻辑、消息处理、充值功能等多个方面的测试点,并标注了每个测试用例的执行状态,如通过(PASS)、失败(FAIL)或需要进一步处理(延期修改、待定、方案再定等)。
73 0
|
4月前
|
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
|
5月前
|
前端开发 开发者
移动端-------app开发02,了解apicloud功能和使用,真机测试
移动端-------app开发02,了解apicloud功能和使用,真机测试
|
7月前
|
XML 数据格式
Xpath高阶定位技巧,轻松玩转App测试元素定位!
XPath是一种用于XML文档中节点定位的语言,支持逻辑运算符(and、or、not)、轴定位、谓词和内置函数。
|
5天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
31 11
|
1月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
61 3