人們常說(shuō)說(shuō)時(shí)間就是金錢(qián),效率就是生命。不論對開(kāi)發(fā)還是測試,效率都可以說(shuō)是項目的生命。不想提高效率的工程師不是好經(jīng)理!(嗯?不太對吧-,-)言歸正傳,本系列“高效率測試”短文希望能夠給大家介紹一些微軟測試團隊如何提高效率的實(shí)踐,謹和大家一起探討。
做過(guò)測試工作的人或許都知道,測試一個(gè)產(chǎn)品的工作量是比其開(kāi)發(fā)的工作量要大得多的(在微軟,一個(gè)團隊測試人員的數目與開(kāi)發(fā)人員的理想的比例是1.5比1)。做過(guò)測試工作的人也一定知道,這個(gè)“1.5倍”的黃金比例由于開(kāi)發(fā)進(jìn)度,項目需求的原因常常不容易滿(mǎn)足——即使是在微軟,這樣一個(gè)對軟件測試有巨大投入的公司?梢韵胂,一邊是緊迫的項目進(jìn)度,一邊又是必須提供給用戶(hù)最高質(zhì)量產(chǎn)品的不可侵犯的原則,這事兒對測試團隊就是一個(gè)地地道道的“杯具”。所幸的是,微軟的工程師們總能絞盡腦汁,螺螄殼里做道場(chǎng),榨干每一行代碼、每一個(gè)測試用例的價(jià)值,最終把“杯具”變成“洗具”。下面就給大家講一個(gè)我參與的項目中利用策略模式(Strategy Pattern)做更高效測試的例子。

首先介紹一下產(chǎn)品背景。該產(chǎn)品是典型的數據庫 -> WebService -> Web三層架構,其中WebService和Web界面均是提供給用戶(hù)的開(kāi)放接口,而他們提供的操作都是針對對象的創(chuàng )建,讀取,更新和刪除。對我們測試團隊而言,WebService和Web兩種用戶(hù)訪(fǎng)問(wèn)界面是必測無(wú)疑的。這兩種界面的具體操作完全不同,譬如在Web界面上創(chuàng )建對象需要填寫(xiě)并提交表單,而在 WebService界面中則是一個(gè)WCF(Windows Communication Foundation)的調用,但是他們對后臺而言則是完全相同的?梢杂孟旅孢@個(gè)圖來(lái)表示。

這時(shí)候工程師們就動(dòng)起了腦筋:既然Web界面和WebService界面對于后臺而言是相同的,也就是說(shuō)Web界面的測試 和WebService界面的測試可以共享測試的過(guò)程(Scenario)和數據(Data),只是具體實(shí)施操作的時(shí)候有所不同。這不就是設計模式中的策略模式嗎?沒(méi)錯,把邏輯操作(這里是測試步驟)抽象出來(lái),可以在運行時(shí)切換具體實(shí)現的,就是策略模式。具體而言呢,對WebService的各種操作實(shí)現就是一個(gè)策略,對Web界面的操作實(shí)現也是一個(gè)策略。當工程師們實(shí)現自動(dòng)化測試用例的時(shí)候,他們并不關(guān)心他在通過(guò)Web還是通過(guò)WebService做操作,他們只關(guān)心的是:用什么數據,做什么步驟。至于怎么做,是運行時(shí)根據環(huán)境決定的。這其中的關(guān)系可以用下面的圖表示:
基于在我所在項目組的實(shí)踐,我們發(fā)現利用策略模式的好處有:
1) 同樣的自動(dòng)化測試用例可以同時(shí)測試Web界面和WebService界面,成倍的簡(jiǎn)化了自動(dòng)化測試代碼的編寫(xiě)工作。
2) 清晰的分離了“做什么”和“怎么做”。編寫(xiě)測試代碼可以更關(guān)注測試的步驟和邏輯。
3) 在項目的初始階段,WebService界面的操作會(huì )比較穩定,而Web界面往往會(huì )由于復雜度更高而不穩定。這時(shí)候可以使用WebService策略開(kāi)發(fā)并運行自動(dòng)化測試,等到Web界面穩定了,再把環(huán)境變量設為Web策略,就可以完全測試Web界面了。而常規的做法,如果Web界面不穩定,甚至只是某一個(gè)模塊不穩定,就會(huì )減慢或阻礙整個(gè)團隊的測試開(kāi)發(fā),進(jìn)度大大受阻。
4) 當運行一個(gè)Web界面測試的時(shí)候,如果測試結果失敗,可以動(dòng)態(tài)調整為使用WebService策略重新測試。這樣可以“自動(dòng)”地幫助開(kāi)發(fā)測試人員定位問(wèn)題發(fā)生在Web層還是在WebService層。
5) 整體測試框架具有較高的擴展性。如果產(chǎn)品需要新增PowerShell作為另一個(gè)用戶(hù)界面,那么只需要實(shí)現PowerShellTestStrategy,就可以讓大多數測試用例運行在PowerShell上。
在微軟,其實(shí)還有很多做高效測試的例子,下次有機會(huì )再拿出來(lái)曬吧。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/