SlideShare a Scribd company logo
1 of 39
Download to read offline
豆瓣iOS自动化测试实践和经验




         豆瓣QA: 芈峮	
  
iOS自动化测试	
  
	
  
•  持续构建iOS应用	
  

•  自动化测试工具评估	
  

•  Ynm3k功能简介	
  
持续构建iOS应用	
  
传统的测试发布流程	
  

           • Dev	
  	
  
code	
       Coding	
  


                            • Tester	
  
            test	
            tes9ng	
  


                                           • PM	
  
                           release	
         release	
  
原始的让你抓狂的流程	
  
发现问题	
  
•  UED	
  和PM无法在测试阶段无缝的介入	
  

•  编译打包的过程没有纳入测试管理	
  

•  测试人员很难建立被测app和版本管理工具中
   的版本号之间的关联关系	
  

•  整个流程需要更加容易执行,并且需要解放
   dev,让dev把更多的精力放在coding上。	
  
解决方案——工具化,自动化	
  
实际操作	
  

           Wait	
  




Then	
  
实现方法	
  
•  Jenkins	
  +	
  	
  hockey	
  

	
  	
  	
  	
  步骤:	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  1	
  	
  下载代码	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  2	
  	
  	
  使用Xcode	
  integra9on生成ipa	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  3	
  	
  	
  把生成的ipa拷贝到hockey的目录下	
  
iOS自动化测试工具评估	
  
豆瓣需要测试工具的特点	
  

•  框架方面: 标准的xUnit框架结构	
  

•  UI识别: 以扩展库的形式提供UI识别方法	
  

•  启动方法: 需要有命令行启动方式	
  

•  测试结果:	
  xml或者html格式结果,或者提供
   相关方法定制输出测试结果	
  
商业工具	
  

•  DeviceAnywhere	
  
	
  	
  	
  	
  	
  	
  	
  
•  QTP	
  

•  ⋯⋯	
  
Unit	
  Test	
  Tools	
  

•  OCUnit	
  

•  GTM	
  	
  

•  GHUnit	
  
	
  	
  	
  	
  	
  	
  	
  
Acceptance	
  Test	
  Tools(open	
  Source)	
  

•  UISpec	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  Frank	
  
	
  
•  KIF	
  	
  
	
  	
  	
  	
  	
  	
  
	
  
	
  	
  
Acceptance	
  Test	
  Tool	
  

•  UI	
  Automa9on(官方)	
  

•  FoneMonkey	
  
	
  	
  	
  	
  	
  	
  	
  
FoneMonkey	
  	
  VS	
  	
  UI	
  Automa9on	
  

                 FoneMonkey	
     UI	
  Automa1on	
  

框架结构	
           OCUnit	
         无	
  

ui识别方式多样化	
      无	
              有,支持至少2种方式	
  

命令行启动测试	
        有	
              有	
  

输出测试报告集成CI	
     有	
              无	
  
UI	
  Automa9on	
  Advanced	
  	
  

•  Tuneup.js	
  

•  Jasmine	
  with	
  UI	
  Automa9on	
  

	
  
	
  
	
  
结论	
  

•  UI	
  Automa9on	
  	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  官方提供,还提供了网络,内存等方面的
监控。不满足框架的部分,我们可以改造,
我们可以扩展。	
  
Ynm3k来了	
  
为什么是ynm3k	
  
Ynm3k功能列表	
  
功能结构	
         解决方案	
                 详细说明	
  

xUnit	
        引入了YUItest	
           可以使用testSuite	
  testcase等,并
                                      且可以使用YUItest的相关事件。	
  
ui识别	
         引入了一个Finder,并且 原生API定位方式,写法过于复杂。
               可以使用UI	
  Automa9on	
   并且在语义表达方式不友好。
               原生的API	
                Finder模仿selenium的接口形式,
                                       对ui	
  识别的方法进行了封装。	
  
命令行启动测试	
      原生支持,	
                封装了一个更友好的shell脚本来完
                                      成这个工作	
  
测试结果xml格式      YUItest                YUItest生成测试结果。并且由
输出	
           +performTaskWithPathAr performTaskWithPathArgumentsTim
               gumentsTimeout	
  	
   eout	
  方法写成文件	
  
