iOS-App技术栈

图1-App技术栈

一、 中间件

1. 配置

Orange

简介

Orange是淘宝App使用的急速、高效的数亿级无线端配置推送平台,通过App启动自检以及Mtop网关搭车机制,实现的移动端配置高效推送、拉取解决方案。

测试

orange配置平台,全部namespace->独客Appkey,搜索App的orange配置,

按照帮助文档,在预发环境下修改发布,之后使用Orange debug模式,查看手机端的orange配置是否成功更新(注意orange配置触达需要一定时间,一般30秒内,再次期间内尽可能的触发mtop请求)。

参考资料 

Orange平台文档

orange推拉模式

2. ABTest

一休

简介

端上AB方案测试框架,接入时使用的是一休SDK,提供AB分桶方案&不同实验下的数据表现收集的解决方案。

测试

一休平台上配置页面测试方案,对于testUrl,配置50%流向A url,50%流向B url。独客app扫码testUrl,测试是否能正确跳转到A、B方案配置的链接。

3. 埋点

UT

简介

UserTrack是一套面向客户端的数据采集系统,支持的系统有iOS,Android,Windows,MacOS,具有数据安全级别高,数据到达率高,传输流量小等特点。

测试

UT扫码查看埋点, 独客App扫码,查看埋点信息,arg1、arg2、args是否与预期一致。埋点方案可以让开发在debug模块下埋一些测试埋点。

4. 营销

Poplayer(废弃)

简介

Poplayer是一个可以实现在任意Native页面上弹起H5页的营销方案,能达到不发版的前提下在Native页面弹出浮层并设置事件的拦截和透传,被广泛使用在集团的各种大促和活动中。

测试

基于PoplayerSupport平台mock配置poplayer弹出地址,扫码查看poplayer能否在指定页面弹出,以及跳转地址是否与配置一致。

具体流程如下: 


在生成的模板中可以通过修改对一个字段的参数来实现Poplayer的设置。

uri/uris:控制Poplayer的弹出页面地址;

starttime/endtime:控制Poplayer的弹出时间段;

freq:控制Poplayer的弹出频率。

5. 图片库

Phenix

简介

脚手架App使用是Phenix图片库,支撑手淘的图片加载、显示、处理、图片数据监控,同时提供CDN图片压缩、自适应,提供性能优化流畅的图片加载体验,提供一站式的图片解决方案。测试用例保障图片加载显示、移动端自适应优化正确。

测试关注点

图片支持:支持WebP、WebP_Alpha、GIF、APNG等图片,

图片保存:所有类型的图片长按保存,测试图片库保存功能

性能优化、自适应

自适应:Phenix图片库移动端加载图片时,会根据手机分辨率、View大小,对图片分辨率自动进行自适应,比如原图分辨率1024*1024,端上View是400*400,图片库加载图片时会自适应到最接近400*400的图片

性能优化:针对不同网络质量的图片请求,图片库会加载不同压缩质量的图片,保证图片流畅加载,比如wifi下加载原图,4G下加载Q90质量图片,3G下加载Q75图片,可定制。(图片压缩会导致图片精度不够,如果业务对图片精度有高质量要求,需要定制)

测试

使用TMS平台上传webp、png、jpeg、gif、apng类型图片到CDN,独客App通过扫码浏览图片,测试覆盖各个类型图片加载、显示、放大全屏显示是否正确

图片保存,所有类型的图片长按保存,测试图片库保存功能

分享任意手淘导购文章,独客App扫码打开文章链接,Charles抓包查看网络请求中CDN图片的后缀,比如//gw.alicdn.com/tfs/TB1B34_BAvoK1RjSZFwXXciCFXa-36-36.png_90x90q90.jpg_.webp,原图是png,图片会自动适应到90*90的webp图片,并且图片压缩质量是Q90。说明自适应、性能优化功能正确。

6. 模板动态化

DinamicX

简介

