qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          捉蟲記--大容量Web應(yīng)用性能測試與LoadRunner實戰(zhàn)(連載三)

          1.4  軟件測試的核心I:測試用例

            前文提到,測試用例代表了軟件測試的工具方面,是它的核心之一。那么什么是測試用例,它又有哪些要點需要我們?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)。

           4.輸出的預(yù)期

            該項信息描述了在當前的輸入條件下,預(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)。

          有耐心,不輕言放棄。測試工程師在工作中經(jīng)常會試圖復(fù)現(xiàn)一個軟件中的Bug,這需要細心、耐心和堅持。

            必須具備一定的創(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)鏈接:

          捉蟲記--大容量Web應(yīng)用性能測試與LoadRunner實戰(zhàn)(連載一)

          捉蟲記--大容量Web應(yīng)用性能測試與LoadRunner實戰(zhàn)(連載二)

          posted on 2013-05-24 11:50 順其自然EVO 閱讀(247) 評論(0)  編輯  收藏 所屬分類: selenium and watir webdrivers 自動化測試學(xué)習(xí)

          <2013年5月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 东乡县| 武义县| 海安县| 阜新| 白水县| 静安区| 建平县| 彰化市| 铜梁县| 和龙市| 南靖县| 嘉义县| 宝坻区| 芒康县| 航空| 大厂| 黔江区| 南川市| 监利县| 邯郸县| 琼结县| 黄山市| 曲阳县| 团风县| 尉犁县| 郴州市| 甘孜| 濉溪县| 金昌市| 绍兴县| 天门市| 富锦市| 德江县| 洛南县| 关岭| 遂平县| 太康县| 嘉祥县| 陕西省| 梁平县| 丹巴县|