捉蟲記--大容量Web應(yīng)用性能測試與LoadRunner實戰(zhàn)(連載三)
前文提到,測試用例代表了軟件測試的工具方面,是它的核心之一。那么什么是測試用例,它又有哪些要點需要我們?nèi)フ莆眨?/p>
1.4.1 什么是測試用例
軟件測試的核心行為就是針對要測試的軟件設(shè)置測試用例。所謂測試用例,英文名為Test Case,是一個與程序部分行為以及輸入、輸出相關(guān)的描述或者標識。
【測試用例的IEEE定義】
美國電氣與電子工程師協(xié)會(IEEE,The Institute of Electrical and Electronics Engineers),它出臺了一個標準的測試用例定義,即"測試用例是描述輸入實際值和預(yù)期輸出行為或者結(jié)果的文檔,它同時也標識了測試過程結(jié)果與約 束。"
在實際工作中,花費測試工程師大部分時間的,都是與測試用例相關(guān)的。
1.4.2 測試用例的幾大要素
一般來說,測試用例應(yīng)該清楚地描述出對被測試軟件發(fā)出什么數(shù)據(jù)或者條件,以及該輸入所期望的結(jié)果。在小白這樣的商業(yè)網(wǎng)站,測試部門規(guī)定測試用例應(yīng)該具備如下幾個要素。
1.標識符
這一點雖然和測試用例的內(nèi)容沒有關(guān)系,但卻是測試過程中不可缺少的。比如,小白所在的部門每周都要開一次例會,向經(jīng)理或者開發(fā)部門的同事說明當前整個產(chǎn) 品的測試狀態(tài),有時候需要特別指出某個測試用例的內(nèi)容,那么用一個簡單的代號來代表這一測試用例是非常適合的,這個代號一般情況下都是一個正整數(shù),比如 1、88、437等這樣。在小白所在的公司,測試用例是存放在一個數(shù)據(jù)庫中的,代號也就自然地采用了數(shù)據(jù)庫系統(tǒng)中的標識符字段類型。如果采用其他的方式存儲測試用例,可以人工指定,只要保證標識符不重復(fù)就可以了。
如圖1-6顯示了應(yīng)用于真實測試場景的某測試用例文檔,它實際上是一個Office Word文件,測試工程師(即編寫者)在文件內(nèi)容中手工指定了各個測試用例的標識符。
圖1-6 測試用例的標識符
2.測試的內(nèi)容
測試內(nèi)容可以說是測試用例最重要的部分,它一般指明了當前測試用例的運行目的,比如測試網(wǎng)頁是否可以打開、單擊按鈕后是否能夠顯示正確的計算結(jié)果等。在很多情況下,測試內(nèi)容與下個要點:輸入的條件區(qū)別并不是很清楚。
3.輸入的條件
輸入條件可以是操作步驟,也可以是輸入的數(shù)據(jù),還可以是系統(tǒng)運行環(huán)境的需求(比如處于某種特別的操作系統(tǒng)環(huán)境內(nèi)這一條件)。圖1-6中的各個測試用例,都詳細地寫明了每一步驟的具體操作。
【復(fù)現(xiàn)步驟】
對于被測試軟件而言,不同的輸入條件會導(dǎo)致不同的輸出預(yù)期,因而可能出現(xiàn)的Bug表現(xiàn)并不一定相同。如果重復(fù)某些輸入條件,總會導(dǎo)致某個Bug的出現(xiàn),那么就把這些輸入條件稱為Bug的復(fù)現(xiàn)步驟(Repro Step)。
該項信息描述了在當前的輸入條件下,預(yù)期的輸出。比如計算器程序中十進制數(shù)字的2+3的輸出應(yīng)該等于5。若輸出預(yù)期與實際結(jié)果不同,則應(yīng)該考慮 為Bug的可能性(有的時候,輸出預(yù)期也會隨項目的進度而變化,因此預(yù)期與實際不同并不意味著100%是Bug,此時需要與項目經(jīng)理等相關(guān)人員進行協(xié) 商)。
5.測試環(huán)境信息
這一部分的內(nèi)容描述了該測試用例所適用的環(huán)境,比如操作系統(tǒng)的版本,所依賴硬件軟件的版本、語言等。測試環(huán)境信息有時候也可以成為輸入條件或者 復(fù)現(xiàn)步驟的一部分,比如某個按鈕只有在IE瀏覽器中才會出現(xiàn)、某個Bug只在IE瀏覽器中才會產(chǎn)生,那么IE既是測試環(huán)境信息,也是輸入條件和復(fù)現(xiàn)步驟。
6.與其他測試用例的依賴關(guān)系
在測試某些軟件的時候,比如MSN,如果登錄這個測試用例都無法通過,那么剩下的發(fā)消息,發(fā)文件等測試用例也肯定繼續(xù)進行(除去直接調(diào)用接口的 那些測試之外),這就是一種測試用例之間的依賴關(guān)系。合理地應(yīng)用測試用例之間的依賴關(guān)系,能夠提高測試效率,減少無謂的測試時間浪費。
7.測試用例需要被開發(fā)、審閱、使用、維護和保存
這也是測試工作很重要的一部分。軟件的說明書Spec可能會變化,因此測試用例需要變化,這就要求對測試用例進行增加、修改和刪除。測試用例是 文檔,需要有固定的場所進行保存,一般是數(shù)據(jù)庫或者文件。測試用例需要審閱,以達到預(yù)期的效果和更高的工作效率(重復(fù)的測試用例肯定會浪費測試工程師的時 間)。
1.5 軟件測試的核心II:測試工程師
除了測試用例之外,軟件測試的另一個核心,同時也更為關(guān)鍵,就是測試工程師了。這是因為,測試用例也是由測試工程師來編寫的,受人的因素影響很大??梢哉f,人是決定軟件成敗的主要因素。本節(jié)將介紹測試工程師所必備的一些素質(zhì)。
1.5.1 測試工程師與軟件質(zhì)量保障
有的時候我們在招聘廣告上能夠發(fā)現(xiàn)有些公司招聘測試人員的時候,列出的職位名稱是軟件質(zhì)量保障工程師(QA,quality assurance),那么這兩種稱呼是否是代表同一種工作內(nèi)容呢?
回答是基本一樣,但有細微不同。軟件測試工程師的主要職責在于發(fā)現(xiàn)并確認Bug的解決與否,而軟件質(zhì)量保障工程師則更進一步,在測試工程師的職 責之外,還包括創(chuàng)建、維護為保障軟件質(zhì)量而確立的規(guī)范、規(guī)則與流程,比如軟件配置管理(Software Configuration Management,又稱SCM工程師)等。
【字面意義的理解】
從字面意義上來看,測試工程師主要針對軟件的已有Bug,類似體檢部門;而軟件質(zhì)量保障工程師則不光針對已有Bug,還對預(yù)防Bug的產(chǎn)生提出建議,類似健康顧問。當然,在實際工作中,兩者的區(qū)別并不是那么清晰的,在很多公司內(nèi)部,他們所從事的工作內(nèi)容是完全一致的。
1.5.2 測試工程師應(yīng)該具備的素質(zhì)
一個合格的測試工程師,應(yīng)該具備如下專業(yè)素質(zhì):
具備基本的數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng)等專業(yè)知識。這一點對于從事性能測試的人員來說更為重要。
具備一定的程序開發(fā)經(jīng)驗。掌握一到兩門語言對于進行自動測試是大有益處的,另外,具有程序開發(fā)經(jīng)驗,也更容易理解軟件Bug的來龍去脈。這一到 兩門語言可以是某些高級語言,比如C#和VB.net,以及一種腳本語言,比如JavaScript、VBScript或者Python等的組合。
軟件使用經(jīng)驗豐富,對于軟件的不正常行為敏感。這一點對于發(fā)現(xiàn)Bug是很有幫助的。
同時,測試工程師還應(yīng)該具備如下的性格特征。
有好奇心,樂于探索軟件功能,樂于嘗試新的軟件產(chǎn)品。
樂于探索謎題,追根溯源。對于一個Bug,必須有追根溯源的精神,才能夠發(fā)現(xiàn)它的特點,這個性格特征在判斷Bug的產(chǎn)生原因,以及是否與其他Bug重復(fù)等日常的工作內(nèi)容中都會展現(xiàn)。
必須具備一定的創(chuàng)造性。測試工程師是無法模擬出用戶使用軟件的所有場景的,因此必須具備一定的創(chuàng)造性,通過測試更多情況下軟件的不同表現(xiàn),發(fā)現(xiàn)被測軟件更多的問題。
具備一定的溝通和交流技巧。這一點尤為重要,測試工程師由于工作性質(zhì)的要求,要給開發(fā)工程師所編寫的代碼找到問題。因此在平時的工作中要注意利 用良好的溝通、交流技巧,使得開發(fā)工程師能夠接受自己正確的觀點,在保證軟件質(zhì)量的情況下不影響團隊的合作氛圍,讓整個團隊都體會到測試工程師和測試工作 的重要性。
1.5.3 測試工程師的職業(yè)發(fā)展
軟件測試工程師在我國尚屬一個比較新的職業(yè),目前專業(yè)人才相對缺乏。另外,和軟件開發(fā)相比,軟件測試具有進入門檻相對較低,職業(yè)生涯相對較長的特點。因此,從事軟件測試的職業(yè)是具備較好的發(fā)展前途的。隨著工作經(jīng)驗的不斷積累,比較好的發(fā)展路 徑是:
初級測試工程師。進行黑盒手工功能性測試(第2章我們將講解什么是黑盒測試、功能性測試)或者本地化測試等,一般是從學(xué)校畢業(yè)后參加工作的2~3年,正處于學(xué)習(xí)或者進一步熟悉、鞏固測試基本知識與方法的階段。
中級測試工程師。進行測試計劃的編寫,測試工具的開發(fā),各種測試的實施等。處于這一階段的人員,相比于初級測試工程師工作了更長的一段時間,掌握了測試的基本理論和知識,對軟件開發(fā)流程有了比較深入的了解,同時對某項軟件開發(fā)技術(shù)有較深入研究的程度。
高級測試工程師或者測試經(jīng)理。經(jīng)歷了初級和中級測試工程師的磨煉,從頭至尾參與了一個產(chǎn)品或者多個產(chǎn)品的生命周期,在其他方面能力也具備的情況下,就可以從事這樣的職位了。工作職責一般是統(tǒng)籌軟件的測試計劃,決定測試方法,確立、實現(xiàn)測試框架,管理控制測試進度等。
開發(fā)人員。實際上,從測試人員轉(zhuǎn)為開發(fā)人員的比例不算小,因為測試人員對產(chǎn)品比較熟悉,如果自身的開發(fā)能力較強,往往具備純開發(fā)人員所不具備的測試知識和用戶視角,因此編寫的代碼質(zhì)量更高。
以上是軟件測試工程師的發(fā)展路線。在公司的選擇上,一般來講,大型或者國外的企業(yè)往往更加重視測試,所以軟件測試工程師更多出現(xiàn)在這樣的企業(yè)中,導(dǎo)致其平均薪資水平相對比較高。對于想從事初中級測試工程師的讀者來說,一般可以考慮如下4類公司。
國內(nèi)的IT相關(guān)企業(yè)。這些企業(yè)大致有各軟件開發(fā)公司,通信、電子、游戲公司等。
外資企業(yè)在國內(nèi)的研發(fā)中心。這類公司的產(chǎn)品開發(fā)人員相對更集中在公司總部,同時為了節(jié)省成本,測試工程師則較多地安排在國內(nèi)。
為外資企業(yè)做軟件外包的國內(nèi)企業(yè)。微軟、Google、IBM等很多在華的跨國企業(yè)都會聘用這些企業(yè)的員工進行外包測試工程師的工作。
大型網(wǎng)站。中小型網(wǎng)站往往沒有專職的測試人員;大型網(wǎng)站由于架構(gòu)較復(fù)雜,分工相對更為專一,會有專職的測試工程師隊伍以保證質(zhì)量。
1.6 本章小結(jié)
本章通過剛剛作為軟件測試工程師新人的小白短短幾天的經(jīng)歷,對軟件測試的基礎(chǔ)知識進行了簡要的介紹。
在本章的開頭,給出了公認的軟件定義。所謂軟件,就是計算機系統(tǒng)中的程序和相關(guān)文件或文檔的總稱。
隨著軟件越來越復(fù)雜,軟件危機逐漸出現(xiàn),人們?yōu)榱藦能浖_發(fā)的初期就避免出現(xiàn)這樣的問題,研究總結(jié)出若干軟件生命周期的模型,主要有如下4種:
Big-Bang大爆炸模型;
Code and Fix邊做邊改模型;
Waterfall瀑布模型;
Spiral螺旋模型。
通過在工作中應(yīng)用這些模型,很好的進行了軟件項目管理。
但是,軟件中的Bug依然不可避免。所謂Bug就是軟件的錯誤或者偏差。在軟件開發(fā)的過程中,越早發(fā)現(xiàn)Bug就越能節(jié)約軟件開發(fā)的成本。
編寫測試用例,利用人工或者自動的方法尋找被測試軟件Bug并確認修復(fù),是軟件測試工程師在工作中要完成的職責,加上有效的預(yù)防Bug產(chǎn)生的規(guī)范,就可以在很大程度上保障軟件的質(zhì)量。
(未完待續(xù))
相關(guān)鏈接:
posted on 2013-05-24 11:50 順其自然EVO 閱讀(247) 評論(0) 編輯 收藏 所屬分類: selenium and watir webdrivers 自動化測試學(xué)習(xí)