萌萌妈妈 发表于 2015-1-18 11:32:26

IOS编程之专访《iOS测试指南》作者dn仓酷云

iPhoneSDK安装,然后最基本的是你要熟悉C语言,再来你得学习开发iPhone所使用的Objective-C语言,接著是Cocoa。如果你是Mac平台开发的入门用户在2014年QCon北京年夜会上,dn举行了他的旧书《iOS测试指南》的签售会。在年夜会中,InfoQ与dn举行了一次专访,dn分享了他在iOS平台做主动化测试的一些履历。
dn有着多年的测试履历,前后在高德、豆瓣和豌豆夹处置过测试相干的事情。他在豆瓣事情时,完成而且开源了iOS的主动化测试工具ynm3k,而且方才完成了体系先容iOS主动化测试的旧书《iOS测试指南》。
InfoQ:dn你好,我想请你先先容一下你的测试事情履历。
dn:我是03年卒业的,修了三年地铁今后就转行做软件测试事情了。到如今,做测试有七到八年的工夫,我是从豆瓣入手下手做的挪动测试相干的事情,事先挪动测试也恰好遇上一个起步的阶段,以是另有一点小小的心得。
InfoQ:我想问的第一个主题是关于主动化测试和延续集成的方面的成绩。就我所懂得的情形,如今年夜部分的互联网公司关于挪动真个测试的工具都还处于对照低级的阶段,良多公司也没有真正使用上谁人主动化测试。我今天跟阿里的iOSLeader聊,他们没有效到挪动端主动化测试,我之前在网易事情,他们也没有做挪动端主动化测试,你以为是甚么缘故原由形成挪动端主动化测试还没有盛行起来,没有年夜范围的使用?
dn:测试的投进产出比,特别是主动化测试的投进产出比一向都没有一个十分复杂无效的申明办法。当投进产出比的说不分明的时分,大概良多人选择张望。tinyfool在给我写这本书的书序的时分,他也做了一个小查询拜访,基础上就是意外试,大概复杂测试的占很年夜的比重,对照仔细的测试十分少。测试做的十分少次要有这么几方面的缘故原由:
1、挪动端是一个重生事物,总结出来的办法还没有被广泛的承认。挪动端承接了更多UI展示方面的事情,个中有良多的和人交互的工具。不仅功效庞大,而且还没有独一的尺度。测试的注重力很简单不分离,而且效果十分的不分明。
2、挪动端如今更多的是市场举动,必要有产物的占据土地。还没有到精雕细琢的时期。以是,测试在这个时分分明不如产物大概计划师有话语权。而且如今必要的是“有”,还没有到“精”的水平。
3、国际测试界绝对对照急躁,更多的不是从手艺角度往办理成绩。以是招致测试必要存眷点过于分离,没有真实的界说好本人的事情职责和局限。甚么事变都必要存眷,最初就是甚么事变都没有存眷好。
我对照侥幸,事先往了豆瓣。豆瓣事先明白的界说了QA的事情职责——保举新手艺大概开辟新工具,闪开发工程师更好的测试。而且计划师在测试阶段也会投进很年夜的精神往review计划稿中各类交互方面的不敷。
InfoQ:你在豆瓣入手下手实验iOS的主动化测试,那我想晓得你在这个过程当中获得哪些功效?
dn:刚往豆瓣接办事情的时分本人头脑仍是有范围性的,只是把本人事情定位在往完成一些基于界面操纵的主动化的工具,这个实在如今看来大概它是一个切进点,可是大概并非一个十分好的切进点,实在另有良多事情要做,因为事先本人头脑范围以是就做了。
别的一方面,就是由于只想到这一点,以是就是精神对照会合,更简单出一些功效。2011年岁尾的时分入手下手做这些事情,本人前后找了有五款主动化测试工具调研。调研的办法是先写一些demo的工具,然后再看看工具的源代码。弄分明事情的架构和底层道理。最初发明,事先的工具都有一些如许那样的成绩。然后本人就入手下手梦想写一个合适本人的这个主动化工具。
当iOS5公布今后,苹果的关于UIAutomation举行了一个改善,增添了performTaskWithPathArgumentsTimeout接口。经由过程该接口能够完成UIAutomation和内部程序的复杂通讯。基于这个改善,本人拉了在豆瓣的一个开辟的同事,两团体就用一个半月的工夫写了一个主动化测试工具。也是由于有了performTaskWithPathArgumentsTimeout接口的公布,以是淘宝也事先使用谁人接口写了别的一种完成的iOS的测试工具。
在完成ynm3k的开辟今后,利用它为豆瓣FM和豆瓣影戏写了一些主动化测试用例。效果还能够。
InfoQ:淘宝谁人开源了吗?
dn:淘宝谁人开源了,叫athrun,我谁人也开源了叫ynm3k,事先是12年7月份,谁人ADC的专门都有分享,在网上应当也都有链接Athruninstrumentdriver和豆瓣iOS主动化测试理论和履历。
InfoQ:事先你们花一个半月开辟这个主动化测试工具是用20%的事情工夫,仍是完整的事情工夫来做这个事变?由于我以为你在开辟这段工夫内一定也有一般的一般的测试义务要完成,你们公司是怎样均衡这件事变的?
dn:我们应当是专业工夫完成的这个框架。次要就是早晨,大概是快上班的时分,本人挤出来一些工夫做这个事变。
InfoQ:跟同事的共同也是在那段工夫来举行的?
dn:事先就是我俩合作绝对来讲很明白,一方面必要有更好的遍历控件和定位控件的办法,是由我来实际的;另外一方面,必要引进一个JavaScript言语的单位测试框架。这部分由我豆瓣的同事@SeanLionheart完成,他在正式公布的时分已往美国上学。
我们两个之间的共同十分顺畅,由于各自的部分是完整解耦的,互补不影响。在交换的时分,还能互相给出本人的设法和定见。
InfoQ:你们做这件事变,豆瓣有从文明上,大概从其他方面临你们这件事变有勉励大概鼓励吗?我想晓得,是不是这个公司的文明关于增进了你们做这件事变?
dn:这个一定是增进的。起首这个设法是我在一次周会上提出来的。提出来今后,事先我的Leader解彦博先生就出格勉励我们往做这件事变,而且人人都很感乐趣,事先的全部测试团队都给我们供应定见大概交换过设法。
第二,在豆瓣的骨子里,就有良多工程师往乐意往用本人的专业工夫往写一些小工具来改善效力,大概是进步效力,大概改善流程,这个在豆瓣都是很盛行。本人写的工具,在豆瓣外部失掉了普遍的使用,对工程师来讲这是很高的声誉。
InfoQ:当你产物在疾速迭代的时分,它的全部页面的构造,界面逻辑城市在疾速变更,这个时分主动化测试是不是是在这类场景下不太合适?主动化测试是怎样办理产物疾速迭代的成绩呢?
dn:没法顺应变更一向是主动化测试的软肋。起首,有一些变更必要测试做兼容,这个兼容大概必要测试框架自己来撑持,也大概必要主动化测试剧本经由过程一些加倍条理化的办法来兼容。举一个例子来讲,一个登录按钮,从NavigationBar上移到了大概在两头页面的一个LoginButton下面,以是这类情形下是应当往兼容的,由于它只是地位产生了变更,它年夜的营业逻辑没有产生变更,这类是必要测试框架往兼容的。假如是更年夜一点的变更,必要测试剧本必定量的保护。
其次,测试剧本必定要不休的保护。有良多主动化测试终极失利是由于时代保持过主动化测试剧本的保护。主动化测试剧本不仅必要保护,还必要有很好的代码布局。相干测试剧本的代码布局能够参看一些PageObject的头脑,也能够看看cucumber等BDD工具,城市匡助你最小修改的保护主动化测试剧本。固然,主动化测试接进工程的机会等要素也很主要。这些都没有流动的形式,必要分离本人团队的特性来展开。主动化测试和延续集成是一对好基友。主动化测试实行和了局展现都必要延续集成的匡助。有了延续集成,主动化测试才会被更多的人承认,可才会有更多的人到场到主动化测试的保护中来。
最初,大概必要更新一下对主动化测试的熟悉。主动化测试不会下降本钱,主动化测试不会自动发明bug。主动化测试能够更尺度更疾速的反复回回一些功效测试。以是,对主动化测试有一个加倍客不雅的熟悉,才会匡助你在详细的工程项目中更好的展开主动化测试理论。
InfoQ:方才你提到你在豆瓣开源的ynm3k这个开源测试工具,然后你同时也提到淘宝也开源的athrun,你有无对照过你们二者之间工具各自有甚么特性?
dn:起首两款工具都同时用到了一个接口,接口的名字是:performTaskWithPathArgumentsTimeout,这个接口能够往运转一个当地的命令路程序。这个接口供应了UIAutomation和命令行工具的一个交互的大概。
我用谁人接口用的十分轻量,必要把运转完的测试了局经由过程谁人接口写文件写出来,写成尺度的XML今后,经由过程Jenkins大概是Hudson这些延续集成的工具,把它展示在延续集成工具的页面外头。
我只是写了文件,淘宝的athrun做了一个历程之间的通讯,以是他谁人工具办理的成绩是:用户能够不必JavaScript来写UIAutomation的工具。athrun本人界说了通讯协定,而且经由过程performTaskWithPathArgumentsTimeout接口来完成和UIAutomation的通讯。用户可使用Java言语来做UIAutomation的主动化测试。
一样相似的外洋也有,就像eBay的ios-driver,另有就是比来出格火的appium,道理上都是经由过程谁人接话柄现了两个历程间的通讯来驱动UIAutomation来完成主动化测试的。appium在驱动UIAutomation的基本上还兼容了WebDriver的JsonWireProtocol协定。利用者可使用Java、Python、Ruby等言语间接挪用WebDriver的API来完成iOS的主动化测试。WebDriver对良多Web真个测试工程师来讲都很熟习。因为appium兼容了JsonWireProtocol协定,利用者还可使用Gird来并发的测试。固然,appium也撑持Android的一些主动化测试。
在《iOS测试指南》书中,也许也举行了一个分类,ynm3k属于扩大型的,扩大型的工具只是供应了一些JavaScript的开辟库,用户只必要import出去,大概就会有更简化的写法和更壮大的功效,然后可是对自己的UIAutomation的,就基础上没有改动。
可是经由过程苹果供应performTaskWithPathArgumentsTimeout接口举行历程间通讯的这类主动化测试工具,我在书内里把它回类为驱动型的测试工具。利用驱动型的测试工具,用户能够有更多种言语的选择,而且能够具有静态的调试功效。可是驱动型的测试工具,没法在instruments的图形界面下运转,也就得到了,运转主动化测试的时分同时反省内存保守,统计收集流量等功效。以是,工具对照上去只要合适不合适的说法,并没有相对意义上的好与坏。
InfoQ:方才也都是提到你的UI测试的书籍,我但愿你复杂先容一下这本书合适哪些读者,有无甚么你以为出格值得保举的书内里的内容能够分享给人人?
dn:我书里前两章写的很短,就说了一些基础的观点;第三章说的是单位测试的一些理论,而且完成一个复杂的app的单位测试。
第四章就扼要的先容一下Automation的基本常识,良多主动化测试工具都是基于UIAutomation来做的。不论是用哪一个工具,从底层懂得一些UIAutomation的API,都是有匡助。
第五章写的是iOS真个Web测试的一个计划,先容了两种工具,个中也提到了Appium,我也更保举利用Appium来做主动化测试;然后第六章先容了延续集成方面的事变,就是三到六章应当都是一个综合办理计划中的各个部分的妙技的分离先容。然后第七章先容了一下,除功效测试,手机端还必要往做哪些范例的测试,大概借助工具,我们应当怎样复杂的往确认,大概是往更准确的权衡;第八章是基于第3、4、5、六章然后做了一个最初的一个汇总先容。由于誊写的对照慢,在书稿还没有完整完成的时分,苹果就公布了Xcode5和OSX10.9。在这一次更新今后,苹果自己也供应了一个延续集成的办理计划。在Xcode5中还晋级了单位测试框架。以是这一系列的变更就有了第九章的内容。
书的内容自己是想给刚进门iOS测试的工程师来看的。最早写书的次要目标也是,为了汇总一些材料。由于相干iOS测试的材料其实是太少而且太分离了。可是当誊写完今后,才发明本来用到了3-4种酿成言语。以是,如今看来大概还必要读者有必定的编程功底。以是本书的最合适读者是有编码才能大概测试履历的人必要懂得挪动端测试的如许一团体群。
InfoQ:你方才讲到你的工具是开源的,然后你花了专业工夫在这个下面,然后你的这本书是你的一团体经由过程专业工夫写作完成的作品,我就想晓得你开源和写作也许消费了你几的专业工夫,专业工夫内里你是怎样布置这些事变的?

