选择UITesting自动化的几个理由
1、关于选用UITesting 作为自动化测试框架,考虑过一下几方面:
(1)测试代码编写的成本
(2)是否可调式
(3)框架的稳定性
(4)测试报告(截图,代码覆盖率,…)
(5)WebView的支持(很多App都用到了H5)
(6)自定义控件的测试
(7)是否需要源代码
(8)能否需要连着电脑
(9)是否支持CI(持续集成)
....
2、从以上各方面对比UITesting Bundle功能后的结果:
(1)代码编写成本略高,但对比正经的测试开发来说,很低了。
不需要关系具体的功能逻辑实现,只要有自己的UI自动化case,需要熟练掌握OC,需要了解xctest就可以了;
(2)完全支持调试
(3)框架稳定,不需要再另外集成第三方库,不需要再担心更新Xcode以后不能使用第三方库;
(4)有框架自己的截图,但是不能自己指定截图,需要通过其他途径获取代码覆盖率....
关于自动化过程中的截图无法实现问题:
模拟器截图很方便,是因为模拟器没有真机的那种沙盒权限机制,可以随便写文件。但是我们实际在测试过程中,很少是用模拟器进行测试的
(5)支持WebView自动化测试
(6)支持自定义控件的测试,只有打开Accessibility属性
(7)必须需要源代码,并且另建Target
(8)需要连着电脑,并且是Debug模式
(9)不支持CI(持续集成)
3、关于获取代码覆盖率的尝试
(1)XcodeCoverage:https://github.com/jonreid/XcodeCoverage
哼哧哼哧的一番折腾,终于在pod成功,并且在工程中配置工程,结果报错信息如下:
又是一顿查找:
https://github.com/jonreid/XcodeCoverage/issues/40
发现这个问题至今未解决,果断放弃
(2)llvm-cov:官方文档
llvm是随Xcode一起安装的,不需要另外安装。如果遇到解析文件报错LLVM版本不对的,可以用Xcode-select --print-path看下生成文件时的Xcode路径和跑用例时用的Xcode是不是一个,如果不是,重新选择。
工程设置:
跑完case后,直接在terminal中执行以下命令(记得修改自己的目录):
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/llvm-cov report -instr-profile /Users/userName/Library/Developer/Xcode/DerivedData/xxx-fazrydnyhteyabchpbqfqcblmmxu/Build/Intermediates/CodeCoverage/Coverage.profdata /Users/userName/Library/Developer/Xcode/DerivedData/xxx-fazrydnyhteyabchpbqfqcblmmxu/Build/Intermediates/CodeCoverage/Products/Debug-iphoneos/xxx.app/xxx >/Users/userName/Desktop/llvm-cov.txt
运行后在桌面上找到该结果:
屏幕快照 2017-05-19 15.55.35.png