什麼是軟體測試?
十個經典軟體測試面試題:
1.什麼是軟體測試,軟體測試的目的?
參考答案:
什麼是軟體測試:
·軟體測試就是在受控制的條件下對系統或應用程式進行*作并評價*作結果的過程,所謂控 制條件應包括正常條件與非正常條件。
·軟體測試過程中應該故意地去促使錯誤的發生,也就是事情在不該出現的時候出現或者在應 該出現的時候沒有出現。從本質上說,軟體測試是“探測”,在“探測”中發現軟體的毛病。
·軟體測試貫穿于軟體定義與開發的整個周期 ,軟體的需求規格說明書 ,結構設計及程式編 *,都屬于軟體測試的對象。
·軟體測試包含白盒測試與黑盒測試,白盒測試是針對程式代*進行正确性檢驗的測試工作, 黑盒測試獨立于程式代*,從使用者的角度,通過一定的測試步驟與測試案例,驗證軟體功能、 性能等名額能否滿足實際應用需求的測試工作。
軟體測試的目的:
軟體測試的目的是為了保證軟體産品的最終品質,在軟體開發的過程中,對軟體産品進行品質控制。一般來說軟體測試應由獨立的産品評測中心負責,嚴格按照軟體測試流程,制定測試計劃、測試方案、測試規範,實施測試,對測試記錄進行分析,并根據回歸測試情況撰寫測試報告。測試是為了證明程式有錯,而不能保證程式沒有錯誤。
2.軟體測試的風險主要展現在哪裡?
參考答案:
我們沒有對軟體進行完全測試,實際就是選擇了風險,因為缺陷極有可能存在沒有進行測試的部分。舉個例子,程式員為了友善,在調試程式時會彈出一些提示資訊框,而這些提示隻在某種條件下會彈出,碰巧程式釋出前這些代*中的一些沒有被注釋掉。在測試時測試工程師又沒有對其進行測試。如果客戶碰到它,這将是代價昂貴的缺陷,因為傳遞後才被客戶發現。
是以,我們要盡可能的選擇最合适的測試量,把風險降低到最小。
3.測試工具在測試工作中是什麼地位?
參考答案:
國内的很多測試工程師對測試工具相當迷戀,尤其是一些新手,甚至期望測試工具可以取代手工測試。測試工具在測試工作中起的是輔助作用,一般用來提高測試效率。自動化測試彌補了手工測試的不足,減輕一定的工作量。實際上測試工具是無法替代大多數手工測試的,而一些諸如性能測試等自動化測試也是手工所不能完成的。
對于自動測試技術,應當依據軟體的不同情況來分别對待,一般自動技術會應用在引起大量重複性工作的地方、系統的壓力點、以及任何适合使用程式解決大批量輸入資料的地方。然後再尋找合适的自動測試工具,或者自己開發測試程式。一定不要為了使用測試工具而使用。
4.發現的缺陷越多,說明軟體缺陷越多嗎?
參考答案:
這是一個比較常見的現象。測試工程師在沒有找到缺陷前會絞盡腦汁的思考,但是找到一個後,會接二連三的發現很多缺陷,頗有個人成就感。其中的原因主要如下:
-代*複用、拷貝代*導緻程式員容易犯相同的錯誤。類的繼承導緻所有的子類會包含基類的錯誤,反複拷貝同一代*意味可能也複制了缺陷。
-程式員比較勞累是可以導緻某些連續編寫的功能缺陷較多。程式員加班是一種司空見慣的現象,是以體力不隻時容易編寫一些缺陷較多的程式。而這些連續潛伏缺陷恰恰時測試工程師大顯身手的地方。
“缺陷一個連着一個”不是一個客觀規律,隻是一個常見的現象。如果軟體編寫的比較好,這種現象就不常見了。測試人員隻要嚴肅認真的測試程式就可以了。
5.所有的軟體缺陷都能修複嗎?所有的軟體缺陷都要修複嗎?
參考答案:
從技術上講,所有的軟體缺陷都是能夠修複的,但是沒有必要修複所有的軟體缺陷。測試人員要做的是能夠正确判斷什麼時候不能追求軟體的完美。對于整個項目團隊,要做的是對每一個軟體缺陷進行取舍,根據風險決定那些缺陷要修複。發生這種現象的主要原因如下:
-沒有足夠的時間資源。在任何一個項目中,通常情況下開發人員和測試人員都是不夠用的,而且在項目中沒有預算足夠的回歸測試時間,再加上修改缺陷可能引入新的缺陷,是以在傳遞期限的強大壓力下,必須放棄某些缺陷的修改。
-有些缺陷隻是特殊情況下出現,這種缺陷處于商業利益考慮,可以在以後更新中進行修複。
-不是缺陷的缺陷。我們經常會碰到某些功能方面的問題被當成缺陷來處理,這類問題可以以後有時間時考慮再處理。
最後要說的是,缺陷是否修改要由軟體測試人員、項目經理、程式員共同讨論來決定是否修複,不同角色的人員從不同的角度來思考,以做出正确的決定。
6.軟體測試人員就是QA嗎?
參考答案:
軟體測試人員的職責是盡可能早的找出軟體缺陷,確定得以修複。而品質保證人員(QA)主要職責是建立或者制定标準和方法,提高促進軟體開發能力和減少軟體缺陷。測試人員的主要工作是測試,品質保證人員日常工作重要内容是檢查與評審,測試工作也是測試保證人員的工作對象。
軟體測試和品質是相輔相成的關系,都是為了提高軟體品質而工作。
7.如何減少測試人員跳槽帶來的損失?
參考答案:
在IT行業裡跳槽已經是一種司空見慣的現象,而且跳槽無論給公司還是給個人都會帶來一定的損失。測試隊伍也無疑會面臨跳槽的威脅,作為測試經理管理者,隻有從日常工作中開始做起,最能最大限度的減少損失。建議我們從以下兩個方面做起:
-加強部門内員工之間的互相學習,互相學習是建立學習型組織的基本要求,是知識互相轉移的過程。在此基礎上,可以把個人擁有的技術以知識的形式沉積下來,也就完成了隐性知識到顯性知識的轉化。
-通常情況下,企業能為員工提供足夠大的發展空間時,如果不是待遇特别低,員工都不會主動離開企業。是以我們要想留住員工,管理者就應該把員工的個人成長和企業的發展聯系起來,為員工設定合理發展規劃并付諸實作。不過這項要求做起來比較,要有比較好的企業文化為依托。
8.測試産品與測試項目的差別是什麼?
參考答案:
習慣上把開發完成後進行商業化、幾乎不進行代*修改就可以售給使用者使用的軟體成為軟體産品,也就是可以買“賣拷貝”的軟體,例如Windows2000。而通常把針對一個或者幾個特定的使用者而開發的軟體成為軟體項目,軟體項目是一種個性化的産品,可以是按照使用者要求全部重新開發,也可以修改已有的軟體産品來滿足特定的使用者需求。項目和産品的不同特點,決定我們測試産品和測試項目仍然會有很多不同的地方:
-品質要求不同。通常産品的品質要高一些,修複釋出後産品的缺陷成本較高,甚至會帶來很多負面的影響。而做項目通常面向某一使用者,雖然品質越高越好,但是一般隻要滿足使用者要求就可以了。
-測試資源投入多少不同。做軟體産品通常是研發中心來開發,進度壓力要小些。同時由于品質要求高,是以會投入較多的人力、物力資源。
-項目最後要和使用者共同驗收測試,這是産品測試不具有的特點。
此外,測試産品與測試項目在缺陷管理方面、測試政策制定都會有很大不同,測試管理者應該結合具體的環境,恰如其分的完成工作。
9.和使用者共同測試(UAT測試)的注意點有哪些?
參考答案:
軟體産品在投産前,通常都會進行使用者驗收測試。如果使用者驗收測試沒有通過,直接結果就是那不到“Money”,間接影響是損害了公司的形象,而後者的影響往往更嚴重。根據作者的經驗,使用者驗收測試一定要讓使用者滿意。
實際上使用者現場測試更趨于是一種示範。在不欺騙使用者的前提下,我們向使用者展示我們軟體的優點,最後讓“上帝”滿意并欣然掏出“銀子”才是我們的目标。是以使用者測試要注意下面的事項:
(1)使用者現場測試不可能測試全部功能,是以要測試核心功能。這需要提前做好準備,這些核心功能一定要預先經過測試,證明沒有問題才可以和使用者共同進行測試。測試核心子產品的目的是建立使用者對軟體的信心。當然如果這些子產品如果問題較多,不應該進行示範。
(2)如果某些子產品确實有問題,我們可以示範其它重要的業務功能子產品,必要時要向使用者做成合理的解釋。争得時間後,及時修改缺陷來彌補。
(3)永遠不能欺騙使用者,蒙混過關。道理很簡單,因為軟體是要給使用者用的,問題早晚會暴露出來,除非你可以馬上修改。
和使用者進行測試還要注意各種交流技巧,争取不但短期利益得到了滿足,還要為後面得合作打好基礎。
10.如何編寫送出給使用者的測試報告?
參考答案:
随着測試工作越來越受重視,開發團隊向客戶提供測試文檔是不可避免的事情。很多人會問:“我們可以把工作中的測試報告提供給客戶嗎?”答案是否定的。因為提供内部測試報告,可能會讓客戶失去信心,甚至否定項目。
測試報告一般分為内部測試報告和外部測試報告。内部報告是我們在測試工作中的項目文檔,反映了測試工作的實施情況,這裡不過多讨論,讀者可以參考相關教材。這裡主要讨論一下外部測試報告的寫法,一般外部測試報告要滿足下面幾個要求:
-根據内部測試報告進行編寫,一般可以摘錄;
-不可以向客戶報告嚴重缺陷,即使是已經修改的缺陷,開發中的缺陷也沒有必要讓客戶知道;
-報告上可以列出一些缺陷,但必須是中級的缺陷,而且這些缺陷必須是修複的;
-報告上面的内容盡量要真實可靠;
-整個測試報告要仔細審閱,力争不給項目帶來負面作用,尤其是性能測試報告。
總之,外部測試報告要小心謹慎的編寫。
本文由達内總部軟體測試教育訓練整理,轉載請注明出處!