Dinamic是一套纯Native的动态化模板方案,提供iOS/Android两端统一的动态化能力。使用XML格式描述模板,基于Android的布局方案设计了较为简单的DSL,以简单易懂的方式描述控件以及布局,一次书写,两端运行。兼容服务端的各种样式数据结构。内置基础控件和布局系统,同时提供自定义控件、自定义事件处理、自定义数据绑定等支持功能。

测试关注点

DinamicX的测试尽可能的结合业务中需要使用Dinamic模板的需求一并测试,关注模板布局及渲染正常以外,还需要关注其动态化能力的测试。

测试

结合业务的具体模板测试模板布局与渲染功能测试;

模板重构的适配测试;

老版本与新版本的模板兼容测试,包括老版本兼容新版本模板、老版本升级新版本后模板正常升级。

参考资料

DinamicX调研报告

DinamicX 3.0总结

7. 动态化容器

Windvane

简介

WindVane 是一个可扩展的Hybrid应用解决方案,主要客户端内的 Web 页面提供WebView 容器。WindVane提供了丰富的功能扩展,包括 URL 拦截、事件机制、资源预加载和JSBridge功能,支持Web页面与Native进行交互。

测试关注点

WindVane内建很多JSBridge API,所以Windvane的测试重点主要集中在JSBridge API的测试。

测试

Windvane有自己的测试页面,让开发内嵌到App内测试各个API功能是否正常即可。

Weex

简介

能够使用同一套代码来构建 Android、iOS 和 Web 应用。Weex 的结构是解耦的,渲染引擎与语法层是分开的,不依赖任何特定的前端框架,目前主要支持 Vue.js 和 Rax 这两个前端框架,比较方便在Native和DSL层面进行扩展。

测试关注点

除了关注Weex页面功能外,还需要考虑拦截与降级。

测试

这里推荐一篇ATA文档,里面简介了weex页面详细的功能测试点及拦截、降级的测试点,我这里就不做赘述了。客户端weex测试经验总结

8. 消息(Agoo)

简介

手机端的营销push、通知送达是App触达用户必不可少的收到。Agoo提供基于长链接和厂商通道的消息推送解决方案,支持亿级消息高效送达。主要使用的场景有营销push、消息通知、物流活动通知等。

Agoo的通知推送通道有两种:accs长链接推送、厂商离线通道。

accs长链接推送,ACCS是淘宝无线向开发者提供全双工、低延时、高安全的通道服务,同时具备实时推送消息能力。App启动后,推送一条消息给用户,用户online,accs长链接处于激活状态,agoo将消息通过accs推送给客户端,客户端收到accs消息调用系统通知,弹出push通知栏。

厂商通道,如果app未启动,没有长链接,我们怎么触达用户?agoo接入了各个手机厂商的消息通道,在用户离线状态下,agoo会将消息通过厂商的离线消息通过推送到设备上,按照各个手机厂商定制的格式弹出系统通知。支持的通道有,iOS使用的是apns,华为、小米、vivo、魅族、oppo等。

测试

agoo sdk接入,各个通道注册配置较多,测试务必要覆盖完备:

accs通道测试:用户登录、app启动状态下,通过aden平台下发通知给用户,iOS设备用户可以收到通知push,点击后可以拉起app,进入到通知配置的跳转url。

Android厂商通道:杀掉app进程,保证app未启动,通过aden平台给用户下发通知,华为、小米、vivo、魅族、oppo手机可以收到离线通知,点击通知可以拉起app,并跳转到目标url。

苹果APNS:iOS使用越狱机安装越狱包进行离线推送测试,aden平台给用户下发通知,用户可以收到通知,点击通知可以拉起app,并跳转到目标url。

参考资料

accs简介,

agoo简介

9. 闪屏

简介

闪屏在iOS规范里被称为Launch Screen,即用户在触发应用时立即显示在屏幕上的页面,很快就会被应用中第一个页面所替换,主要为增强应用的视觉感知。闪屏的配置与测试都是在工匠平台(链接)完成。

测试关注点

各类型的闪屏配置能正常生效。

测试

在工匠平台建立闪屏测试配置,分别配置测试闪屏类型、闪屏时长、闪屏次数、闪屏启动方式、闪屏页跳转的功能是否正常。

