序言:很多人都對(duì)自動(dòng)化測(cè)試框架癡迷,我曾經(jīng)也癡迷過(guò)一段時(shí)間,以前覺(jué)得自己對(duì)框架說(shuō)的頭頭是道,現(xiàn)在回過(guò)頭來(lái)看以前,說(shuō)歸說(shuō),但在如何應(yīng)用還是欠缺,這一段時(shí)間,自己經(jīng)歷了一系列框架的構(gòu)建和應(yīng)用的時(shí)期,所以,我想主要從實(shí)際原理和應(yīng)用上來(lái)說(shuō)說(shuō)測(cè)試框架,這些框架包括:關(guān)鍵字測(cè)試框架robot,基于各種語(yǔ)言的STAF框架,集成測(cè)試框架Fit(husdon),以及elipse TPTPd性能測(cè)試框架等。這不是一套工具教程,而是一套應(yīng)用的簡(jiǎn)單思想,個(gè)人難免有局限性,見(jiàn)諒。
首先,看看robot framework吧
一、robot介紹
大家上網(wǎng)查robot,相信能查到這么幾個(gè)資料;
1、robot的快速入門(mén),就是如何簡(jiǎn)單使用robot,這是翻譯過(guò)來(lái)的教程。個(gè)人覺(jué)得,一般人拿到這個(gè)教程容易懵,因?yàn)槟闶窃诓涣私馄湓淼幕A(chǔ)上操作,所以會(huì)遇到很多問(wèn)題而無(wú)法向下進(jìn)行。
2、 robot的源碼分析,講講robot怎么一步一步工作的,現(xiàn)在robot框架不斷升級(jí),這個(gè)源碼分析教程有點(diǎn)舊了,所以代碼有些不一樣。
Robot是一個(gè)完全基于關(guān)鍵字測(cè)試驅(qū)動(dòng)的框架,它即能夠基于它的一定規(guī)則,導(dǎo)入你的測(cè)試庫(kù)(例如:其集成了selenium的測(cè)試庫(kù),即可以理解為操作web控件的測(cè)試底層庫(kù)),然后基于這些測(cè)試庫(kù),你能應(yīng)用HTML、TXT等文檔形式編寫(xiě)自己的關(guān)鍵字(這些關(guān)鍵字即你的庫(kù)組成),之后,再編寫(xiě)測(cè)試用例(測(cè)試用例由測(cè)試關(guān)鍵字組成)進(jìn)行測(cè)試。例如:一個(gè)簡(jiǎn)單的登陸測(cè)試由:登陸+輸入密碼+登出三個(gè)關(guān)鍵字組成,也可以由一個(gè)關(guān)鍵字登陸組成,關(guān)鍵字顆粒的大小可以自行定制。
二、robot原理
robot的基本運(yùn)作流程如下:
1、robot開(kāi)始測(cè)試是從cmd命令輸入,robot初始運(yùn)行程序接收命令字符(主要是用TXT或者HTML寫(xiě)的測(cè)試用例集)
2、接收之后,robot先生成初始化全局變量配置,主要是定義一系列的字段名稱(chēng)和文件名稱(chēng)(例如:日志文件名稱(chēng)等)(由settings.py中的類(lèi)完成)
3、之后,開(kāi)始解析用例文件,生成數(shù)據(jù)對(duì)象,數(shù)據(jù)對(duì)象中包含了測(cè)試集的各種數(shù)據(jù),例如:測(cè)試用例集名稱(chēng)、各個(gè)測(cè)試用例名稱(chēng)、各個(gè)關(guān)鍵字名稱(chēng)等。
4、將測(cè)試數(shù)據(jù)對(duì)象傳送給測(cè)試集合類(lèi)處理,生成測(cè)試集suite對(duì)象.
5、之后,進(jìn)行suite中的用例測(cè)試,然后調(diào)用關(guān)鍵字,找到關(guān)鍵字對(duì)應(yīng)的庫(kù)文件,進(jìn)行操作。
6、每一個(gè)操作和結(jié)果都寫(xiě)在輸出的xml文件中(有專(zhuān)門(mén)調(diào)用對(duì)輸出xml進(jìn)行操作的類(lèi))
7、測(cè)試完成后,調(diào)用轉(zhuǎn)換類(lèi)將xml文件轉(zhuǎn)換成相應(yīng)的HTML日志報(bào)告,測(cè)試完成。
三、robot的應(yīng)用
robot的缺陷在于不夠靈活,有些地方對(duì)我們普遍不適用,所以,我們需要會(huì)將robot分解,取之我們能用的,以下提供幾個(gè)分解方式
1、robot的需要用命令行的方式去啟動(dòng)測(cè)試,我們可以更改為自行寫(xiě)一個(gè)測(cè)試執(zhí)行客戶(hù)端界面,選取相應(yīng)測(cè)試用例集合,下發(fā)到robot框架的程序入口。
2、robot的用例格式需要固定,而我們很多時(shí)候都有自己的自動(dòng)化測(cè)試用例編寫(xiě)規(guī)則,這樣的話(huà),我們可以寫(xiě)一個(gè)轉(zhuǎn)換器,可以將自己的測(cè)試用例解析文件解析為robot可識(shí)別的用例文件。
3、第2個(gè)的另外一種解決方法就是:做一個(gè)數(shù)據(jù)解析器,將我們的測(cè)試用例生成傳送給測(cè)試集合的數(shù)據(jù)對(duì)象的對(duì)象規(guī)范
4、Robot的日志文檔很好,如果我們有自己的關(guān)鍵字測(cè)試框架,但需要調(diào)用robot的日志api,則可以:1)因?yàn)閞obot是解析xml文件生成Html的,我們可以調(diào)用python的xml操作庫(kù)生成符合robot的xml格式的輸出文件,然后調(diào)用robot的轉(zhuǎn)換庫(kù)生成Html即可。2)我們可以直接重構(gòu)robot的xml輸出類(lèi),簡(jiǎn)化成我們的形式即可。
而在實(shí)際腳本的應(yīng)用好處就是
1、關(guān)鍵字思想驅(qū)動(dòng)的好處就是應(yīng)用封裝的思想,保證了上層腳本的變動(dòng)性可控,增強(qiáng)了維護(hù)性。
2、容易定位問(wèn)題,一般我們定位測(cè)試問(wèn)題,首先,是從用例—功能—單個(gè)操作。而線(xiàn)性腳本則是相反的,所以會(huì)不好定位。
總結(jié):
1、很多框架不一定能拿來(lái)就用,我們要做的是分析源碼,學(xué)會(huì)拆分框架,取之自己能用的,開(kāi)源的框架一般代碼結(jié)構(gòu)都挺良好,接口定義挺清楚。盡可能的不要造車(chē)的同時(shí)還要自己造輪子。
2、從robot上面,我們可以很好的學(xué)習(xí)到關(guān)鍵字測(cè)試驅(qū)動(dòng)思想和數(shù)據(jù)測(cè)試驅(qū)動(dòng)思想的應(yīng)用。
聯(lián)系客服