爱收集资源网

本文将带你了解技术之IPv6兼容测试(组图)

网络整理 2022-05-14 05:01

本文将带你了解软件测试技术的IPv6兼容性测试,希望对大家学习测试技术有所帮助

一、背景

在 WWDC2015 上,Apple 宣布 iOS9 将支持纯 IPv6 网络服务。 2016 年 6 月 1 日,所有提交到 AppStore 的应用程序必须支持 IPv6,否则将无法通过审核。为了保证我们的应用正常提交给苹果审核,不耽误项目进度,在提交到AppStore之前,我们必须对提交的应用做IPv6兼容性测试。

二、为什么选择 IPv6

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

1.无需网络地址转换 (NAT)

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

3.防止网络碎片化

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

但最根本的原因是苹果审核的压力,不得不让应用适应IPv6。

三、测试应该关注点

1.确保项目代码使用更高级别的网络API可用于本地测试的ip地址是,避免使用socketAPI

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

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

2.通勤代码中是否使用IP地址

例如,检查代码中是否包含类似192.168.0.1的地址,如果是,则替换为对应的域名地址。

3.检查代码是否包含 IPv4-only 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环境,返回应用内所有网络请求的模块

我们现在连接的网络可用于本地测试的ip地址是,无论是wifi还是中国移动、中国联通、电信等各种类型的网络,都是IPv4的,也就是说现实生活中,我们处理的都是IPv4环境。但是,我们需要在iOS APP中测试IPv6的兼容性,在现有的网络环境下无法测试。测试人员需要自己搭建测试环境。

令人欣慰的是,苹果在 MACOS X10.11 之后,在系统中启用了 IPv6 环境。我们要做的就是参考官方文档,在本地搭建这样的测试环境。即用MAC机建立热点,然后用iPhone连接热点,返回待测模块。一个简单的示意图如下所示:

a) 准备的设备:

系统为OSX10.11及以上的MAC机(MAC机需要使用非WIFI方式上网,支持双网卡),一部iPhone。这里的一些土豪可能会有疑问。我的 Mac 只有无线网卡,没有有线网。这时候就需要一个苹果雷电千兆以太网转换器,如下图:

b) 启用 NAT64 网络

打开“系统偏好设置”,按住option键点击“分享”,如下图:

之后,可以在分享页面看到“创建NAT64网络”选项框,如下图:

至此,我们的NAT64网络就创建好了,剩下的就是创建热点了。

c) 在 MAC 机器上创建 WiFi 热点

在MAC上创建WiFi热点很简单,这里就不详细解释了。您可以通过查看下图了解如何创建它:

这里要说明一点,这也是比较关键的一点:点击上图中的“开始”按钮后,部分网络会出现如下图分享失败:

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

如果是在公司网络,可以请IT切换网络,或者找开发者搭建的网络环境进行测试(ps:如果开发没有IPv6网络环境,发布时间相对紧,你可以向老板申请在家工作,或者只是一个咖啡店)。

如果热点设置成功,可以在mac右上角的网络状态中看到如下图标:

d) iPhone 连接到创建的热点。连接成功后,可以查看iPhone的IP地址。

我这里看到的是16的IP地址9.254.*.*,这种地址是保留地址,什么是保留地址,请自行百度。

e) 返回待测app,确保本地IPv6网络环境下所有网络请求正常。这里的“正常”是指与 IPv4 网络环境中的性能相同。

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

最后,如果您有兴趣,您可以使用数据包捕获工具来查看 IPv6 地址的样子。我以前在课本上看到过。这个测试也是我第一次真正看到 IPv6 地址。如下图:

四、项目实战

这里以地图SDK为例,简单说明一下具体的测试步骤。 Map SDK是地图软件开发工程师为特定的软件包、软件框架、硬件平台、操作系统等构建应用软件的开发工具集合。它包括接口API、示例代码、配套技术注释或其他支持文档,带有这些,第三方开发者可以很容易地使用这些API来开发他们想要的功能。这里是腾讯地图开放平台的地址://lbs.qq.com/ios_v1/index.html。

目前与腾讯地图SDK合作的合作伙伴包括京东、58同城、携程、滴滴等。

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

Map SDK中使用的框架如下:

对于Map SDK中使用的这些库,要一一确认是否支持IPv6,比如WebKit.framework框架,苹果官方文档明确说明支持IPv6。

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

这个块主要是遍历所有有网络请求的模块,以及是否将IP地址替换为域名。这个块一般定义在代码的某个配置文件中。例如下图所示的服务器地址:

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

由于SDK使用WebKit.framework,没有底层的socket API,这部分没有风险。

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

这里需要保证IPv6环境下的功能和IPv4环境下的性能一致,才能通过测试。

5.抓包确认

最后,你可以抓包看看你是不是真的通过了 IPv6 测试环境,当然你也可以亲眼目睹一个 IPv6 IP 地址是什么样子的。

【腾讯WeTestiOS预审工具】

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

现在我们以线上工具的形式与大家分享腾讯内部产品的评测经验。可在WeTest腾讯质量开放平台在线使用。点击链接://wetest.qq.com/product/ios 立即体验!

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

【一键扫描】只需提供ipa包、审核图片、审核视频、应用说明,4小时内即可获得完整的测试报告,定位问题并提供解决方案,助您顺利通过审核。

【案例分享】汇总iOS审核失败的常见原因,丰富案例,为您提供参考。

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

【ASO优化】AppStore关键词搜索结果专业优化,让产品离用户更近一步。希望app/手游能在预审验收保证下,愉快的通过试用,愉快的赚钱。

ipv6 sdk ios ipv6适配