Monkey测试	
     UI	
  Automa9on	
  API组合使 模仿android	
  Monkey	
  写了一个做随
               用	
                       机健壮性测试的iOSMonkey	
  
Ynm3k	
  Dev	
  



                                      	
  
   	
  	
  	
  	
  	
  	
  	
  	
  	
  
现在开始使用ynm3k	
  

•  下载	
  
	
  	
  	
  	
  	
  -­‐-­‐	
  hXps://github.com/douban/ynm3k	
  


•  初始化环境	
  
	
  	
  	
  	
  -­‐-­‐	
  	
  	
  	
  sh	
  	
  setup.sh	
  
无需coding,即可Monkey	
  test	
  
•  /robot4ios/u9l/iosMonkey.js	
  

	
  	
  	
  	
  设置并且运行:	
  
Hello	
  Ynm3k	
  
UI	
  LogTree	
  
UI	
  	
  Auto	
  Test	
  
UI	
  Automa9on	
  API	
                  Ynm3k	
  API	
  
豆瓣电影实践	
  
豆瓣FM实践	
  
豆瓣阅读实践	
  
自动化测试的约定	
  
•  TestCase	
  和	
  TestSuite约定:	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  simpletest.js	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  demotest.js	
  
自动化测试的约定	
  
•  name属性	
  	
  
•  value属性(只有在控件为text的时候才有效,
   并且只要表示text属性就好)	
  

•  Name属性的命名规则:	
  
	
  	
  	
  	
  	
  	
  	
  	
  1	
  	
  不重复	
  
	
  	
  	
  	
  	
  	
  	
  	
  2	
  	
  不要变化	
  
	
  	
  	
  	
  	
  	
  	
  	
  3	
  	
  	
  只需要在被操作到的控件上添加就好,	
  
加入持续集成	
  
持续集成的问题	
  
•  开机以后第一次,命令行启动Instrument会
   要求输入密码。	
  



-­‐-­‐-­‐-­‐解决方案Tao测试 的这边文章:
关于Instrument远程执行自动化脚本模拟器页
面卡住问题	
  
持续集成后	
  
gitcommit	
  
加入豆瓣	
  
•  移动设备开发工程师	
  

•  QA工程师(高级移动测试工程师)	
  

•  更多豆瓣职位	
  

•  team@douban.com	
  
	
  
Q	
  &	
  A	
  

您也可以通过以下方式找到我:	
  
豆瓣主页:hXp://www.douban.com/people/mijun/	
  
Email: mijun@douban.com	
  
Sina微博:	
  @芈峮	
  
Thanks	
  

More Related Content

What's hot

PHPUnit slide formal
PHPUnit slide formalPHPUnit slide formal
PHPUnit slide formaljameslabs
 
Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超drewz lin
 
Web testing automation
Web testing automationWeb testing automation
Web testing automationkuozui
 
广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdfbj_qa
 
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)Max Lai
 
Web development with zend framework
Web development with zend frameworkWeb development with zend framework
Web development with zend frameworkthinkinlamp
 
例外處理實務
例外處理實務例外處理實務
例外處理實務Jeff Chu
 

What's hot (8)

PHPUnit slide formal
PHPUnit slide formalPHPUnit slide formal
PHPUnit slide formal
 
Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超
 
Web testing automation
Web testing automationWeb testing automation
Web testing automation
 
广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf
 
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)
 
Web development with zend framework
Web development with zend frameworkWeb development with zend framework
Web development with zend framework
 
單元測試
單元測試單元測試
單元測試
 
例外處理實務
例外處理實務例外處理實務
例外處理實務
 

Similar to 豆瓣I os自动化测试实践和经验

Foundation of software development 1
Foundation of software development 1Foundation of software development 1
Foundation of software development 1netdbncku
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationnetdbncku
 
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本延胜 黄
 
敏捷测试中的工具实现
敏捷测试中的工具实现敏捷测试中的工具实现
敏捷测试中的工具实现drewz lin
 
2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發AgileCommunity
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网yang alex
 
Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...Jimmy Lai
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
Elixir 好用的編輯器
Elixir 好用的編輯器Elixir 好用的編輯器
Elixir 好用的編輯器bobo52310
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
持续交付最佳实践——百度技术沙龙201110
持续交付最佳实践——百度技术沙龙201110持续交付最佳实践——百度技术沙龙201110
持续交付最佳实践——百度技术沙龙201110Qiao Liang
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer TalkLarry Cai
 
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)JoXuZi
 
