Vladimir Belorusets博士是Shocase公司(一家營(yíng)銷人員的社交網(wǎng)絡(luò))的QA主管。他擅長(zhǎng)測(cè)試自動(dòng)化和測(cè)試方法。Belorusets博士是一名認(rèn)證的Scrum大師和認(rèn)證的初級(jí)測(cè)試員。他是發(fā)表在Testing Experience, Agile Record, Software Test & Quality
Assurance, Software Test & Performance和StickyMinds.com上的很多文章的作者。Belorusets博士是Software Test Professionals的戰(zhàn)略咨詢委員會(huì)和會(huì)議程序委員會(huì)的一員。他曾在安達(dá)盧西亞峰會(huì),HP Software Universe,Software Test Professionals和STARWEST上發(fā)過(guò)言。Vladimir 曾在Xerox, EMC, Siebel, CSAA及各種新興企業(yè)里負(fù)責(zé)過(guò)開(kāi)發(fā)和QA管理。Belorusets博士獲得了俄羅斯科學(xué)院莫斯科研究所系統(tǒng)分析的控制系統(tǒng)博士學(xué)位和立陶宛維爾紐斯州立大學(xué)的理論物理的碩士學(xué)位。Vladimir 曾在多家舊金山海灣區(qū)計(jì)算機(jī)學(xué)校教授多門關(guān)于功能和性能測(cè)試的課程。
簡(jiǎn)介
本文的前兩部分中,我描述了用于開(kāi)發(fā)一個(gè)(作為測(cè)試多個(gè)應(yīng)用程序接口的基礎(chǔ)的)統(tǒng)一測(cè)試自動(dòng)化(UTA)框架的主要準(zhǔn)則。在JUnit和JUnitParams上構(gòu)建UTA。我展示了該如何在UTA框架中用開(kāi)源Selenium WebDriver和Spring Framework測(cè)試瀏覽器GUI和REST API。這一部分中,我將描述連接到一個(gè)SSH服務(wù)器時(shí)實(shí)施命令行界面的自動(dòng)化測(cè)試的細(xì)節(jié)。
用于和CLI自動(dòng)交互的流行工具是Expect。開(kāi)始使用Tcl寫(xiě)的,Java中有幾種開(kāi)源Expect實(shí)施。UAT中,我使用下列程序:
Ronnie Dong開(kāi)發(fā)的Expect-for-Java。該API 大致基于Perl Expect library。
用于SSH協(xié)議的JCraft JSch。
CLI測(cè)試的結(jié)構(gòu)
一個(gè)簡(jiǎn)單的CLI測(cè)試包含以下四個(gè)步驟:
1. 與遠(yuǎn)程服務(wù)器建立一個(gè)SSH理解
2. 在CLI運(yùn)行輸入命令
3. 獲得并解析反應(yīng)
4. 對(duì)比真實(shí)結(jié)果和預(yù)期結(jié)果以驗(yàn)證
第一步通常每個(gè)測(cè)試類都要進(jìn)行一次。其他的包含一個(gè)當(dāng)我們處理各種命令時(shí)在一個(gè)測(cè)試?yán)镏貜?fù)了很多次的障礙。使用JCraft JSch (Java Security Channel)類,SSH連接可以輕松地完成。因?yàn)榻⒘艘淮螘?huì)話,相應(yīng)的陳述放到了@BeforeClass method中。(列表1)。
列表1. 創(chuàng)建一個(gè)SSH連接
為了驗(yàn)證連接,我們可以檢查命令提示符。Expect類包含expect()方法。處理針對(duì)一個(gè)模式的輸入流,將找到的匹配放到匹配字符串中,并更新isSuccess 邏輯運(yùn)算。該圖案可以呈現(xiàn)為一個(gè)字符串或正則表達(dá)式。列表2中展示了代碼片段。
列表2. 檢查命令提示符
對(duì)于第二步,Expect 提供方法send()。
測(cè)試命令選項(xiàng)
如果測(cè)試下的命令有多個(gè)選擇,像UNIX中的IS或Windows中的dir,用JUnitParams library和JUnitParamsRunner并使用數(shù)據(jù)驅(qū)動(dòng)方法測(cè)試它是有效的。當(dāng)你需要匹配一個(gè)復(fù)雜的輸入時(shí),可以使用java.util.regex.Pattern類。列表3表明了該如何為命令顯示創(chuàng)建一個(gè)數(shù)據(jù)驅(qū)動(dòng)的測(cè)試。
列表3. 有多個(gè)選項(xiàng)的測(cè)試命令
數(shù)據(jù)文件showCommand.csv包含兩欄:一個(gè)是命令選項(xiàng),一個(gè)是預(yù)期匹配的正則表達(dá)式模式。
CLI測(cè)試
多數(shù)CLI測(cè)試需要基于一些前面命令中列出的狀態(tài)來(lái)處理下一個(gè)命令。這種情況下,你需要?jiǎng)?chuàng)建一個(gè)關(guān)于描述預(yù)期結(jié)果的所有可能模式的列表。當(dāng)你將列表傳到expect()方法中去時(shí),將會(huì)返回匹配的模式索引。這將使你明白多個(gè)結(jié)果中會(huì)產(chǎn)生什么樣的結(jié)果。列表4中提供了執(zhí)行“展示hsm狀態(tài)”命令的例子,有兩種可能的結(jié)果:“加密用戶登錄:yes”和“加密用戶登錄:no”。
列表4. 做出決策