ATS自动化

到了2017.1.1,所有提交的app不允许使用 NSAllowsArbitraryLoads = Yes 来绕过ATS的限制,你必须设置为NO。

ATS自动化_第1张图片
Screen Shot 2016-12-20 at 8.50.08 PM.png

如果你的app有着异常复杂的业务逻辑,手动排查找出所有的HTTP请求是非常费时费力的。
于是ATS自动化呼之欲出了。
下面记载了一些ATS自动化遇到的一些问题

定义问题

功能验证时能直接体验到功能的可用与否(或是网页打不开、头像拉取失败)。所以一种可取的方案就是打开ATS开关,功能验证的测试同学们测试用例时辅助发现ATS问题。
但自动化怎么定义问题?

App日志

如果开发们在做HTTP请求时的completion回调里打印了error,那我们还是非常方便的从日志log提取问题的。(NSLog会直接打到控制台)。但如果开发没有打印error,那这部分问题就无法发现了

ATS自动化_第2张图片
Screen Shot 2016-12-20 at 8.56.44 PM.png
Dec 20 20:57:50 TKMB161106H9 TestATS[3193] : Request failed: Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection." UserInfo={NSUnderlyingError=0x170058ed0 {Error Domain=kCFErrorDomainCFNetwork Code=-1022 "(null)"}, NSErrorFailingURLStringKey=http://www.baidu.com/, NSErrorFailingURLKey=http://www.baidu.com/, NSLocalizedDescription=The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.}

系统日志

当然系统还是能觉察到HTTP请求的

Dec 20 20:31:46 TKMB161106H9 TestATS(CFNetwork)[3160] : App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
Dec 20 20:31:46 TKMB161106H9 TestATS(CoreFoundation)[3160] : Bundle: CFBundle 0x100410840  (framework, loaded), key: Err-1022, value: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection., table: Localizable, localizationName: (null), result: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

但遗憾的是:

  • 这些log并不能看到请求的URL
  • App启动后如果系统发现HTTP请求,那只会打印一次第一条log(即...has blocked a cleartest...)
  • 而第二条(即The resource could not...)只会在App安装后第一次启动发生HTTP请求时打出,以后再也不出现了
    换句话说,系统在一个进程里面发现第一个HTTP请求后会打印log1,之后都不会打印log1(除非强杀进程重新启动app,当然这是另外一个进程了)。打印log2,同时标记对应App,被标记的App不会再打印log2。

怎么办

结合代码搜索,和App日志,我们能发现大部分的问题。当然,剩下的那部分,我也暂时想不到办法了。有高人有大法望留言告知我。

你可能感兴趣的:(ATS自动化)