测试驱动的前端开发初探
测试驱动的前端开发初探测试驱动的前端开发初探
测试驱动的前端开发初探hua qiu
 
Test driven-frontend-develop
Test driven-frontend-developTest driven-frontend-develop
Test driven-frontend-developfangdeng
 

Similar to 豆瓣I os自动化测试实践和经验 (20)

Foundation of software development 1
Foundation of software development 1Foundation of software development 1
Foundation of software development 1
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Xpp
XppXpp
Xpp
 
Unit test
Unit testUnit test
Unit test
 
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本
 
敏捷测试中的工具实现
敏捷测试中的工具实现敏捷测试中的工具实现
敏捷测试中的工具实现
 
PHPUnit
PHPUnitPHPUnit
PHPUnit
 
2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网
 
Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
Elixir 好用的編輯器
Elixir 好用的編輯器Elixir 好用的編輯器
Elixir 好用的編輯器
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
Tip for Editors
Tip for EditorsTip for Editors
Tip for Editors
 
Berserk js
Berserk jsBerserk js
Berserk js
 
持续交付最佳实践——百度技术沙龙201110
持续交付最佳实践——百度技术沙龙201110持续交付最佳实践——百度技术沙龙201110
持续交付最佳实践——百度技术沙龙201110
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
 
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
 
测试驱动的前端开发初探
测试驱动的前端开发初探测试驱动的前端开发初探
测试驱动的前端开发初探
 
Test driven-frontend-develop
Test driven-frontend-developTest driven-frontend-develop
Test driven-frontend-develop
 

More from drewz lin

Web security-–-everything-we-know-is-wrong-eoin-keary
Web security-–-everything-we-know-is-wrong-eoin-kearyWeb security-–-everything-we-know-is-wrong-eoin-keary
Web security-–-everything-we-know-is-wrong-eoin-kearydrewz lin
 
Via forensics appsecusa-nov-2013
Via forensics appsecusa-nov-2013Via forensics appsecusa-nov-2013
Via forensics appsecusa-nov-2013drewz lin
 
Phu appsec13
Phu appsec13Phu appsec13
Phu appsec13drewz lin
 
Owasp2013 johannesullrich
Owasp2013 johannesullrichOwasp2013 johannesullrich
Owasp2013 johannesullrichdrewz lin
 
Owasp advanced mobile-application-code-review-techniques-v0.2
Owasp advanced mobile-application-code-review-techniques-v0.2Owasp advanced mobile-application-code-review-techniques-v0.2
Owasp advanced mobile-application-code-review-techniques-v0.2drewz lin
 
I mas appsecusa-nov13-v2
I mas appsecusa-nov13-v2I mas appsecusa-nov13-v2
I mas appsecusa-nov13-v2drewz lin
 
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolfDefeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolfdrewz lin
 
Csrf not-all-defenses-are-created-equal
Csrf not-all-defenses-are-created-equalCsrf not-all-defenses-are-created-equal
Csrf not-all-defenses-are-created-equaldrewz lin
 
Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21
Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21
Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21drewz lin
 
Appsec usa roberthansen
Appsec usa roberthansenAppsec usa roberthansen
Appsec usa roberthansendrewz lin
 
Appsec usa2013 js_libinsecurity_stefanodipaola
Appsec usa2013 js_libinsecurity_stefanodipaolaAppsec usa2013 js_libinsecurity_stefanodipaola
Appsec usa2013 js_libinsecurity_stefanodipaoladrewz lin
 
Appsec2013 presentation-dickson final-with_all_final_edits
Appsec2013 presentation-dickson final-with_all_final_editsAppsec2013 presentation-dickson final-with_all_final_edits
Appsec2013 presentation-dickson final-with_all_final_editsdrewz lin
 
Appsec2013 presentation
Appsec2013 presentationAppsec2013 presentation
Appsec2013 presentationdrewz lin
 
Appsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitations
Appsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitationsAppsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitations
Appsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitationsdrewz lin
 
Appsec2013 assurance tagging-robert martin
Appsec2013 assurance tagging-robert martinAppsec2013 assurance tagging-robert martin
Appsec2013 assurance tagging-robert martindrewz lin
 