管理你的ViewController的层次可以自己写View切换的动画关掉他默认的动画文档:还有个蛋疼的UIWindow都快忘了他了因为iOS是从MacosX过来的很多工具直接拿来用这个UIWindow就是在iOS里每个App独占屏幕所以同时存在的只有一个UIWindow

兰色精灵 发表于 2015-1-21 09:40:36

在百度搜索你想要了解的类名(苹果的cocoa和cocoatouch框架的类名很有特点很容易搜到,前缀都是NS or UI),看别人写的博客详解

愤怒的大鸟 发表于 2015-1-30 14:03:07

到大三时,学院与我去培训的机构成立了实习基地,并让我们寒假去实习了一段时间,感觉还不错,于是在大四的时候去培训了

爱飞 发表于 2015-2-6 13:05:54

iPhone文件系统:创建、重命名以及删除文件,NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。

只想知道 发表于 2015-2-16 04:51:05

iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。

莫相离 发表于 2015-2-16 23:22:11

学习ios没什么捷径,关键在于多动手敲,曾看到前辈开玩笑说怎么快速学会某技术,答案是:“提高打字速度,快点写代码就能快点学会了”。

admin 发表于 2015-2-22 04:48:25

重要的是,放眼全球也的确找不到第二个如苹果iOS平台这样健壮、完整、先进而且为开发者带来真实收益的开发平台来。