10. 扫码

测试

开启wifi、4G网络等扫码功能正常使用。

扫码页面的扫码历史记录、选择图片等功能正常使用。

11. 定位

简介

脚手架接入的是高德定位SDK,提供GPS定位、网络定位。

测试

开启GPS定位,通过定位接口获得独客App经纬度信息。

关闭GPS定位,开启wifi、4G网络等,定位接口可以返回独客App的经纬度信息。

关闭GPS、网络,定位接口无法获得App的经纬度信息。

二、 网络

1. MTOP

简介

MTOP是一个面向集团用户的无线API网关,支持HTTP和HSF两种访问方式。MTOP提供了以下功能:

API标准化:定义了一套标准的API数据协议,规范了API的请求和应答。

安全稳定:API授权功能保证API只被已授权用户访问,签名验证功能保证了API调用中数据不被篡改,客户端结合安全黑匣子工具保护客户端中密钥的安全性。

多维度报表:提供多维度的准实时报表,包括客户端、渠道、版本、API等维度,获取API调用的总量、平均响应时间、错误率等信息,并可以查看不同的错误信息出现的次数。

在线监控:支持API级别监控。

测试

独客App调用任意Mtop接口,抓包查看请求参数x-appkey、x-app-ver,确认与当前app key,app版本一致。

2. ACCS

简介

ACCS提供全双工、低延时、高安全的通道服务,同时具备实时推送消息能力。目前主要使用场景是推送、消息同步、IM等。

测试

由于ACCS主要用于agoo消息推送,ACCS的测试其实可以和后续的消息测试合并,能通过Agoo顺利发送消息,那么ACCS也就通了。

三、 存储

1. 统一存储

简介

统一存储框架作为手淘的统一存储框架经历过长时间的考验,作为脚手架App默认接入。提供关系型存储、KV存储,上层的业务有图片库、启动闪屏、MTOP等。

测试

统一存储作为底层通用的能力,可以在上层使用的业务场景下测试。图片库、闪屏业务场景测试时就可以覆盖,不建议单独测试。

四、 安全

1. 无线保镖

简介

无线保镖是安全部门推出的移动端应用完整性、应用运行环境可行性,数据安全保障的SDK解决方案。

测试

通过App集成检测,查看App无线保镖接入是否正确

独客App调用任意Mtop接口,查看是否能正确获得返回结果

五、 高可用

1. CashReport & 安全模式

简介

手淘架构组在移动高可用上做了很多文章,这里主要简介crashReport和安全模式。crashReport在App触发Crash、ANR、OOM时会自动上报相关日志信息,提供丰富的数据供特种分析、调用追踪、现场还原等;安全模式,针对低级bug导致的crash会自动进行捕获,以一种优雅的方式(返回crash前的页面或者App首页)拦截crash,防止客户端频繁崩溃,并提供短时间内客户端频繁触发crash后的自修复功能。

测试

crash日志,独客App debug模块下编写会触发crash,比如NPE的入口。触发后在EMAS,平台上搜索对应App的crash日志,查看crash Report是否正确上报

安全模式,30秒内连续触发3次crash,会进入二级安全模式,出现安全保护页面,提醒App是否需要恢复默认设置。页面默认是手淘样式,独客App需自定义定制。

六、 运维

1. 日志(Tlog)

简介

TLog是一个分布式实时数据处理平台,移动端日志上报解决方案。

测试

Tlog作为底层日志框架,支撑了很多上层业务,Mtop、消息、App启动等场景都会使用到Tlog,无需额外编写测试方法。启动App后,可以在EMAS日志中拉取查看Tlog日志

2. 监控

Crash(EMAS 魔兔)

简介

应用Crash时需要记录Crash的原因等详细信息,crashReport在App触发Crash、ANR、OOM时会自动上报EMAS 魔兔平台。

测试

独客App debug模块下编写触发crash的入口,触发后在EMAS,平台上搜索对应App的crash日志,确认Crash信息是否正确(时间、机型、系统、堆栈信息等)。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容