提升iOS审核通过率之“IPv6兼容测试”

简介:

商业转载请联系腾讯WeTest授权,非商业转载请注明出处。

原文链接:http://wetest.qq.com/lab/view/285.html

一、背景

在WWDC2015大会上苹果宣布iOS9将支持纯IPv6的网络服务。2016年6月1号,所有提交到AppStore上的应用都必须支持IPv6,否则将通不过审核。为了确保我们的app正常提交到苹果进行审核,不耽误项目进度,我们必须在提交到AppStore前对待提交app做IPv6兼容测试。

 

二、为什么要使用IPv6

从IPv4到IPv6,IP地址的数量从2的32次方扩展到2的128次方,这个是IPv6碾压IPv4的地方,足够地球上的每粒沙子分配一个或者多个IP地址。当然,除了IPv4本身的原因(地址枯竭)外,下面提到的几点,也说明了IPv6比IPv4更加高效,例如:

1. 避免了网络地址转换(NAT)的需要

2. 通过使用简化的头提供了更快的路由通过网络

3. 防止网络碎片

4. 避免广播邻居地址解析

但最根本的原因莫过于苹果审核的压力,不得不将app适配IPv6。

 

三、测试应该关注的点

1. 保证项目代码中使用的是更高层次的网络API,避免使用socket API

在苹果官网上,有这么一张图,说明了哪些框架支持IPv6,哪些不支持, 如下图所示:

 

图中蓝色部分默认支持IPv6,如果项目代码中使用的是WebKit或者AFNetWorking这些网络框架,那么需要改动的代码不会很多。

 

2. 走读代码中是否使用了IP地址

比如,检查代码中是否包含了类似于192.168.0.1的地址,如果有,需要换为其对应的域名地址。

 

3. 检查代码是否包含只适用于IPv4的API

确保项目代码中没有以下API:

inet_addr()

inet_aton()

inet_lnaof()

inet_makeaddr()

inet_netof()

inet_network()

inet_ntoa()

inet_ntoa_r()

bindresvport()

getipv4sourcefilter()

setipv4sourcefilter()

如果有了这些代码也不要怕,只需要将对应的API换为IPv6所支持的API即可,下表是IPv4和IPv6的对应关系表:

 

 

4. 本地搭建IPv6环境,回归app中所有网络请求的模块

我们现在连的网络,无论是wifi还是移动、联通、电信的各种不同类型的网络,都是IPv4的,也就是实际生活中和我们打交道的全是IPv4环境。但我们需要测试IPv6在iOS APP中的兼容性,是必然不能在现有的网络环境下测试的,需要测试人员自己构建测试环境。

值得欣慰的是,苹果公司在MAC OS X 10.11以后的系统中就埋下了开启IPv6环境的彩蛋。我们所要做的就是参照官方文档,在本地搭建这样的测试环境。即用MAC机建立一个热点,然后用iPhone连接该热点,回归待测模块。简单的示意图如下所示:

 

 

a)需要准备的设备:

系统是OS X 10.11以后版本的MAC机(该MAC机要使用非WIFI方式上网,且支持双网卡)一台,iPhone手机一台。这个地方有些土豪同学可能会有疑问,我的Mac本本只有无线网卡,没有有线网孔啊,这时你就需要一个苹果Thunderbolt千兆以太网转换器,如下图所示:

 

 

b)开启NAT64网络

打开“系统偏好设置”,按住option键的同时点击“共享”,如下图所示:

 

之后,在共享页就能看到“创建NAT64网络”的可选框了,如下图所示:

 

到此,我们的NAT64网络就创建完成了,剩下的就是创建热点了。

 

c)在MAC机上创建WiFi热点

MAC上创建WiFi热点,很简单,这里就不再详细说明了,看下面这张图也能知道怎么创建的:

 

这里想说明一点,也是比较关键的一点:点击上图中的“启动”button后,有些网络会出现如下图所示的共享失败情况:

 

出现这种情况,说明你当前使用的网络受到了802.1x协议的限制,无法共享。只能通过去802.1x保护或者换其他可以共享的网络进行共享。

如果是在公司网络,可以寻求IT进行网络切换,或者找开发他们搭建好的网络环境进行测试(ps:如果开发没有IPv6网络环境,且发版时间又比较紧张的情况下,可以和老大申请回家办公,或者随便一个咖啡馆)。

如果热点搭建成功,是可以在mac机右上角的网络状态处看到如下图所示的图标:

 

d)iPhone手机连接创建好的热点,连接成功后,可以查下iPhone手机的IP地址。

我这里看到的是169.254.*.*的IP地址,这类地址属于保留地址,具体什么是保留地址,请自行百度。

 

e)回归待测app,确保所有的网络请求在本地搭建好的IPv6网络环境下正常的,这里说的“正常”就是指和在IPv4网络环境下的表现一致。

经测试,在IPv6网络环境下,QQ可以正常使用,微信网络连接失败(微信最新的SDK已支持IPv6)。

最后,如果感兴趣的话,可以用抓包工具看一下,IPv6的地址长什么样子,之前都是在课本中见到过,这次测试也算是头一次真正看到IPv6的地址啦,如下图所示:

 

 

四、项目实战

这里以地图SDK为例,简单说明具体的测试步骤。地图SDK,是地图软件开发工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合,它包括接口API、示例代码、支持性的技术注解或者其他的支持文档,有了这些,第三方开发者可以很方便的使用这些API开发自己所需的功能,这里附上腾讯地图开放平台地址:http://lbs.qq.com/ios_v1/index.html。

