<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    左手測試,右手QA

    在我們的團隊中,QA角色身兼兩職:測試和過程改進。以往我們對新進來的員工的期望值是先承擔測試任務,在能較好地完成測試任務之后,才考慮讓他參與一些SQA工作。因此,有些已經進來大半年的同事,感覺對SQA還是沒有什么概念,更沒有機會去實踐。或者有的同事想參與一些SQA的工作,卻感到沒有頭緒,不知如何下手。而實際工作中我發現,QA的能力可以在每日工作中從點滴、從最開始就培養,這個與以往有沒有SQA的知識和經驗沒有關系。因為簡而言之,QA的工作主要圍繞持續改進展開。而無論你是否有經驗,每天的工作中你都在以自己獨特的視角看問題,并可能看到改進的空間。那么,測試人員如何在日常工作中去逐步培養自己的QA能力呢?

     

    1.找到問題

     

    感受到一個問題,有時是出于關懷,你發現有人/自己正因為某件事情而痛苦;有時是出于懷疑,你發現有件事情和你想象/預計的不一樣;還可能是出于直覺。但感受到問題其實并不是一件容易的事情。

     

    如果感受不到問題,我們可以試圖通過多種方法積極尋找。

     

    如果你剛到一個項目組,提不出問題,可以先去聽聽別人(項目組成員、用戶等等)的抱怨,或者想想自己痛苦的地方(比如找不到文檔,系統操作不直觀學習起來困難等等),這些就可能是問題。另外,為了培養自己找問題的習慣,可以給自己一個定量目標,每周去總結一個“疑似問題”。經過實踐,這個帶點自我強迫的方法對于找問題很有幫助。比如,雖然你的測試用例經過了和開發人員的評審,但是測試時你卻發現幾個重要的分支或者邏輯還是在代碼中忘記實現了。除了報告缺陷,是否還有什么有共性的問題存在,并值得改進呢?

     

    如果你在一個項目組大家合作得不錯,似乎沒有什么問題,但一個看 似不錯的結果其實可能隱藏了問題。比如,完成工作,交付高質量的軟件產品可以通過多種渠道實現,而非一定體現了高質量。可能是犧牲了時間進行好幾輪的測試 和修復和全面的回歸測試,又或者某一塊有一個英雄人物能夠以一己之力確保這塊沒有問題。又如,雖然大規模代碼重構的時候,內部測試能找到大部分重要的缺 陷,但是否測試人員心理還是很抗拒和沒底的?雖然這些問題不是單靠測試人員就能改善或者達到,但找到影響質量的問題確實需要測試人員的獨立視角和貢獻。如 果一個測試人員、一個測試團隊能夠跳開測試的圈圈,從更廣闊的角度看到影響質量的其他環節,幫助開發人員克服一些老的制約生產力和質量的毛病或者習慣,從而提高開發團隊的水平,而更高開發水平的開發團隊又對測試團隊會提出更高的要求,那么這樣的良性互動是我們都想看到的。現在被大家所廣泛追捧的敏捷開發就提倡忽略角色的分工,大家一起為質量貢獻自己的一份力量。

     

    前面說的是流程方面的問題,其實即使是被測程序的問題也存在于在整個軟件開發周期。雖然傳統對測試的理解是測試找問題更多集中在執行階段,但借用QA的預防為主的思路,程序的問題也可以通過對需求和設計的評審及時發現和糾正,避免后期更大的浪費。

     

    2.探究問題

     

    感 受到問題之后,需要一種探尋真相的精神去一探究竟。很多人能感受到問題,但是很遺憾地是當有更具體的任務在手頭的時候,往往就忽略了這個問題。或者知道問 題很大,也知道有各種原因的阻礙,因此采取放任自流的態度。這里要介紹一個好的習慣,就是把你當前沒有時間去細想的問題先記錄下來,以后再找機會去跟蹤執行。類似outlook的任務或者一些桌面電子便簽等工具可以幫助你設定任務及提醒執行。除了記錄,還有一個好習慣就是去外部尋找一些同行的交流。如果看到同樣/類似的話題,相信會驅使你有更大的興趣去看自己碰到的問題,也啟發你從不同角度看問題。

     

    QA的工作更多的針對的是有共性的問題,所以對這類問題的探究往往需要多個樣本。換言之,在報告每一個缺陷的時候我們是在做測試,而對測試結果進行總結、歸類、抽象出背后共性的問題則向QA靠近了一步。

     

     

    3.判斷問題

     

    3.1判斷一個問題是否真的是問題

    測 試人員通常看到實際執行結果后就能馬上判斷出其與預期結果之間的差異,從而判斷是否存在問題。但過程改進相關的問題就沒有那么一目了然了。比如,我們收到 一個來自生產環境的缺陷,是因為一個需求變更的影響點大家都沒有想到,直到生產環境暴露出來。開會的時候有人提出我們的開發流程不完善,如果能夠建立起需 求、設計和測試用例的跟蹤矩陣,那么在做影響分析的時候就能順藤摸瓜,避免此類問題了。聽起來不錯,是么?可是,如果我們細想,這種類似問題在生產環境對 用戶的影響大么?可以繞過去么?此類問題出現的次數多么?如果我們建立這個跟蹤矩陣,維護代價有多高?前提還是我們首先要想到所有的內在聯系(而這個本身 就是無法確保的)。兩相權衡,“沒有這個跟蹤矩陣”是我們現在的問題么?

     

    “判斷一個問題是否真的是問題”最好能廣泛聽取不同的意見,并找到根源。

     

    3.2判斷一個問題是否需要被馬上解決

    “判斷問題是否需要馬上解決”在某種程度上這有點象測試人員去設定缺陷的優先級。雖然所有被發現的缺陷都被記錄,但是當前版本需要修復的或者可能只是其中一部分,而這一部分中還有需要盡快修復的和可以稍后修復的差別。過程改進的問題也是一樣,有個主次和優先級之分。

     

    4.解決問題

     

    對于確實是問題的,我們應該去積極地尋找解決方案。但是新到一個公司或者項目組,發現了問題之后,不要急著去提出自己的解決方案,而應該先試圖了解它的來龍去脈和曾經進行過的改進嘗試,以及執行中實際的一些阻礙。

     

    解決問題通常牽涉到開發團隊中各個角色,除了明確負責的一方,還要對參與的其他方也進行充分的溝通。

     

    確認開始執行之后,為了確保執行的正確性和力度,一定要跟蹤執行。一個沒有跟蹤執行的方案如同瞎子射箭。這樣的話,無論射多少回,都是沒有目的性和方向性的,也無法在以前的基礎上持續改進的。質量理論中常提到的PDCA循環講的也是這個道理。

    在解決問題方面,有很多和測試、質量無關,但和思維、管理類相關的書和文章。例如:《第五項修煉》中就提出對解決問題很有幫助的五大方面:系統思考、自我超越、心智模式、建立共同愿景、團隊學習。《金字塔原理》中提出的界定問題、結構化思考、演繹與歸納等多種模式也能幫助我們剝繭抽絲,抓到問題的本質和可行的方案。

     

    6.QA能力進階

    從上面我們看到,QA能力的培養貫穿于每日工作的點滴。其進階可以大致分為以下級別。

     

    (1)發現的問題級別:

           初級:問題已經發生,而且大家都感受到了(項目組中大家都覺得有問題的問題)

           中級:問題已經發生,但只有少量人感受到了(問題已經發生,但是其危害還沒有擴散)

           高級:問題還沒有發生,很多人沒有意識到(一個解決方案在不同的實施環境中會有的問題)

     

    (2)解決問題的能力的級別:

           初級:可以提出方案,但不能提出很合理的、可以實施的方案

           中級:可以提出合理的可以實施的方案,但是實施效果不太好(方案中存在著一些重要的影響執行的因素沒有考慮到)

           高級:可以提出合理的方案,且實施效果好,整個團隊受益

     

    其實,有時想想除了QA更需要有豐富的思路去提出可能的解決方案之外,測試人員和QA人員對技能的要求有很多相通之處:都需要有敏銳的觸角去發現潛在的問題,有執著的勇氣去驗證和報告預期與實際結果之間的差異,有務實的精神去跟蹤和督促執行。所以,讓我們左手測試,右手QA,互相促進, 幫助質量改進更上一層樓!

    posted @ 2011-10-25 14:38 順其自然EVO| 編輯 收藏

    實施自動化功能測試的解決方案

     摘要

      當今的企業需要掌控其關鍵業務應用的所有功能測試,以確保所有業務流程工作符合預期。通過實施自動化的功能測試,企業可以極大提高測試速度和精度,從挼間項目中得到更高的投資回報并且顯著地降低風險。

      本文簡要描述了自動化功能測試的優勢和挑戰,幫助企業考慮實施最佳測試自動化的方法。

      1.介紹

      毫無疑問,嚴格的功能測試是成功開發應用的關鍵。開發人員,測試小組和管理人員所面臨的挑戰是,如何加速測試流程和提高測試的精確性和完備性,同時還不能增加已然很緊張的預算。

      通過將功能測試的關鍵環節自動化,可以滿足有挑戰性的發布時間安排,測試得更加全面和可靠,檢驗業務過程功能的正確性,從而從上線的運營中,獲得極高的產值和客戶滿意度。然而,功能測試的自動化會產生一些新的顧慮:

      測試過程自動化的成本是多少?其投資回報率(ROI)是什么?

      哪些應用/過程適合做自動化測試,哪些不合適?

      是否需要新的培訓,這將對當前的開發計劃安排產生怎樣的影響?

      自動化測試得正確地方法論是什么?

      自動化測試時涉及到哪些情況?

      當比較自動化測試產品時,哪些功能最重要?

      在自動化測試項目開始之前,以上和其他一些問題應該得到全面地調查和了解。

      2.功能測試與單元測試

      功能測試是指確保應用按期望運行,也就是按照用戶的期望運行。功能測試以一種有效的方式捕獲用戶的需求,讓用戶和開發人員對業務過程滿足需求充滿信心,同時使得QA團隊可以檢驗軟件已發布就緒。

      功能測試是單元測試的補充,但有很大不同。簡言之,單元測試說明了代碼執行是否正確;功能測試說明了完成的應用是否做正確的事情。單元測試往往是從代碼開發人員的角度來看,而功能測試是從最終用戶和業務過程角度來看。

      3.為什么將功能測試過程的自動化?

      現在,IT部門的壓力越來越大。管理部門希望IT部門通過軟件可以交付新功能,抓住新的商業機會和提供有競爭力的優勢。這就意味著需要完成更多的業務應用開發項目,而時間會很緊迫,并不是都有更多的預算或資源。

       同時,管理部門越來越意識到軟件和銷售額的重要關系。Web Services,聯機事務處理和ERP應用不僅是非常關鍵的,而且,它們直接關系到公司的產值能力。現在企業非常依賴非常復雜的計算機基礎設施。如圖, 一個典型的企業可能依靠多個應用,運行在不同的系統上,使用幾種不同的前端客戶端,涉及到大量的業務過程并且與很多種數據集交互。

      可能的組合是高度復雜,需要成百上千的測試場景。

    組件數量事例
    平臺1Intel
    操作系統5Windows XP, ME, 2000, NT4, and 98
    前端客戶端4Internet Explorer 6, Netscape 7.1 Java, Visual C++
    業務過程5Login, Search, Order Entry, Order Confirmation, Order Fulfillment
    數據集15usernames, passwords, search strings, order numbers, ship dates,等的組合
    需求的測試數量1x 5 x 4 x 15= 1,500 可能的測試場景!!

      當軟件出現故障時,其代價是非常大的,包括銷售額下降,員工的低效率,客戶的不滿和開發和QA人員的士氣低落。在軟件開發周期中,缺欠發現的越晚其代價越高。上線后發現的缺欠的改正成本可能比在設計階段發現的高出100倍。自動化是提高軟件測試過程的速度,精確度和靈活性的關鍵,使公司可以更早發現和改正缺欠。

      4.手工功能測試的挑戰

      手工功能測試過程本身存在很多挑戰:

       時間過長。有限的IT資源和緊張的交付時間使得手工測試對于滿足業務目標來說過于耗時。采用手工測試,測試和開發人員不得不計劃冗長的每步測試過程,然 后手工執行,再現問題,快速消耗了有價值的時間和資源。根據Aberdeen Group,一個獨立行業分析公司,90%的IT項目交付出現延遲,手工測試是其中一個因素。

      覆蓋不完全。平臺,操作系統,客戶端設備,業務過程和數據集等的組合對于手工測試過程來說,工作量非常大。需要驗證功能的測試用例數量非常巨大。所以當修改完成后手工回歸測試花費的時間過長,以至于不能做全面的回歸測試。

      風險更高。手工測試過程比計算機過程的錯誤和疏忽更多。人們會變得疲倦,輸入數據錯誤,不能總是正確執行測試,并不是總有時間測試所有應該測試的內容。

      5.自動化測試的好處

      自動化測試有很多好處,包括:

       快速執行。計算機在執行功能測試腳本的時候比人快得多,因此在有限的時間里能測試的更多,在給定的時間里更多的應用可以被測試,可以按時完成更多的工 程。并且和人不同,計算機一天工作24小時,還包括晚上,周末和假期;他們不會感到無聊或者疲倦;而且他們從不對該作的事情和不該作的事情自作主張。

       提高測試覆蓋。自動測試產品支持在所有流行的瀏覽器,操作系統等上執行測試腳本,用自動化的工具對不斷變化的應用和環境做回歸測試,要比手工測試容易得 多。通過整合的數據驅動表單的功能,自動化測試產品允許開發和測試團隊執行計算,操作數據集,以及快速創建多種反復的測試,使得擴大測試覆蓋范圍。使用自 動測試工具可以仿效任何混合的事務和任意的用戶負載。

      提高測試精確度并提早發現更多錯誤。自動化測試給開發人員提供了一種再現和記錄軟件缺陷的非常容易的方法。這將在所有環境,數據集和業務過程等之間確保功能的正確性,同時對開發過程起到加速作用。

      提供規范化的過程。自動化測試鼓勵測試團隊規范化他們的過程,以得到更高的一致性和更好的文檔記錄。

      提高測試的重用性。測試一旦腳本化,開發人員可以使用和重用這些腳本,可以將腳本添加到測試套件中,以適應應用的變化。沒有必要為每個應用的相同功能而重新創建腳本。

      支持ERP/CRM。現在越來越多的用戶使用ERP/CRM解決方案,對端到端的回歸測試的需求正變得越來越頻繁和越來越重要。

      6.在什么情況下采用自動化測試?

      一般來說,把自動化測試的工作集中在關鍵的業務過程,復雜應用,以及由這些組成的用例方面(相對于低級別任務,例如系統級的驗證)是很有意義的。

       如果一個企業擁有眾多每天工作很多小時的軟件測試人員,但是產品仍然出現質量和功能問題,那么這家企業肯定能從自動化測試中受益。是否決定實行自動化測 試應當充分考慮到投資回報,但是一般情況下,如果一個應用需要多次構造/補丁/修改;需要在大量的硬件或軟件配置下進行測試;并且支持眾多并發用戶等,那 么將會是值得采用自動化測試。另外,如果涉及到重復性的工作,例如數據裝載和系統配置等,或者應用需要滿足特定的服務等級協議(SLA),那么自動化測試 當然也會節約成本。

      7.如何確定自動化測試的投資回報?

      任何投資回報都可以從一個簡單的計算得出:

      投資回報=投資的凈現值/總初始成本

      當采用測試過程的自動化時,成本是切實可見的,但是凈現值仍舊包含許多無形的因素。最好的方法就是盡量精確計算直接成本,然后與自動化測試產生的直接和間接的效益進行對比。

      在ROI計算中需要考慮的直接成本包括:

      購買成本:購買自動化測試軟件產品的成本。

      硬件成本:功能測試所必需的硬件成本。有代表性的是,功能測試不需要特殊的硬件,只需帶有以太網端口的標準臺式電腦或者工作站即可。

      勞動力成本:培訓職員編寫測試用例腳本或進行手工測試的成本因素。確認要包括招聘,雇傭,支付工資,和保留熟練的QA工程師的成本。

      培訓成本:依賴于所選擇的測試產品,培訓使用者精通編寫自動測試腳本是值得的。當然,公司可以選擇雇用專業的服務公司創建最初的自動化測試。

      當衡量自動化的潛在益處時,考慮隱性效益是很重要的,例如測試人員高漲的士氣和對工作的滿意度,改進的客戶滿意度和忠實度,還有因為最終用戶使用的可信賴的軟件而不斷提高的知名度。

      8.如何評估自動化測試軟件?

      很多商家提供自動化測試產品。每個解決方案都有自身的優勢和劣勢,獨特的功能,和市場環境。每個企業需求的特殊性決定了最適合的一種選擇。然而,任何自動化測試產品都應當包含一些關鍵的性能:

      自動化測試的“Scriptless”表示法:產品應該提供一個可點擊的界面,在測試時與應用組件進行訪問和交互——而不是呈現出一行行的腳本。測試者應該可以可視化每一步的業務過程,并且直觀的觀察和編輯測試用例。這將減少測試者在學習上走彎路,并幫助測試團隊面對緊迫的最終期限。

      集成的數據表:自動化功能測試的一個關鍵的好處就是可以使系統快速產生大量數據。還有一個重要的功能就是操作數據集,執行計算,并以最小的代價快速創建數以百計的重復測試和組合。企業應該尋找擁有提供強大計算能力的集成電子數據表單的產品。

       清晰明確的報告:如果測試結果不容易理解或解釋,那么即使運行大量測試數據也不會有什么好處。測試產品應當自動的產生并顯示所有測試運行方面的報告,并 用易讀的格式解釋結果。報告應當提供的細節包括:應用在什么地方發生了失敗和使用了什么樣的測試數據;為應用的每一步提供高亮或有差別的屏幕顯示;并提供 每個檢查點通過和失敗的詳細解釋。當然還應當能夠在不用修改的情況下,在測試和開發團隊之間共享報告。

      9.要點列表:自動化測試成功的五個關鍵

      即使已經證明了測試的自動化是經濟有效的,然而如何確定轉變到自動化測試過程上的最佳方法依然是困難的。這部分略述了執行自動化測試過程的五個基本原則。

      1.完成一個測試計劃文檔。理解被測應用的目標是任何測試成功的基礎。這包括全面的預先計劃以確保測試需求被正確的實施。測試工具應提供為所有被測應用管理測試用例和需求的能力。

      2.將測試細分為自動測試用例。一個組織自動執行一個測試計劃的所有方面是不可能的。自動化測試應該集中圍繞在需求設計的復雜應用上和急迫的業務過程功能上,許多組織發現他們使用自動化測試只占總測試用例的60%,而余下的40%為手工測試。

       3.創建自動化測試。測試工具極大簡化了準備測試數據和腳本的過程。這使得更多的完全測試可最佳地使用測試資源和結果。使用測試工具,使用者可以不必作 任何實際腳本而創建測試。測試工具應能自動捕獲目標應用的業務過程,并允許使用者創建一個可以被保存的而且可以被管理的測試流程。

      4.提高測試覆蓋的數據驅動測試。測試者就可以為應用創建一個使用儲藏在Excel電子表格里的特殊關鍵字的依賴于數據的測試。這就允許測試者通過應用驅動大量的測試數據。

      5.給測試增加驗證。需要在測試中添加了“通過或失敗”的測試標準。這包括了應用的前端,中間層,或后端數據庫的驗證。內置的數據庫驗證使數據庫值的存儲得到確認,并確保處理的精確性和已更新、刪除或增加的數據記錄的完整性。

      10.總結

      功能測試可以不是耗時或高成本的問題。采用自動化功能測試,企業可以將重點放在改進自動業務過程方面。開發和QA組可以增加測試過程的速度和精確度。整個IT部門可以獲得更高的投資回報,而且降低了大量風險。

    posted @ 2011-10-25 14:30 順其自然EVO| 編輯 收藏

    老徐最近翻譯的Mercury“最佳功能測試實踐”-第一部分

    1       概述

           測試過程作為功能測試的最佳實踐,用于實施不同機構的功能測試工作。它可以作為測試計劃工作的基礎,應用于每個軟件開發的項目。在這個測試過程中描述的活動既可以用于新開發的組件,亦可以用于改進現有的回歸測試。

    2       測試管理

    為了能順利地獲得測試的結果,將測試作為獨立管理的過程是非常必要的。測試管理可以分為下面四個領域。

    1)測試計劃

    2)測試執行

    3)測試控制

    4)測試過程改進

    用于支持測試管理各個領域的工具可以采用TestDirector

    1.1測試策略和計劃
        在制定測試策略時,要基于被測軟件的質量目標。質量目標就是測試的需求。它們決定了測試的階段和質量的目標。要想最優化測試的活動并制定一個切實可行的測 試計劃,需要將被測軟件分解成為一個一個的業務功能。在進行業務功能分解時,要以黑盒的方法來看待被測軟件的功能,即獨立于軟件的實現方法。若想計算測試 的效果并且保證測試的活動適合于特定業務的需要,則需要引入風險評估的手段。

    1.1.1   需求
        測試的必要條件是要確定預期結果或者需求。
    為了能更好的了解需求,將需求進行分類是非常有幫助的。以我們的觀點,可以將需求分為功能性需求和質量需求(非功能性需求)。功能性需求描述了在業務上期望如何使用新的軟件系統,且該系統中應該包括哪些功能。質量需求包括的是軟件系統的通用特性,且獨立于功能。
    1.1.1.1      功能性需求
        功能性需求以業務設計圖的方式記錄于文檔中。為了在TestDirector中將需求作為測試的基礎,需要將需求導入到TestDirector中。相應的業務設計圖作為需求的附件存在,并作為將來測試活動的依據。
    1.1.1.2             質量需求
        質量需求由兩部分構成,
    一部分是為整個產品或者項目定義的質量目標,另一部分是每個業務功能的質量需求,這些業務功能的質量需求取決于風險評估的結果。
    1.1.1.2.1       質量目標
    1)適應性
    組件被修改以適應新需求的難易程度。

    2)完整性
    組件實現所有需要的能力的程度。

    3)正確性
    a)        組件在規格分析、設計和實現過程中無錯誤的程度
    b)        組件滿足需求或者用戶需要與期望的程度
    c)        基于給定輸入產生相應輸出的能力,并且這個過程符合或者滿足需求

    4)有效性
    當組件完成指定任務時,能最少使用所需資源的程度。

    5)可維護性
    組件被修改以糾正錯誤,提高性能或其他屬性,或者適應被改變了的環境的難易程度

    6)模塊性
    軟件系統由離散的組件組成的程度,即改變一個組件時能將對其他組件的影響降至最低。

    7)可移植性
    軟件系統或組件能被轉移到其他硬件平臺或者軟件平臺上的難易程度。

    8)可靠性
    組件在一定的時間內、一定的條件下執行所需完成功能的能力。

    9)可用性
    用戶對軟件組件的理解和操作的難易程度。

    1.1.1.2.2       業務功能的質量需求
        業務功能的質量需求是依據業務的風險進行定義的。
    業務風險和技術復雜度的信息存儲在測試的需求中。這兩個參數決定了測試的程序和測試的工作量。另外,針對業務功能分配測試員,并且將測試活動的當前狀態落實到紙面上。只有這樣做才能在針對業務功能的整個測試過程中監控測試的狀態。
    1.1.2   測試階段的定義
        依據已經定義的質量目標,我們需要將測試階段進行合理的劃分。
    通常情況有以下幾個階段:

    1)開發員自測試階段(不在我們的考慮范圍之內)
    2)業務功能測試(單元測試)
    3)業務流程測試(應用級的集成測試)
    4)業務集成測試(端到端的集成測試)
    5)性能測試
    6)系統集成測試

    下面的表中描述了每個測試階段需要達到的質量目標:

     

       業務功能測試和業務流程測試是在軟件項目開發過程中完成的。而業務集成測試和系統集成測試則組合成回歸測試,用于軟件系統上線前或者發布為產品前來檢驗軟件的質量。


    1.1.3   質量門
        測試是在不同的階段中完成的。劃分不同階段的原因就是將不同的質量目標分配到不同的階段中,從而能將測試的執行盡可能的提前。所以,在相鄰的測試階段中設置一個質量門就成為保障成功的關鍵要素。

    下面的圖中展示了每兩個相鄰階段的質量門是如何設定的:

     


    下面是對質量門的一種詳細定義:

    1)在業務功能測試之后

    u 業務功能測試的測試用例執行了80%以上

    u 業務功能測試的測試用例(A級風險)執行了100%

    u 少于5個服務器端錯誤

    u 少于30個中級錯誤

    u 無致命性缺陷

    2)在業務流程測試之后

    u 業務功能測試通過

    u 業務流程執行了100%

    u 無業務流程完全失效,所有的錯誤都可以被修復

    u 無致命性缺陷

    3)在業務集成測試之后

    u 業務流程測試通過

    u 業務集成流程執行了100%

    u 無致命性缺陷

    1.1.4   功能分解
            在計劃測試活動之前,功能分解應該作為第一個要完成的活動。
    進行功能分解時,應該邀請業務方面和需求分析方面的代表共同參加。通常情況下,要遵從下面的原則:

    1) 每個用戶情形都是一個業務功能

    2) 如果一組用戶情形非常相似,那它們應該組合在一起形成一個業務功能

    3) 如果一個用戶情形非常大或者非常復雜,則應該將其分解為兩個或者更多的業務功能
       
    進行功能分解的思路體現在“將測試的單元確定為包含少量功能點的單位”,這樣,每個測試單元的測試用例的數量就會被限制在一定的范圍之內。我們可以將分解的目標設定為每個業務功能只有最多30-40個測試用例。    既然質量保證的基本思路是降低缺陷破壞業務的風險,同時為了確保質量保證的資源得到充分的利用,我們需要對每個業務功能進行風險的評估。
    1.1.5   風險評估
    還要考慮到的是,我們也要對技術影響進行分析。這樣我們能對完成每個業務功能的測試活動所需的工作量進行估算。 

    1.1.5.1  業務風險分析
        業務風險評估需要針對被測軟件的所有業務功能。
    評估的標準應該在整個業務的范圍內是唯一的,才能在企業范圍內使不同的評估結果具有可比性。

     

              結果

    標準

    A

    高級風險

    B

    中級風險

    C

    低級風險

    流程的類型

    計算/驗證

    數據的改變

    顯示

    業務影響

    合法性

    錯誤信息

    使用頻度

    非常頻繁

    經常

    極少

    受影響客戶的數量

    大量/非常重要

     

    1.1    測試準備
        測試的準備是一個獨立的、分離的階段,測試員在這個階段中基于需求文檔準備測試(業務設計圖)。測試的準備要依據標準的方法,并應基于本階段的工作生成標準化的文檔。
    1.1.1   業務功能測試
        基于風險評估,針對每個業務功能的不同風險級別都應有一個對應的測試過程和方法組合:
    1)A級風險
    利用等價類和組合進行系統性的測試完全自動化

    2)  B級風險
    利用等價類進行系統性的測試完全自動化

    3)  C級風險
    隨意性測試手工執行,在TestDirector中提供文檔化的執行過程

           對于每個測試過程和方法組合,要提供一個標準的文檔進行方法論級的闡述和規定,每個測試人員依據這些標準的測試過程和方法組合進行測試。

        在TestDirector中要將測試用例的準備結果作為業務功能的附件。

    1.1.2   業務流程測試
        業務流程測試是將所有的業務功能組合在一起,使用同一組數據進行工作。
        測試員的任務就是要確定每個業務功能的組合是否能連貫的執行。
        判斷的結果使用矩陣來表示,例如下圖:
    注:yes(+);no(-)

    業務流程矩陣

     

     

    1

    2

    3

    4

    5

     

     

     

    登陸

     

    航班

    查詢

     

    航班

    預定

     

    退出

     

    注冊

     

             后功能

    前功能

    1

    登陸

    -

    +

    -

    +

    +

    2

    航班查詢

    -

    +

    +

    +

    -

    3

    航班預定

    -

    +

    -

    +

    -

    4

    退出

    +

    -

    -

    -

    -

    5

    注冊

    +

    -

    -

    -

    +

    從上面的表中我們能獲得三個業務流程測試案例:
    1)        1,2,2,3,2,4,1,1
    2)        1,5,4
    3)        1,2,3,4

    1.1.3   業務集成測試
    使用現有的回歸測試案例進行業務集成測試。
    在第一個階段,測試案例僅被自動化,而不考慮測試的覆蓋率。
    在第二階段,測試案例將被改進,以提高測試的覆蓋率。
    對于所有的新項目,回歸測試應該在業務功能測試階段和業務流程測試階段的測試結果的基礎上進行建設。
    依據業務流程矩陣創建測試案例集,這個測試案例集應該能覆蓋被測系統的所有外部接口。
    假定我們的被測系統是Mercury的機票預定系統,它的架構圖如下:

     

     
    業務流程矩陣的設計如下圖:

    在業務集成測試階段中的測試案例開發

     

     

    1

    2

    3

    4

     

     

     

     

    預定一個航班

     

    打印機票

     

    posted @ 2011-10-25 14:19 順其自然EVO| 編輯 收藏

    測試用例編寫規范小結

    一、測試用例編寫準備

      從配置管理員處申請軟件配置:《需求規格說明書》和《設計說明書》;根據需求規格說明書和設計說明書,詳細理解用戶的真正需求,并且對軟件所實現的功能已經準確理解,然后著手制訂測試用例。

      二、測試用例制定的原則

      測試用例要包括欲測試的功能、應輸入的數據和預期的輸出結果。測試數據應該選用少量、高效的測試數據進行盡可能完備的測試;基本目標是:設計一組發現某個錯誤或某類錯誤的測試數據,測試用例應覆蓋方面:

      1、正確性測試:輸入用戶實際數據以驗證系統是滿足需求規格說明書的要求;測試用例中的測試點應首先保證要至少覆蓋需求規格說明書中的各項功能,并且正常。

      2、容錯性(健壯性)測試:程序能夠接收正確數據輸入并且產生正確(預期)的輸出,輸入非法數據(非法類型、不符合要求的數據、溢出數據等),程序應能給出提示并進行相應處理。把自己想象成一名對產品操作一點也不懂的客戶,在進行任意操作。

      3、完整(安全)性測試:對未經授權的人使用軟件系統或數據的企圖,系統能夠控制的程度,程序的數據處理能夠保持外部信息(數據庫或文件)的完整。

      4、接口間測試:測試各個模塊相互間的協調和通信情況,數據輸入輸出的一致性和正確性。

      5、數據庫測試依據數據庫設計規范對軟件系統的數據庫結構、數據表及其之間的數據調用關系進行測試。

      6、邊界值分析法:確定邊界情況(剛好等于、稍小于和稍大于和剛剛大于等價類邊界值),針對我們的系統在測試過程中主要輸入一些合法數據/非法數據,主要在邊界值附近選取。

      7、壓力測試:輸入10條記錄運行各個功能,輸入30條記錄運行,輸入50條記錄運行……進行測試。

      8、等價劃分:將所有可能的輸入數據(有效的和無效的)劃分成若干個等價類。

      9、錯誤推測:主要是根據測試經驗和直覺,參照以往的軟件系統出現錯誤之處。

      10、效率:完成預定的功能,系統的運行時間(主要是針對數據庫而言)。

      11、可理解(操作)性:理解和使用該系統的難易程度(界面友好性)。

      12、可移植性:在不同操作系統及硬件配置情況下的運行性。

      13、回歸測試:按照測試用例將所有的測試點測試完畢,測試中發現的問題開發人員已經解決,進行下一輪的測試。

      14、比較測試:將已經發版的類似產品或原有的老產品與測試的產品同時運行比較,或與已往的測試結果比較。

      說明:針對不同的測試類型和測試階段,測試用例編寫的側重點有所不同。

      1、  其中第1、2、6、8、9、13項為模塊(組件、控件)測試、組合(集成)測試、系統測試都涉及并重點測試的方面。

      2、  單元(模塊)測試(組件、控件)測試:重點測試第5項。

      3、  組合(集成)測試:重點進行接口間數據輸入及邏輯的測試,即第4項。

      4、  系統測試:重點測試第3、7、10、11、12、14項。

      5、  其中壓力測試和可移植性測試如果是公司的系列產品,可以選用其中有代表性的產品進行一次代表性測試即可。

      6、  GMPS基礎測試用例設計完成后,其他的測試項目只編寫設計與之不同部分的測試用例。

      7、  對于每個測試項目測試的測試用例不是一成不變的,隨著測試經驗的積累或在測試其他項目發現有測試不充分的測試點時,可以不斷的補充完善測試項目的測試用例。

      三、測試用例的填寫

      一個軟件系統或項目共用一套完整的測試用例,整個系統測試過程測試完畢,將實際測試結果填寫到測試用例中,操作步驟應盡可能的詳細,測試結論是指最終的測試結果(結論為:通過或不通過)。



    posted @ 2011-10-25 14:07 順其自然EVO| 編輯 收藏

    如何設計編寫軟件測試用例

      隨著中國軟件業的日益壯大和逐步走向成熟,軟件測試也在不斷發展:從最初的由軟件編程人員兼職測試到軟件公司組建獨立專職測試部門;測試工作也從簡單測試演變為包括編制測試計劃、編寫測試用例、準備測試數據、開發測試腳本、實施測試、測試評估等多項內容的正規測試;測試方式則由單純手工測試發展為手工、自動兼之,并有向第三方專業測試公司發展的趨勢。

      一、測試用例是軟件測試的核心

      軟件測試的重要性是毋庸置疑的。但如何以最少的人力、資源投入,在最短的時間內完成測試,發現軟件系統的缺陷,保證軟件的優良品質,則是軟件公司探索和追求的目標。每個軟件產品或軟件開發項目都需要有一套優秀的測試方案和測試方法。

       影響軟件測試的因素很多,例如軟件本身的復雜程度、開發人員(包括分析、設計、編程和測試的人員)的素質、測試方法和技術的運用等等。因為有些因素是客 觀存在的,無法避免。有些因素則是波動的、不穩定的,例如開發隊伍是流動的,有經驗的走了,新人不斷補充進來;一個具體的人工作也受情緒等影響,等等。如 何保障軟件測試質量的穩定?有了測試用例,無論是誰來測試,參照測試用例實施,都能保障測試的質量。可以把人為因素的影響減少到最小。即便最初的測試用例 考慮不周全,隨著測試的進行和軟件版本更新,也將日趨完善。

      因此測試用例的設計和編制是軟件測試活動中最重要的。測試用例是測試工作的指導,是軟件測試的必須遵守的準則,更是軟件測試質量穩定的根本保障。

      二、什么叫測試用例

      測試用例(Test Case)目前沒有經典的定義。比較通常的說法是:指對一項特定的軟件產品進行測試任務的描述,體現測試方案、方法、技術和策略,內容包括測試目標、測試環境、輸入數據、測試步驟、預期結果、測試腳本等,并形成文檔。

       不同類別的軟件,測試用例是不同的。不同于諸如系統、工具、控制、游戲軟件,管理軟件的用戶需求更加不統一,變化更大、更快。筆者主要從事企業管理軟件 的測試。因此我們的做法是把測試數據和測試腳本從測試用例中劃分出來。測試用例更趨于是針對軟件產品的功能、業務規則和業務處理所設計的測試方案。對軟件 的每個特定功能或運行操作路徑的測試構成了一個個測試用例。

      三、編寫測試用例

      著重介紹一些編寫測試用例的具體做法。

      1、測試用例文檔

      編寫測試用例文檔應有文檔模板,須符合內部的規范要求。測試用例文檔將受制于測試用例管理軟件的約束。

      軟件產品或軟件開發項目的測試用例一般以該產品的軟件模塊或子系統為單位,形成一個測試用例文檔,但并不是絕對的。

       測試用例文檔由簡介和測試用例兩部分組成。簡介部分編制了測試目的、測試范圍、定義術語、參考文檔、概述等。測試用例部分逐一列示各測試用例。每個具體 測試用例都將包括下列詳細信息:用例編號、用例名稱、測試等級、入口準則、驗證步驟、期望結果(含判斷標準)、出口準則、注釋等。以上內容涵蓋了測試用例 的基本元素:測試索引,測試環境,測試輸入,測試操作,預期結果,評價標準。

      2、測試用例的設置

      我們早期的測試用例是按功能設置用例。后來引進了路徑分析法,按路徑設置用例。目前演變為按功能、路徑混合模式設置用例。

      按功能測試是最簡捷的,按用例規約遍歷測試每一功能。

      對于復雜操作的程序模塊,其各功能的實施是相互影響、緊密相關、環環相扣的,可以演變出數量繁多的變化。沒有嚴密的邏輯分析,產生遺漏是在所難免。路徑分析是一個很好的方法,其最大的優點是在于可以避免漏測試。

       但路徑分析法也有局限性。在一個非常簡單字典維護模塊就存在十余條路徑。一個復雜的模塊會有幾十到上百條路徑是不足為奇的。筆者以為這是路徑分析比較合 適的使用規模。若一個子系統有十余個或更多的模塊,這些模塊相互有關聯。再采用路徑分析法,其路徑數量成幾何級增長,達5位數或更多,就無法使用了。那么 子系統模塊間的測試路徑或測試用例還是要靠傳統方法來解決。這是按功能、路徑混合模式設置用例的由來。

      3、設計測試用例

       測試用例可以分為基本事件、備選事件和異常事件。設計基本事件的用例,應該參照用例規約(或設計規格說明書),根據關聯的功能、操作按路徑分析法設計測 試用例。而對孤立的功能則直接按功能設計測試用例。基本事件的測試用例應包含所有需要實現的需求功能,覆蓋率達100%。

      設計備選事件 和異常事件的用例,則要復雜和困難得多。例如,字典的代碼是唯一的,不允許重復。測試需要驗證:字典新增程序中已存在有關字典代碼的約束,若出現代碼重復 必須報錯,并且報錯文字正確。往往在設計編碼階段形成的文檔對備選事件和異常事件分析描述不夠詳盡。而測試本身則要求驗證全部非基本事件,并同時盡量發現 其中的軟件缺陷。

      可以采用軟件測試常用的基本方法:等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、邏輯覆蓋法等設計測試用例。視軟件的不同性質采用不同的方法。如何靈活運用各種基本方法來設計完整的測試用例,并最終實現暴露隱藏的缺陷,全憑測試設計人員的豐富經驗和精心設計。

     四、測試用例在軟件測試中的作用

      1、指導測試的實施

      測試用例主要適用于集成測試、系統測試和回歸測試。在實施測試時測試用例作為測試的標準,測試人員一定要按照測試用例嚴格按用例項目和測試步驟逐一實施測試。并對測試情況記錄在測試用例管理軟件中,以便自動生成測試結果文檔。

      根據測試用例的測試等級,集成測試應測試那些用例,系統測試和回歸測試又該測試那些用例,在設計測試用例時都已作明確規定,實施測試時測試人員不能隨意作變動。

      2、規劃測試數據的準備

      在我們的實踐中測試數據是與測試用例分離的。按照測試用例配套準備一組或若干組測試原始數據,以及標準測試結果。尤其象測試報表之類數據集的正確性,按照測試用例規劃準備測試數據是十分必須的。

      除正常數據之外,還必須根據測試用例設計大量邊緣數據和錯誤數據。

      3、編寫測試腳本的"設計規格說明書"

      為提高測試效率,軟件測試已大力發展自動測試。自動測試的中心任務是編寫測試腳本。如果說軟件工程中軟件編程必須有設計規格說明書,那么測試腳本的設計規格說明書就是測試用例。

      4、評估測試結果的度量基準

      完成測試實施后需要對測試結果進行評估,并且編制測試報告。判斷軟件測試是否完成、衡量測試質量需要一些量化的結果。例:測試覆蓋率是多少、測 試合格率是多少、重要測試合格率是多少,等等。以前統計基準是軟件模塊或功能點,顯得過于粗糙。采用測試用例作度量基準更加準確、有效。

      5、分析缺陷的標準

      通過收集缺陷,對比測試用例和缺陷數據庫,分析確證是漏測還是缺陷復現。漏測反映了測試用例的不完善,應立即補充相應測試用例,最終達到逐步完善軟件質量。而已有相應測試用例,則反映實施測試或變更處理存在問題。

      五、相關問題

      1、測試用例的評審

      測試用例是軟件測試的準則,但它并不是一經編制完成就成為準則。測試用例在設計編制過程中要組織同級互查。完成編制后應組織專家評審,需獲得通過才可以使用。評審委員會可由項目負責人、測試、編程、分析設計等有關人員組成,也可邀請客戶代表參加。

      2、測試用例的修改更新

      測試用例在形成文檔后也還需要不斷完善。主要來自三方面的緣故:第一、在測試過程中發現設計測試用例時考慮不周,需要完善;第二、在軟件交付使 用后反饋的軟件缺陷,而缺陷又是因測試用例存在漏洞造成;第三、軟件自身的新增功能以及軟件版本的更新,測試用例也必須配套修改更新。

      一般小的修改完善可在原測試用例文檔上修改,但文檔要有更改記錄。軟件的版本升級更新,測試用例一般也應隨之編制升級更新版本。

      3、測試用例的管理軟件

      運用測試用例還需配備測試用例管理軟件。它的主要功能有三個:第一、能將測試用例文檔的關鍵內容,如編號、名稱等等自動導入管理數據庫,形成與 測試用例文檔完全對應的記錄;第二、可供測試實施時及時輸入測試情況;第三、最終實現自動生成測試結果文檔,包含各測試度量值,測試覆蓋表和測試通過或不 通過的測試用例清單列表。

      有了管理軟件,測試人員無論是編寫每日的測試工作日志、還是出軟件測試報告,都會變得輕而易舉。


    posted @ 2011-10-25 14:01 順其自然EVO| 編輯 收藏

    關于測試用例理念的一些想法

      LAYO最近下載了幾篇PPT;又看見了這樣一段描述。

      G.J.Myers給出了關于測試的一些規則,被軟件工程領域認可:

      (1)測試是為了發現程序中的錯誤而執行程序的過程;

      (2)好的測試方案極有可能發現迄今為止尚未發現的錯誤;

      (3)成功的測試是發現了至今為止尚未發現的錯誤。

      上面這段話是測試行業經常能看到的一段關于測試的工程的一種解釋;可能有些太理性或者說是書面化的解釋,作為一個TESTER我很表示同意;但是一直沒有認真理解這段話。

       測試是為了發現程序中的錯誤沒錯;但是我認為有些狹義的想法;綜合整體的軟件質量去評估去看;不單單在過程中去發現程序中的錯誤;而包括在設計之初的錯 誤邏輯和不合理的流程以及操作方式都是測試的過程中要關注的因子;所以就不僅僅是為了發現程序的錯誤;一個認真思考的TESTER是不拘在程序之內的范 疇。所以我認為測試是為了發現整個項目中任何不合理的錯誤;包括文檔的錯誤、業務流程中的漏洞、程序中的BUG、不正規的操作方式、不合理的數據流程。當 然這算是一種理想測試過程。

      好的測試方案極有可能返現迄今為止尚未發現的錯誤;我總是認為這句話帶有鉆牛角尖的意味;好的的是方案其實 是一種無窮盡的操作;記得有一個夸張的小道理:一百萬只猴子,給他們每人一個鍵盤,給他們足夠的時間,讓他們打出莎士比亞全集。就是在接近無窮的測試下會 讓程序的問題完全暴漏無疑;一個好的測試方案應該是合適項目的測試方案;到什么山唱什么歌;看菜吃飯、量體裁衣;根據項目去指定測試方案,這種方案下去測 試該項目才能真正說明項目問題。

      成功的測試是發現了至今為止尚未發現的錯誤;我認為將測試工作進行了一次反革命性的引導;行業需要創新思維;需要吹毛求疵;只能說在現有的需求下去發現不應該出現的問題。測試用例是在有限的資源下設計出涵蓋面最廣而最有效的用例;不是說為了測試而測試。

      測試的根源在需求;一切測試脫離需求都是不現實的測試;一切測試不能滿足需求就是不成功的測試。

    posted @ 2011-10-25 13:54 順其自然EVO| 編輯 收藏

    測試用例的價值

    一個測試用例是一個正式的文件或記錄,描述了測試活動是怎樣具體執行的。一些測試參考資料指出測試用例的目的就是發現缺陷,但是測試用例的用處遠遠超出發現缺陷。測試用例可以驗證程序功能正常或驗證錯誤能被正確處理。測試用例的其他用處是可以嘗試增加代碼覆蓋或專門用于覆蓋很少使用的路徑。

      測試用例文檔的價值在微軟軟件測試行業之間有爭論。有幾個因素可以幫助決定是否選擇測試用例文檔。測試用例文檔有如下一些好處:

      歷史借鑒。測試用例的存在要遠遠超過產品發布。持續工程以及產品未來版本的負責人往往需要借用測試用例來了解測試過什么,以及如何測試的。測試用例文檔以及一個有組織的儲存系統,對長期支持或修訂產品的一部分是至關重要的策略。

      測試進展跟蹤。通過測試用例文檔,可以跟蹤一些額外的屬性,如測試用例的執行數目、測試用例的通過或失敗數目,以及每個功能領域的測試用例總數。

      可重復性。好的測試用例文檔可以由任何人在任何時候執行。這同樣適用于自動和手動的測試用例文檔。重復準確地執行同樣的測試對重視步驟或檢驗回歸是至關重要的。

      測試用例文檔也有如下缺點:

      建立文檔的時間。如果建立測試用例文檔的時間比運行測試用例所需的時間還長,建立測試用例文檔也許就沒有意義了。經常有這樣的情況,即測試用例只需要在一個單一的環境下執行寥寥幾次。

      功能變化引起測試用例過期。建立測試用例所需的時間很可能因為功能經常變化而增加,以至于失去控制。如果測試用例的功能領域變化頻繁,建立測試用例文檔就不一定是明智的。這種場景之一是嘗試寫測試用例以驗證用戶界面組件。

      很難設想讀者的知識。寫測試用例的人往往對被測試的功能極為熟悉。這些人常犯的錯誤是在測試用例中使用術語或縮寫,而將來運行測試用例的人很可能看不懂這些測試用例。出現這種情況時,測試用例已不再能準確地重復,測試用例也失去了這一關鍵屬性。

       測試用例通常用測試用例管理器(TCM)來建立文檔,微軟大部分團隊用測試用例管理器記錄絕大多數測試用例。重要的是要記住,測試用例并沒有定義所有的 測試活動。如缺陷大掃除,那是整個團隊致力于數小時或數天的時間,專注于使用功能或應用程序,尋找可能被測試用例過的缺陷,這種測試活動在微軟的各團隊是 常見的。許多團隊也在產品周期中花時間致力于客戶的使用場景。例如,一些Visual Studio的團隊經常花一些時間,整個團隊除了在Visual Studio開發環境創造和建立各種應用程序外,什么都不做。

    cc 

    posted @ 2011-10-25 13:50 順其自然EVO| 編輯 收藏

    軟件測試人員易遺漏的一些隱藏缺陷

      通常軟件測試會暴露軟件中的缺陷,經過修正后可以保證軟件系統的功能滿足需求并正確運行。但是,在系統測試和 確認測試中,測試人員容易遺漏一些隱藏的缺陷。眾所周知,軟件測試不可能發現所有的缺陷,而軟件開發周期各個階段仍然存在注入缺陷的可能,但是,有一些缺 陷是測試中容易忽略的,也就是說,通過測試方法和用例可以充分暴露這些缺陷,遺憾的是,它們往往被忽略或者某種原因忘記測試了,這就給軟件留下了隱患或者 危機。這些容易被忽略的缺陷包括:

      1、安裝缺陷

      通常項目組完成代碼后,發布時候安裝打包是最后一個環節,而軟件測試人員通常在測試的時候,沒有仔細的測試這一部分,而把用例集中在其他功能上。安裝時候的缺陷通常通過拷貝而不是運行安裝程序方式給測試人員安裝軟件,結果正式安裝時候出現問題,引起例如控件沒有注冊,注冊表沒有導入等。刪除時候沒有注意安裝文件夾是否存在用戶文件,造成數據丟失;使用絕對路徑;安裝順序沒有說明書。

      2、配置文件

      有些文件在ini等配置文件中寫出了管理員口令密碼等信息,而且是明文的!這是一個安全隱患。另外,有些安裝文件的 XML 文件,為了方便在數據庫和中間層連接文件中寫入了Admin 口令和密碼。作為一個合格的軟件測試人員,必須檢查這些可以用記事本打開的文件。因為,一個稍有常識而且喜歡探索的用戶,可能從中獲取信息而成為不自覺的黑客。所以,配置文件可能成為軟件安全方面的一個缺陷。

      3、網頁安全缺陷

      現在網站開發已經注意到:登陸網站進入其內部網頁后,直接拷貝網址,然后粘貼到另一IE 窗口輸入,可以繞過登陸直接訪問。也許商業網站很關注這個問題,但是很多行業軟件卻很容易忽略。

      網頁安全缺陷還可能存在于 IE 彈出的子窗口。有些設計不嚴格的軟件,在主頁面關閉的時候子頁面還可以運行,這是一個明顯的漏洞,而且還大大增加了錯誤發生的幾率。

      4、判斷順序/邏輯缺陷

       對界面進行多個輸入判斷的時候,非常容易出現這種問題。例如判斷年月順序,判斷長度,判斷非空等。假如操作員僅僅滿足單個條件,保存不能成功;而按界面 從上之下順序一一滿足條件之后,保存是沒有問題的。但是,改變一下輸入的次序,校驗失效。例如,一一滿足條件之后,不保存,倒過來將上面的輸入改成非法輸 入,然后保存,結果居然也能成功,這是因為原先的判斷由于發生過,或者根據語句順序只檢查最后一個判斷,所以沒有報錯。這種錯誤尤其在 Java scrīpt 腳本的頁面中要注意。能夠保存不能保證數據正確,有可能引起系統崩潰或者后續數據錯誤。所以,在測試的時候,不要按照正常的順序輸入,而是要打亂步驟,看 看代碼是否強健,是否在判斷邏輯上沒有錯誤。良好的代碼應該經得起折騰,至少保存時會再此全部進行判斷,而不只是簡簡單單走到判斷的最后一行。

      5、調試語句和冗余信息

       維護項目和升級改造的推廣系統最容易潛伏這類缺陷。典型表現在沒有刪除或者屏蔽調試語句。彈出一個界面不友好的提示信息,會使不明真相的用戶產生誤以為 系統發生了嚴重故障,從而引起對軟件的不信任感。頁面中某個角落存在當前客戶不需要的冗余按鈕和功能也是一種缺陷。多余的功能會使用戶以為是額外附加部分 而去使用,其結果可想而知;而多余的按鈕會誤導好奇心強的用戶操作,產生不必要的錯誤。

      同樣值得關注的還有參數設置,由于沒有實際數據,開發人員在調試或者單元測試的時候,習慣性的進行自我設定而忘了刪除,軟件測試人員可能會忽略掉了這部分測試,也可能導致在客戶現場發生錯誤而影響系統發布和驗收。

      6、不可重現的故障

      新參加軟件測試的人員或者新來的開發人員總是要問,不可重現的缺陷是否需要記錄,有必要嗎?回答是肯定的。測試必須如實的記錄發生的問題,也許不能重現,或者使非軟件系統本身問題,但是,可能這些偶然性背后是有規律的,不記錄這些,就不可能發現這些規律。

      7、多節點的逆向流轉缺陷

      當前軟件不少喜歡使用工作流來驅動。工作流的問題,就是可能出現多個流向分支。測試容易忽略的部分,就是工作流多節點的逆向流轉。例如,通過不 通過涉及兩個分支,但是流程逆轉的時候,有可能不是回到上一節點而是平級的另一個節點去了。軟件測試要格外注意這類用例的設計。另外,有些時候默認分支在 向前的時候是有默認值的,例如默認通過,那么保存的時候要提示用戶是否通過,否則可能由于操作疲勞而走錯了節點,引起回退。

      8、輸入框缺陷

      試過往輸入框粘貼數據而不是直接輸入嗎?可能這里會出現問題。按 Ctrl+V 的時候,輸入框會根據長度大小自動截斷輸入長度。但是用鼠標,截斷可能會失效。有一次測試人員就是用這種方法把一篇 Word 文檔輸入進去了,保存的時候,數據庫崩潰。有些網站登陸的口令****可以拷貝下來的,只要放在剪貼板里面馬上明文顯示。

      輸入框可以說是問題最多的部分,能夠引起的麻煩也很多。日期、數字、文本等等,都需要耐心的測試一下。

      9、界面布局缺陷

      曾經有一次,項目經理回來向測試部反映一個問題,客戶對界面不滿意。原因很簡單,因為界面上刪除按鈕和保存按鈕挨得很近。結果有些操作不熟練的 業務人員,很容易誤按。這個問題是測試人員沒有意料到的,因此注意關閉、刪除、退出按鈕與保存、下一步等按鈕的距離。類似的按鈕應按此規則排列分布。

      界面布局還可能發生在窗口最大化和最小化上,有可能窗口縮小的時候沒有下拉框或不匹配分辨率,對用戶來講,這個錯誤實在很低級。有些用戶由于操 作習慣,非常不喜歡騰出手使用鼠標,尤其是大量輸入的界面,因此,要注意設置鍵盤的快捷方式。還有,按 Tab定位到下一焦點時要注意順序,避免跳轉太靈活而讓操作人員感到無從適應,在界面進行維護或者修改的時候,不要忘了軟件測試開發人員是否無意改變了這 些快捷方式和跳轉順序。

      10、版本和補丁包的環境問題

      理論上講,這屬于兼容性測試應該覆蓋的問題。有些客戶很喜歡更新最新的軟件版本或者微軟時不時打些補丁包,問題就出現了。有時候升級不一定是好 事。這些問題最好在測試的時候增加幾個用例,多用不同軟件版本的機器跑一跑。軟件測試有個定律是:你沒跑過的地方,就一定會出事。經常聽到開發人員抱怨, 怎么我的機器沒問題,你的機器就有事了呢?這不能完全靠配置管理員解決問題,環境配置項是大家最容易忽略的。

      11、用戶管理缺陷

      用戶管理的角色和授權需要好好研究一下,作過測試的人員都知道,有時候為了測試的方便,測試用戶都是具有超級權限的用戶。而且,比較容易忽略用戶管理這一部分的測試。往往發往客戶的時候,很多測試用戶都沒有刪除。

      另外,有些接口的用戶和口令,到軟件使用壽命結束都沒有更改過。在一次測試中,軟件測試人員發現,給一個用戶授超級用戶權限,之后更改這個用戶 為受限權限。使用中發現,用戶居然沒有真正回收權限,用戶管理界面上沒有任何不對。及早準備用戶管理用例,不要等到測試快結束時候才想起。

      12、常識缺陷

      從邏輯或者統計學上講,計算機是允許如此處理的,但是從常識上來講,這些情況不可能發生。例如電話號碼不可能出現小數點,終止時間不能大于開始 時間等等。除此之外,常識還要結合業務特點來進行判斷,因此,開發和測試人員要格外注意對自己知識的培養以及增加對需求細節的了解。不能因為一味追求進度 而采用最簡單的代碼來實現,對用戶來說,這些錯誤可能是很荒謬的。

      盡管我們不可能完美的測試一個軟件,但是我們仍然可以改進我們的軟件測試。每次測試結束,及時總結測試中的不足,進一步完善用例。思考一下那些容易忽略的軟件缺陷,能提高對軟件測試的認識,提高所在組織軟件的質量。

    posted @ 2011-10-25 13:38 順其自然EVO| 編輯 收藏

    有效測試用例設計的前奏曲

    如何進行有效的用例設計?作為任何一個測試用例設計者,這永遠是一個非常難以回答的問題。這個問題至今為止也再不斷的困擾我,人見人智。下面是我的一些個人見解,或許能對大家有一些啟示。

       第一:“明確”待測試項目的需求對于任何一個項目,無論你接手的項目有多小,甚至可能都算不上一個項目,而僅僅是一個小工具,明確需求非常重要。可能 很多人會說,公司現狀,測試能看到需求文檔幾乎不可能;也或者公司有需求文檔,但與實際的待測試項目相差甚遠;也或者還有其他的各種可能情況,但無論是什么原因,明確需求是任何一名測試用例設計者必須堅持也必須執行的一條原則。如果你是測試部的負責人,在面對需求不明確的項目時, 請你先收集待測試項目盡可能多的“文檔”,這些文檔有時并不一定需要是已經現成成稿的,其實我們可以通過“不恥下問”之后自行整理。測試負責人自己必須對 待測試項目做到“胸有成竹”。

      第二:“分析”待測試項目可能很多人這個時候會非常不以為然了,為什么要經過這么一個過程?“分析”待 測試項目的目的是讓我們更進一步的了解待測試項目,那可能大家這個時候又會問了,了解什么?大家想想,你明確了需求,可是你知道待測試項目的體系結構是什 么嗎?你知道我們采用了什么技術嗎?你知道這個項目蘊涵的業務知識有哪些嗎?對了,我們就是要通過更進一步的分析,整理出更為詳細的資料,服務于我們的測 試工作

      第三:“學習” 待測試項目的業務知識。這一點我相信很多人都能認同,比如你是做銀行相關項目的,那你肯定要具備銀行相關方面的知識,只有這樣,才能非常容易的明白為什么 這么設計,或者這么設計的優勢在哪里?針對采用的某種實現技術,只有更進一步的學習了解,你才能明確這種技術的優勢與弱勢分別是什么,針對這種技術的弱 勢,我們測試又需要重點測試哪些地方等等。這些問題都需要在我們提升我們自身業務水平的同時得到解決。

      第四:內部討論。對于這點,我有 非常切身的感受,作為項目測試負責人,一定要更自己的測試團隊針對某個項目進行多次內部的討論,通過內部討論更進一步發現我們忽律的地方,同時也讓大家的 資源共享,用最短,最快的方式收獲最好的效果。

    posted @ 2011-10-25 11:33 順其自然EVO| 編輯 收藏

    LoadRunner參數化取值與連接數據庫

     LoadRunner在使用參數化的時候,通常都是需要準備大數據量的,也因此LoadRunner提供兩種參數化取值方式,一種是手動編輯,另一種就是通過連接數據庫取值。一般在大型業務并發壓力測試時,數據量肯定也都是非常大的,所以手動去編輯當然就不切實際了,還好有連接數據庫的功能,所以就方便了很多。不過提供連接數據庫的功能到不是為了方便去取數據,而更重要的應該是借用數據庫的造數據功能,通過簡單的sql語句,便可以完成大量可復用的數據,這就是數據庫的強大之處。

      在腳本中設置參數化之后,進入參數化屬性就可以發現一個標簽按鈕Data Wizard,這里就是連接數據庫的接口。不過連接數據庫可不能直接進行連接,需要通過windows系統提供的ODBC進行橋接,這里以sql server2005為例。通過系統的控制面板找到管理工具,然后再找到數據源(ODBC)點擊進入,選擇系統DNS標簽下,添加數據源并選擇sqlserver,如圖所示:

      當然,配置完成之后,需要執行簡單的配置測試,測試成功后,表示ODBC橋接成功。接下來便可以創建數據庫和表了,這里在sqlserver2005下創建表Table_a,只有一個字段名為a,通過如下sql腳本插入100條記錄到表中:

    declare @a int ;
    set @a = 1 ;
    while @a<=100
    begin
         insert into dbo.Table_a values('test');
         set @a=@a+1;
    end

      執行以上腳本之后,表就插入了100條同樣的記錄“test”,此時表中的數據已經準備ok了。

      回到LoadRunner Vuser中,創建一個簡單的參數化腳本如下:

    Action()
    {
        lr_eval_string("{testParam}");
        return 0;
    }

      右鍵參數進行參數屬性對話框,點擊Data Wizard進入連接數據庫配置,選擇“Spectify SQL statement manu”制定sql連接,然后選擇下一步,再點擊Create進入數據源選擇方式,選擇LoadRunner命名的數據源,如下圖所示:

      在下面的SQL空白處,輸入對應的sql語句,完成合適的數據導入,完成后,數據被導入到參數化列表中,如下圖所示:

      做性能測試,最重要的準備工作就是數據,特別是對數據庫的靈活運用,將會大大提高性能測試的效率。

    posted @ 2011-10-24 17:13 順其自然EVO| 編輯 收藏

    僅列出標題
    共394頁: First 上一頁 377 378 379 380 381 382 383 384 385 下一頁 Last 
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 很黄很色很刺激的视频免费| 日韩免费视频观看| 亚洲一区二区三区播放在线| 毛片A级毛片免费播放| 一级毛片免费在线播放| 亚洲国产精品第一区二区| 天天摸天天操免费播放小视频| 免费中文字幕视频| 亚洲人成网站影音先锋播放| 毛片a级三毛片免费播放| a毛看片免费观看视频| 亚洲精品又粗又大又爽A片| 怡红院亚洲怡红院首页| 在线观看免费人成视频色| 国产福利免费视频 | 久久久久久久久亚洲| 免费看国产精品3a黄的视频| 国产精品无码永久免费888| 国产精品亚洲精品青青青| 青青草原亚洲视频| 国产无遮挡色视频免费视频| 久久国产色AV免费看| 一区二区免费在线观看| 亚洲成A人片在线播放器| 亚洲成年人在线观看| 亚洲第一福利网站在线观看| a毛片基地免费全部视频| 国产成人精品无码免费看 | 一级毛片在线完整免费观看| 亚洲av乱码一区二区三区香蕉| 国产亚洲精品资在线| 国产精品公开免费视频| 免费人成网站在线观看10分钟| 国产一区二区三区免费观看在线 | 99在线精品免费视频九九视| 丝袜捆绑调教视频免费区| 美女视频免费看一区二区| 亚洲色偷偷色噜噜狠狠99网| 亚洲日韩国产精品无码av| 亚洲AV永久精品爱情岛论坛| 亚洲精品国产V片在线观看|