2017年9月1日 星期五

(一) 測試概論



這本書雖然老舊(約10年),但個人覺得是一個出發點,所以這一系列筆記會擷取各章節的重點


對軟體測試的誤解

如果發佈出去的軟體有品質問題,那是軟體測試人員的錯
--軟體測試是一種有效的提高軟體品質的手段,但即使在投入上有所保證,測試也並不能百分之百地發現所有品質隱患

軟體測試技術要求不高
--需要掌握各種測試技術,還要具備豐富的編寫程式經驗和BUG的敏感度

有時間就多測試一些,來不及就少測試一些
有規範的軟體開發需要對軟體測試及早做計劃,分配必要的時間、人力和財力等資源,並將其做為專案管理的一部分加以控制和協調

設計-實現-測試,軟體測試是開發後期的一個階段
--生命週期中的"測試階段"表明在該階段測試工作是主要工作,而不是說,測試工作只發生"測試階段";通常到"測試階段",測試的主要任務是執行測試、形成測試報告;測試的準備工作,如測試計劃、測試用例的確定以及測試程式碼的編寫等都是要在更早階段完成的
針對每個程式單元,可進行單元測試;針對若干或全部單元的交互,可以進行集成測試;而針對完整的軟體產品,可進行系統測試,開發與測試是交互進行的,並沒有嚴格的先後關係
測試的物件並不僅僅是程式碼,需求文件和設計文件等也是測試的物件。軟體測試也要經歷測試計劃、測試用例的設計和實現,以及測試執行一系列的階段,因此早在軟體需求階段、甚至更早,軟體測試的工作就要開始了


測試工程師的素質

溝通能力
--測試者需要和各種人進行溝通,既要能和技術人員討論細統的設計和實現問題,又要和非技術人員(客戶、主管)交流系統的需求和規格;這是不同的兩類人,關心的重點並不一樣;測試常被人理解為一種"破壞"性的工作,而容易導致測試人員與其他相關者的衝突。
比如,使用者擔心將來使用一個不符合需求的系統,開發者則擔心由於系統要求不正確而導致不得不重新設計開發,管理部門則擔心這個系統突然崩潰而使公司聲譽受損。這就要求測試工程師能夠理解不同人的想法,盡量減少和避免與各方的衝突和對抗。
在發現錯誤後,如何告訴相關人員也是一門"藝術",機智老練和熟練的外交手法有助於維護測試者與開發人員的協助關係。如果採取的方法過於死板和生硬,對測試者來說,在以後的工作中就會出現"贏了戰爭卻輸了戰役"的不利場面

自信心
--測試者除了要有夠硬的技術底子外,面對開發者的懷疑和指責還要有足夠的自信心

幽默感

記憶力
--因為許多新出現的問題和我們已經發現的問題相差不多

5.耐心

懷疑精神

自我督促
--測試工作重複性很高,這很容易使你變得疲倦和無聊

觀察力
--能夠準確捕獲使用者的觀點,對細節超乎尋常地關注;具備把握重點的能力,以便將有限的測試資源投入到系統的重點環節上


廣義的軟體測試

確認: 確保一個待開發軟體是正確無誤的,是對軟體開發構想的檢測
驗證: 確保軟體會正確無誤地實現軟體的需求,開發過程是沿著正確的方向進行的
測試: 通常經過單元測試、整合測試、系統測試