Amol scadaowasp
Amol scadaowaspAmol scadaowasp
Amol scadaowaspdrewz lin
 
Agile sdlc-v1.1-owasp-app sec-usa
Agile sdlc-v1.1-owasp-app sec-usaAgile sdlc-v1.1-owasp-app sec-usa
Agile sdlc-v1.1-owasp-app sec-usadrewz lin
 
Vulnex app secusa2013
Vulnex app secusa2013Vulnex app secusa2013
Vulnex app secusa2013drewz lin
 
基于虚拟化技术的分布式软件测试框架
基于虚拟化技术的分布式软件测试框架基于虚拟化技术的分布式软件测试框架
基于虚拟化技术的分布式软件测试框架drewz lin
 
新浪微博稳定性经验谈
新浪微博稳定性经验谈新浪微博稳定性经验谈
新浪微博稳定性经验谈drewz lin
 

More from drewz lin (20)

Web security-–-everything-we-know-is-wrong-eoin-keary
Web security-–-everything-we-know-is-wrong-eoin-kearyWeb security-–-everything-we-know-is-wrong-eoin-keary
Web security-–-everything-we-know-is-wrong-eoin-keary
 
Via forensics appsecusa-nov-2013
Via forensics appsecusa-nov-2013Via forensics appsecusa-nov-2013
Via forensics appsecusa-nov-2013
 
Phu appsec13
Phu appsec13Phu appsec13
Phu appsec13
 
Owasp2013 johannesullrich
Owasp2013 johannesullrichOwasp2013 johannesullrich
Owasp2013 johannesullrich
 
Owasp advanced mobile-application-code-review-techniques-v0.2
Owasp advanced mobile-application-code-review-techniques-v0.2Owasp advanced mobile-application-code-review-techniques-v0.2
Owasp advanced mobile-application-code-review-techniques-v0.2
 
I mas appsecusa-nov13-v2
I mas appsecusa-nov13-v2I mas appsecusa-nov13-v2
I mas appsecusa-nov13-v2
 
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolfDefeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
 
Csrf not-all-defenses-are-created-equal
Csrf not-all-defenses-are-created-equalCsrf not-all-defenses-are-created-equal
Csrf not-all-defenses-are-created-equal
 
Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21
Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21
Chuck willis-owaspbwa-beyond-1.0-app secusa-2013-11-21
 
Appsec usa roberthansen
Appsec usa roberthansenAppsec usa roberthansen
Appsec usa roberthansen
 
Appsec usa2013 js_libinsecurity_stefanodipaola
Appsec usa2013 js_libinsecurity_stefanodipaolaAppsec usa2013 js_libinsecurity_stefanodipaola
Appsec usa2013 js_libinsecurity_stefanodipaola
 
Appsec2013 presentation-dickson final-with_all_final_edits
Appsec2013 presentation-dickson final-with_all_final_editsAppsec2013 presentation-dickson final-with_all_final_edits
Appsec2013 presentation-dickson final-with_all_final_edits
 
Appsec2013 presentation
Appsec2013 presentationAppsec2013 presentation
Appsec2013 presentation
 
Appsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitations
Appsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitationsAppsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitations
Appsec 2013-krehel-ondrej-forensic-investigations-of-web-exploitations
 
Appsec2013 assurance tagging-robert martin
Appsec2013 assurance tagging-robert martinAppsec2013 assurance tagging-robert martin
Appsec2013 assurance tagging-robert martin
 
Amol scadaowasp
Amol scadaowaspAmol scadaowasp
Amol scadaowasp
 
Agile sdlc-v1.1-owasp-app sec-usa
Agile sdlc-v1.1-owasp-app sec-usaAgile sdlc-v1.1-owasp-app sec-usa
Agile sdlc-v1.1-owasp-app sec-usa
 
Vulnex app secusa2013
Vulnex app secusa2013Vulnex app secusa2013
Vulnex app secusa2013
 
基于虚拟化技术的分布式软件测试框架
基于虚拟化技术的分布式软件测试框架基于虚拟化技术的分布式软件测试框架
基于虚拟化技术的分布式软件测试框架
 
新浪微博稳定性经验谈
新浪微博稳定性经验谈新浪微博稳定性经验谈
新浪微博稳定性经验谈
 

豆瓣I os自动化测试实践和经验