技術(shù)選型
Android常用6種自動(dòng)化測(cè)試框架對(duì)比
https://baijiahao.baidu.com/s?id=1607496150408281189&wfr=spider&for=pc
項(xiàng)目技術(shù)架構(gòu)
Appium + Java Client + testNG + Gradle + Spring IOC
Appium是一款開(kāi)源的跨平臺(tái)的測(cè)試框架。支持java锋勺、iOS抹缕、python等語(yǔ)言編寫(xiě)腳本厕隧,一套代碼適用多個(gè)平臺(tái)。
Appium的設(shè)計(jì)模式:client——server纺念,所以client用什么語(yǔ)言都可以,只要client能發(fā)送請(qǐng)求給server就行
TestNG是一個(gè)測(cè)試框架,在很大程度上借鑒了Java注解(JDK5.0引入的)來(lái)定義的測(cè)試咬摇,它也可以告訴你如何使用這個(gè)新功能在真實(shí)的Java語(yǔ)言生產(chǎn)環(huán)境中。
TestNG的特點(diǎn)
●注解
●TestNG使用Java和面向?qū)ο蟮墓δ?br>
●支持綜合類測(cè)試(例如煞躬,默認(rèn)情況下肛鹏,沒(méi)有必要?jiǎng)?chuàng)建一個(gè)新的測(cè)試每個(gè)測(cè)試方法的類的實(shí)例)
●獨(dú)立的編譯時(shí)間測(cè)試代碼運(yùn)行時(shí)配置/數(shù)據(jù)信息
●靈活的運(yùn)行時(shí)配置
●主要介紹“測(cè)試組”。當(dāng)編譯測(cè)試恩沛,只要問(wèn)TestNG運(yùn)行所有的“前端”的測(cè)試在扰,或“快”,“慢”雷客,“數(shù)據(jù)庫(kù)”等
●支持依賴測(cè)試方法芒珠,并行測(cè)試,負(fù)載測(cè)試搅裙,局部故障
●靈活的插件API
●支持多線程測(cè)試
JavaClient:Java客戶端 包含AndroidDriver和IOSDriver皱卓,可以通過(guò)javaClient找到頁(yè)面元素
Spring IOC:Ioc—Inversion of Control裹芝,即“控制反轉(zhuǎn)”,不是什么技術(shù)娜汁,而是一種設(shè)計(jì)思想嫂易。在Java開(kāi)發(fā)中,Ioc意味著將你設(shè)計(jì)好的對(duì)象交給容器控制存炮,而不是傳統(tǒng)的在你的對(duì)象內(nèi)部直接控制炬搭。
為什么要用IOC
第一:對(duì)象的實(shí)例化不是一件簡(jiǎn)單的事情,比如對(duì)象的關(guān)系比較復(fù)雜穆桂,依賴關(guān)系往往需要程序員去維護(hù)宫盔,這是一件非常頭疼的事。
第二:解耦享完,由容器去維護(hù)具體的對(duì)象
第三:托管了類的產(chǎn)生過(guò)程灼芭,比如我們需要在類的產(chǎn)生過(guò)程中做一些處理,最直接的例子就是代理般又,如果有容器程序可以把這部分過(guò)程交給容器彼绷,應(yīng)用程序則無(wú)需去關(guān)心類是如何完成代理的
IOC和DI的關(guān)系
誠(chéng)如前面說(shuō)的IOC是一種編程目標(biāo)或者標(biāo)準(zhǔn),那么如何實(shí)現(xiàn)這個(gè)目標(biāo)或者標(biāo)準(zhǔn)呢茴迁?可以使用DI(依賴注入)或者DL(依賴查找)當(dāng)然還有其他的比如依賴拖拽寄悯。這就比如吃午餐,標(biāo)準(zhǔn)是什么呢堕义?熱的不辣猜旬?那么實(shí)現(xiàn)了這些標(biāo)準(zhǔn)的有哪些呢?蘭州拉面倦卖,煲仔飯啊等等洒擦。這里的IOC相當(dāng)于熱的不辣 ,DI相當(dāng)于蘭州拉面煲仔飯 在spring當(dāng)中實(shí)現(xiàn)IOC的這個(gè)目標(biāo)用的就是DI這個(gè)技術(shù)怕膛。
什么是DI
DI的全稱dependency injection熟嫩,依賴注入
依賴:對(duì)象之間的依賴關(guān)系,比如類User中有一個(gè)Order類的屬性如此我們認(rèn)為User依賴了Order褐捻。
注入:容器把依賴對(duì)象填充到被依賴對(duì)象的過(guò)程叫做注入掸茅,比如容器把Order實(shí)例化,然后把Order通過(guò)各種方式 填充到User類中Order屬性的過(guò)程叫做注入柠逞。
容器 :如何理解容器呢昧狮?顧名思義,你可以理解他就是一個(gè)能夠容納對(duì)象的器皿边苹。
分層說(shuō)明
1陵且、代碼分為三層:cases -> business -> ui
2、按業(yè)務(wù)分類寫(xiě)不同的case,一個(gè)case方法原則上只調(diào)用一個(gè)business的方法慕购,邏輯與細(xì)節(jié)都封裝到business內(nèi)部聊疲。
3、business只負(fù)責(zé)邏輯處理沪悲,向上為case提供功能調(diào)用获洲,向下調(diào)用ui層。business層嚴(yán)禁出現(xiàn)與ui元素相關(guān)的代碼殿如,所有ui元素及操作都封裝到ui層贡珊。
4、ui負(fù)責(zé)封裝ui元素以及操作涉馁,向business提供功能门岔。
參考文章
https://www.cnblogs.com/findyou/p/5317156.html
https://blog.csdn.net/java_lyvee/article/details/83514583
https://www.cnblogs.com/xdp-gacl/p/4249939.html
https://www.cnblogs.com/chenssy/p/9576769.html