目前和腾讯地图SDK合作的小伙伴有京东、58同城、携程、嘀嘀等。

1. 首先需要分析该SDK使用到了哪些库

地图SDK中使用的framework如下图:

 

针对地图SDK中使用到的这些库,逐一确认是否支持IPv6,比如WebKit.framework框架,苹果官方文档就明确说明了支持IPv6。

 

2. 检查SDK源码中是否使用到了IP地址

这块主要是走查所有有网络请求的模块,是否将IP地址替换为了域名,这块一般是在代码某个配置文件中进行定义的。比如,下图所示的server地址:

 

 

3. 检查代码中是否包含只支持IPv4的API

由于SDK使用的是WebKit.framework,不存在底层的socket API,这块没有风险。

 

4. 本地搭建测试环境,回归SDK网络相关模块

这里,需要保证在IPv6环境下的功能与在IPv4环境下表现一致的,就可以说明测试通过。

 

5. 抓包确认

最后,可以通过抓包看看是否真的走的是所搭建的IPv6的测试环境,当然也可以亲眼目睹下IPv6的IP地址长什么样儿。


【腾讯WeTest iOS预审工具】

为了提高IEG苹果审核通过率,腾讯专门成立了苹果审核测试团队,打造出iOS预审工具这款产品。经过1年半的内部运营,腾讯内部应用的iOS审核通过率从平均35%提升到90%+。

现将腾讯内部产品的过审经验,以线上工具的形式共享给各位。在WeTest腾讯质量开放平台上可以在线使用。点击链接:http://wetest.qq.com/product/ios 即可立即体验!


iOS预审工具分四步进行预审服务

【一键扫描】只需提供ipa包、审核图片、审核视频、应用描述,即可在4小时内拿到一份完整的检测报告,定位问题的同时提供解决方案,助您成功通过审核。

【案例分享】集结iOS审核失败常见原因,丰富案例为您提供参考依据。

【专家服务】腾讯专家团队为您分析各种疑难杂症,提出最优解决方案。

【ASO优化】专业优化AppStore内关键字搜索结果,让产品离用户更近一步。希望App/手游在预审验收保证下,都可以快快乐乐过审,开开心心赚钱。


















本文转自xsster51CTO博客,原文链接:http://blog.51cto.com/12945177/1930141 ,如需转载请自行联系原作者


相关文章
|
2月前
|
测试技术 Linux 虚拟化
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
详细的VMware虚拟机安装macOS Big Sur的保姆级教程,包括下载VMware和macOS镜像、图解安装步骤和遇到问题时的解决方案,旨在帮助读者顺利搭建macOS虚拟机环境。
60 3
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
|
2月前
|
测试技术 开发工具 iOS开发
iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
这篇文章是iOS自动化测试方案的第三部分,介绍了在没有MacOS系统条件下,如何使用WDA(WebDriverAgent)结合Python客户端库facebook-wda和tidevice工具,在Windows系统上实现iOS应用的自动化测试,包括环境准备、问题解决和扩展应用的详细步骤。
83 1
iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
|
2月前
|
测试技术 数据安全/隐私保护 iOS开发
iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
iOS自动化测试方案的第四部分,涵盖了基础环境准备、iPhone虚拟机设置、MacOS虚拟机与iPhone真机的连接,以及扩展问题和代码示例,确保读者能够顺利完成环境搭建并进行iOS自动化测试。
80 0
iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
|
2月前
|
测试技术 虚拟化 iOS开发
iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
这篇文章是iOS自动化测试方案的第二部分,详细介绍了在Xcode开发者工具中构建WebDriverAgent(WDA)应用到iPhone的全过程,包括环境准备、解决构建过程中可能遇到的错误,以及最终成功安装WDA到设备的方法。
96 0
iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
|
2月前
|
测试技术 开发工具 虚拟化
iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
这篇文章提供了一份保姆级的教程,指导如何在MacOS虚拟机上安装Xcode,包括环境准备、基础软件安装以及USB扩展插件的使用,以实现iOS自动化测试方案的第一步。
37 0
iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
|
2月前
|
测试技术 Swift iOS开发
探索iOS自动化测试:使用Swift编写UI测试
【8月更文挑战第31天】在软件开发的海洋中,自动化测试是保证船只不偏离航线的灯塔。本文将带领读者启航,深入探索iOS应用的自动化UI测试。我们将通过Swift语言,点亮代码的灯塔,照亮测试的道路。文章不仅会展示如何搭建测试环境,还会提供实用的代码示例,让理论知识在实践中生根发芽。无论你是新手还是有经验的开发者,这篇文章都将是你技能提升之旅的宝贵指南。
|
5月前
|
Android开发 数据安全/隐私保护 iOS开发
ios和安卓测试包发布网站http://fir.im的注册与常用功能
ios和安卓测试包发布网站http://fir.im的注册与常用功能
183 0
ios和安卓测试包发布网站http://fir.im的注册与常用功能
|
5月前
|
移动开发 网络协议 安全
iOS审核在ipv6网络下无法访问服务器的问题及解决方案
iOS审核在ipv6网络下无法访问服务器的问题及解决方案
143 0
|
24天前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
106 7
Jmeter实现WebSocket协议的接口测试方法
|
24天前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
101 3
快速上手|HTTP 接口功能自动化测试
下一篇
无影云桌面