柔情似水 发表于 2015-3-11 01:20:27

看《iPhone 4与iPad开发基础教程》,跟着一步步来

谁可相欹 发表于 2015-3-16 20:07:11

从C语言入门,因为IOS开发用的是OC语言,是在C基础上的,不过也跟C不是很搭界,你可以直接学习OC语言也可以,

精灵巫婆 发表于 2015-3-23 00:03:42

这个办法就是在WindowsXP或Win7的电脑上,使用vmware虚拟机来搭建一个真实的Mac OS X环境。

若天明 发表于 2015-3-25 09:43:26

AD: iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。

老尸 发表于 2015-3-25 13:49:55

在百度搜索你想要了解的类名(苹果的cocoa和cocoatouch框架的类名很有特点很容易搜到,前缀都是NS or UI),看别人写的博客详解

飘灵儿 发表于 2015-3-31 14:49:00

每个行业都一样,想要一天学有所成是不可能的,一定要做好努力的准备,做ios不是简单的学会oc语言。不怕多走弯路,就怕不肯动手。

因胸联盟 发表于 2015-4-16 15:00:54

最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。

活着的死人 发表于 2015-4-17 10:38:51

看《iPhone 4与iPad开发基础教程》,跟着一步步来

小妖女 发表于 2015-4-21 15:22:45

我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下,供广大网友一起讨论交流。

乐观 发表于 2015-5-9 13:11:28

看《iPhone 4与iPad开发基础教程》,跟着一步步来

第二个灵魂 发表于 2015-6-8 20:24:59

众多研发人员积极参与到iOS平台的开发中来也就不足为奇了。

再现理想 发表于 2015-6-9 17:04:39

我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下,供广大网友一起讨论交流。

简单生活 发表于 2015-6-11 02:49:18

down下code4app网站的每个分类的代码挨着看
页: [1]
查看完整版本: IOS编程之专访《iOS测试指南》作者dn仓酷云