溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

軟件測試方法

發(fā)布時間:2020-07-05 05:05:04 來源:網(wǎng)絡(luò) 閱讀:591 作者:小止1995 欄目:軟件技術(shù)

1軟件測試基礎(chǔ)

信息技術(shù)的飛速發(fā)展,使軟件產(chǎn)品應(yīng)用到社會的各個領(lǐng)域,軟件產(chǎn)品的質(zhì)量自然成為人們共同關(guān)注的焦點。不論軟件的生產(chǎn)者還是軟件的使用者,均生存在競爭的環(huán)境中,軟件開發(fā)商為了占有市場,必須把產(chǎn)品質(zhì)量作為企業(yè)的重要目標(biāo)之一,以免在激烈的競爭中被淘汰出局。用戶為了保證自己業(yè)務(wù)的順利完成,當(dāng)然??催x用優(yōu)質(zhì)的軟件。質(zhì)量不佳的軟件產(chǎn)品不僅會使開發(fā)商的維護(hù)難度和用戶的使用本錢大幅增加,還可能產(chǎn)生其他的責(zé)任風(fēng)險,造成公司信譽下降,繼而沖擊股票市場。在一些關(guān)鍵應(yīng)用 (如民航訂票系統(tǒng)、銀行結(jié)算系統(tǒng)、證券交易系統(tǒng)、自動飛行控制軟件、軍事防御、核電站安全控制系統(tǒng)等中使用質(zhì)量有問題的軟件,還可能造成災(zāi)難性的后果。

軟件危機曾經(jīng)是軟件界甚至整個計算機界最熱門的話題。為了解決這場危機,軟件從業(yè)職員、專家和學(xué)者做出了大量的努力?,F(xiàn)在人們已經(jīng)逐步熟悉到所謂的軟件危機實際上僅是一種狀況,那就是軟件中有錯誤,正是這些錯誤導(dǎo)致了軟件開發(fā)在本錢、進(jìn)度和質(zhì)量上的失控。有錯是軟件的屬性,而且是無法改變的,由于軟件是由人來完成的,所有由人做的工作都不會是完美無缺的。問題在于我們?nèi)绾伪苊忮e誤的產(chǎn)生和消除已經(jīng)產(chǎn)生的錯誤,使程序中的錯誤密度達(dá)到盡可能低的程度。

1.1軟件測試的概念

軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程?;蛘哒f,軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計一批測試用例(即輸進(jìn)數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測試用例去運行程序,以發(fā)現(xiàn)程序錯誤的過程。

軟件測試就是在軟件投進(jìn)運行前,對軟件需求分析、設(shè)計規(guī)格說明和編碼的終極復(fù)審,是軟件質(zhì)量保證的關(guān)鍵步驟。

1.2軟件測試的目的

基于不同的態(tài)度,存在著兩種完全不同的測試目的。1.從用戶的角度出發(fā),普遍希望通過軟件測試,暴露軟件中隱躲的錯誤和缺陷,以考慮是否可接受該產(chǎn)品。2.從軟件開發(fā)者的角度出發(fā),則希望測試成為表明軟件產(chǎn)品中不存在錯誤的過程,驗證該軟件已正確地實現(xiàn)了用戶的要求,確立人們對軟件質(zhì)量的信心。

2測試用例

2.1測試用例的概念

測試用例是指對一項特定的軟件產(chǎn)品進(jìn)行測試任務(wù)的描述,體現(xiàn)測試方案、方法、技術(shù)和策略。

內(nèi)容包括:測試目標(biāo)、測試環(huán)境、輸進(jìn)數(shù)據(jù)、測試步驟、預(yù)期結(jié)果、測試腳本等,并形成文檔。

2.2測試用例的分類

根據(jù)測試過程中具體涉及到問題類型及測試需求,可將測試用例分為如下:

1.功能性測試用例
2.界面測試用例:適用于所有測試階段中的界面測試
3.數(shù)據(jù)處理測試用例:適用于所有測試階段中的數(shù)據(jù)處理測試
4.流程測試用例:適用于所有流程性的測試
5.安裝測試用例:適用于所有安裝測試

2.3測試用例的治理

1.編寫用例:測試工程師根據(jù)需求規(guī)約、概要設(shè)計、具體設(shè)計等文檔編寫測試用例。
2.用例評審:原則上用例象程序一樣,要經(jīng)過多次的修改才可以通過,實際工作中通常進(jìn)行一次。
3.用例修改:評審結(jié)束后,您需要根據(jù)評審意見進(jìn)行修改,修改后通常不再進(jìn)行評審。
4.使用用例:執(zhí)行測試用例,并記錄到測試用例執(zhí)行報告中。
5.用例升級/維護(hù):隨著軟件產(chǎn)品不斷修改、升級,對應(yīng)的用例也需要升級維護(hù)。針對同一個項目,可以根據(jù)需求的變更不斷進(jìn)行維護(hù);假如是產(chǎn)品,用例的維護(hù)更加重要,要達(dá)到用例和產(chǎn)品的版本逐一對應(yīng)。

2.4測試用例的編制及使用

1設(shè)計測試用例

每個具體測試用例都將包括下列具體信息:編制人、審定人、編制日期、版本、用例類型、設(shè)計說明書編號、用例編號、用例名稱、輸進(jìn)說明、期望結(jié)果(含判定標(biāo)準(zhǔn))、環(huán)境要求、備注等。

1. “測試用例名稱”可以是不涉及到具體模塊的功能描述,如“日期格式”,“非空檢驗”等。
2. “輸進(jìn)說明”是功能模塊接受的數(shù)據(jù)或各種操縱描述,如“輸進(jìn)非法的日期格式”等。
3. “期望結(jié)果”是模塊接受輸進(jìn)后應(yīng)有的正常輸出描述,如“提示用戶修改”等,期看結(jié)果應(yīng)與輸進(jìn)說明逐一對應(yīng)。
4. 測試用例用于指導(dǎo)執(zhí)行操縱,但某些意外操縱也可導(dǎo)致程序錯誤,這些操縱稱為非預(yù)期性操縱,可以先有執(zhí)行報告,再后補用例。
5. 測試用例的設(shè)計應(yīng)考慮通用性和簡潔明了。

測試需求

軟件測試需求是開發(fā)測試用例的依據(jù),測試需求分解的越具體精準(zhǔn),表明對所測軟件的了解越深,對所要進(jìn)行的任務(wù)內(nèi)容就越清楚,對測試用例的設(shè)計質(zhì)量的幫助越大。具體的測試需求還是衡量測試覆蓋率的重要指標(biāo),測試需求是計算測試覆蓋的分母,沒有具體的測試需求就無法有效的進(jìn)行測試覆蓋計算。

軟件測試執(zhí)行階段是由一系列不同的測試類型的執(zhí)行過程組成的,每種測試類型都有其具體的測試目標(biāo)和支持技術(shù),每種測試類型都只側(cè)重于對測試目標(biāo)的一個或多個特征或?qū)傩赃M(jìn)行測試,正確的測試類型可以給軟件測試帶事半功倍的效果。

現(xiàn)有的軟件測試分析技術(shù)不太成熟,對測試需求和測試類型的分析,所采用的方法主要是根據(jù)經(jīng)驗進(jìn)行收集、整理,該方法依靠于測試設(shè)計職員的測試經(jīng)驗,由此方法得出的測試需求、測試類型往往導(dǎo)致測試用例設(shè)計不充分,測試覆蓋度低,測試目的性不強,輕易遺漏等缺陷。

可見,如何對測試需求進(jìn)行細(xì)致的整理分析,明確測試執(zhí)行時的測試類型,是一個亟待解決的題目。

有鑒于此,本方法的主要目的在于提供一種軟件測試需求的分析方法,可以方便、詳盡的獲取測試需求,明確測試執(zhí)行時需要實施的測試類型。

1測試需求分析的方法

a)列出軟件開發(fā)需求中具有可測試性的開發(fā)需求;
b)對步驟a)列出的每一條開發(fā)需求,形成可測試的分層描述的測試需求;
c)對步驟b)形成的每一條測試需求,從GB/T .1-2006《軟件工程產(chǎn)品質(zhì)量第1部分:質(zhì)量模型》中定義的軟件內(nèi)部/外部質(zhì)量模型來確定軟件產(chǎn)品的質(zhì)量需求;
d)對步驟c)所確定的質(zhì)量需求,分析測試執(zhí)行時需要實施的測試類型;
e)建立測試需求跟蹤矩陣,對測試需求進(jìn)行治理。

3軟件生命周期

軟件生命周期(SDLC,SystemsDevelopment Life Cycle)是軟件的產(chǎn)生直到報廢的生命周期,周期內(nèi)有題目定義、可行性分析、總體描述、系統(tǒng)設(shè)計、編碼、調(diào)試和測試、驗收與運行、維護(hù)升級到廢棄等階段,這種按時間分程的思想方法是軟件工程中的一種思想原則,即按部就班、逐步推進(jìn),每個階段都要有定義、工作、審查、形成文檔以供交流或備查,以進(jìn)步軟件的質(zhì)量。

3.1問題的定義及規(guī)劃

此階段是軟件開發(fā)方與需求方共同討論,主要確定軟件的開發(fā)目標(biāo)及其可行性。

3.2需求分析

在確定軟件開發(fā)可行的情況下,對軟件需要實現(xiàn)的各個功能進(jìn)行具體分析。需求分析階段是一個很重要的階段,這一階段做得好,將為整個軟件開發(fā)項目的成功打下良好的基礎(chǔ)。"唯一不變的是變化本身。",同樣需求也是在整個軟件開發(fā)過程中不斷變化和深進(jìn)的,因此我們必須制定需求變更計劃來應(yīng)付這種變化,以保護(hù)整個項目的順利進(jìn)行。

3.3軟件設(shè)計

此階段主要根據(jù)需求分析的結(jié)果,對整個軟件系統(tǒng)進(jìn)行設(shè)計,如系統(tǒng)框架設(shè)計,數(shù)據(jù)庫設(shè)計等等。軟件設(shè)計一般分為總體設(shè)計和具體設(shè)計。好的軟件設(shè)計將為軟件程序編寫打下良好的基礎(chǔ)。

3.4程序編碼

此階段是將軟件設(shè)計的結(jié)果轉(zhuǎn)換成計算機可運行的程序代碼。在程序編碼中必須要制定統(tǒng)一,符合標(biāo)準(zhǔn)的編寫規(guī)范。以保證程序的可讀性,易維護(hù)性,提高程序的運行效率。

3.5軟件測試

在軟件設(shè)計完成后要經(jīng)過嚴(yán)密的測試,以發(fā)現(xiàn)軟件在整個設(shè)計過程中存在的問題并加以糾正。整個測試過程分:單元測試、組裝測試、系統(tǒng)測試三個階段進(jìn)行。測試的方法主要有:白盒測試和黑盒測試兩種。在測試過程中需要建立具體的測試計劃并嚴(yán)格按照測試計劃進(jìn)行測試,以減少測試的隨意性。

3.6運行維護(hù)

軟件維護(hù)是軟件生命周期中持續(xù)時間最長的階段。在軟件開發(fā)完成并投進(jìn)使用后,由于多方面的原因,軟件不能繼續(xù)適應(yīng)用戶的要求。要延續(xù)軟件的使用壽命,就必須對軟件進(jìn)行維護(hù)。軟件的維護(hù)包括:糾錯性維護(hù)和改進(jìn)性維護(hù)兩個方面。

3.7生命周期模型

瀑布模型、快速原型模型、迭代模型。

4測試方法(19個)

隨著軟件測試技術(shù)的發(fā)展,測試方法更加多樣化,針對性更強;選擇合適的軟件測試方法可以讓我們事半功倍。以下是一些常用的軟件測試方法:

4.1β測試_Beta測試

β測試是軟件的多個用戶在一個或多個用戶的實際使用環(huán)境下進(jìn)行的測試。開發(fā)者通常不在測試現(xiàn)場,Beta測試不能由程序員或測試員完成。

4.2α測試_Alpha測試

Alpha測試是由一個用戶在開發(fā)環(huán)境下進(jìn)行的測試,也可以是公司內(nèi)部的用戶在模擬實際操縱環(huán)境下進(jìn)行的受控測試,Alpha測試不能由該系統(tǒng)的程序員或測試員完成,一般由終極用戶或其他職員來完成。
在系統(tǒng)開發(fā)接近完成時對應(yīng)用系統(tǒng)的測試。測試后,仍然會有少量的設(shè)計變更。

4.3可移植性測試

是指測試軟件是否可以被成功移植到指定的硬件或軟件平臺上。

4.4用戶界面測試-UI測試

用戶界面,英文是User Interface。是指軟件中的可見外觀及其底層與用戶交互的部分(菜單、對話框、窗口和其它控件)。

用戶界面測試是指測試用戶界面的風(fēng)格是否滿足客戶要求,文字是否正確,頁面是否美觀,文字、圖片組合是否完美,操縱是否友好等等。UI 測試的目標(biāo)是確保用戶界面會通過測試對象的功能來為用戶提供相應(yīng)的訪問或瀏覽功能。確保用戶界面符合公司或行業(yè)的標(biāo)準(zhǔn)。包括用戶友好性、人性化、易操縱性測試。

4.5冒煙測試

冒煙測試的名稱可以理解為該種測試耗時短,僅用一袋煙功夫足夠了。也有人以為是形象地類比新電路板的基本功能檢查。任何新電路板焊好后,先通電檢查,假如存在設(shè)計缺陷,電路板可能會短路,板子冒煙了。

4.6隨機測試

隨機測試沒有書面測試用例、記錄期望結(jié)果、檢查列表、腳本或指令的測試。主要是根據(jù)測試者的經(jīng)驗對軟件進(jìn)行功能和性能抽查。隨機測試是根據(jù)測試說明書執(zhí)行用例測試的重要補充手段,是保證測試覆蓋完整性的有效方式和過程。

4.7白盒測試-結(jié)構(gòu)測試-邏輯驅(qū)動測試

白盒測試是把測試對象看作一個打開的盒子。利用白盒測試法進(jìn)行動態(tài)測試時,需要測試軟件產(chǎn)品的內(nèi)部結(jié)構(gòu)和處理過程,不需測試軟件產(chǎn)品的功能。

白盒測試法的覆蓋標(biāo)準(zhǔn)有:邏輯覆蓋、循環(huán)覆蓋、基本路徑測試。其中邏輯覆蓋包括:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋、路徑覆蓋。

4.8黑盒測試-功能測試-數(shù)據(jù)驅(qū)動測試

黑盒測試是根據(jù)軟件的規(guī)格對軟件進(jìn)行的測試,這類測試不考慮軟件內(nèi)部的運作原理,因此軟件對用戶來說就像一個黑盒子。

軟件測試職員以用戶的角度,通過各種輸進(jìn)和觀察軟件的各種輸出結(jié)果來發(fā)現(xiàn)軟件存在的缺陷,而不關(guān)心程序具體如何實現(xiàn)的一種軟件測試方法。

4.9回歸測試

回回測試是指在發(fā)生修改之后重新測試先前的測試以保證修改的正確性。理論上,軟件產(chǎn)生新版本,都需要進(jìn)行回回測試,驗證以前發(fā)現(xiàn)和修復(fù)的錯誤是否在新軟件版本上再次出現(xiàn)。

4.10動態(tài)測試

動態(tài)測試是指通過運行軟件來檢驗軟件的動態(tài)行為和運行結(jié)果的正確性。根據(jù)動態(tài)測試在軟件開發(fā)過程中所處的階段和作用,動態(tài)測試可分為如下幾個步驟:1、單元測試 2、集成測試 3、系統(tǒng)測試 4、驗收測試 5、回歸測試

4.11單元測試

單元測試是最微小規(guī)模的測試;以測試某個功能或代碼塊。典型地由程序員而非測試員來做,由于它需要知道內(nèi)部程序設(shè)計和編碼的細(xì)節(jié)知識。這個工作不輕易做好,除非應(yīng)用系統(tǒng)有一個設(shè)計很好的體系結(jié)構(gòu); 還可能需要開發(fā)測試驅(qū)動器模塊或測試套具

4.12集成測試

集成測試是指一個應(yīng)用系統(tǒng)的各個部件的聯(lián)合測試,以決定他們能否在一起共同工作并沒有沖突。部件可以是代碼塊、獨立的應(yīng)用、網(wǎng)絡(luò)上的客戶端或服務(wù)器端程序。這種類型的測試尤其與客戶服務(wù)器和分布式系統(tǒng)有關(guān)。一般集成測試以前,單元測試需要完成。

4.13系統(tǒng)測試

系統(tǒng)測試是基于系統(tǒng)整體需求說明書的黑盒類測試,應(yīng)覆蓋系統(tǒng)所有聯(lián)合的部件。系統(tǒng)測試是針對整個產(chǎn)品系統(tǒng)進(jìn)行的測試,目的是驗證系統(tǒng)是否滿足了需求規(guī)格的定義,找出與需求規(guī)格不相符合或與之矛盾的地方。

4.14壓力測試

壓力測試是一種基本的質(zhì)量保證行為,它是每個重要軟件測試工作的一部分。壓力測試的基本思路很簡單:不是在常規(guī)條件下運行手動或自動測試,而是在計算機數(shù)目較少或系統(tǒng)資源匱乏的條件下運行測試。通常要進(jìn)行壓力測試的資源包括內(nèi)部內(nèi)存、CPU 可用性、磁盤空間和網(wǎng)絡(luò)帶寬等。一般用并發(fā)來做壓力測試。

4.15性能測試

性能測試是在交替進(jìn)行負(fù)荷和強迫測試時常用的術(shù)語。理想的“性能測試”(和其他類型的測試)應(yīng)在需求文檔或質(zhì)量保證、測試計劃中定義。性能測試一般包括負(fù)載測試和壓力測試。

4.16兼容性測試

兼容測試是測試軟件在一個特定的硬件/軟件/操縱系統(tǒng)/網(wǎng)絡(luò)等環(huán)境下的性能如何。向上兼容、向下兼容,軟件兼容、硬件兼容。軟件的兼容性有很多需要考慮的地方

4.17邊界條件測試

一種黑盒測試方法,對等價類分析方法的一種補充,由長期的測試工作經(jīng)驗得知,大量的錯誤是發(fā)生在輸進(jìn)或輸出的邊界上。因此針對各種邊界情況設(shè)計測試用例,可以查出更多的錯誤。

4.18靜態(tài)測試

靜態(tài)測試指測試不運行的部分,例如測試產(chǎn)品說明書,對此進(jìn)行檢查和審閱。靜態(tài)測試是指不運行被測程序本身,僅通過分析或檢查源程序的語法、結(jié)構(gòu)、過程、接口等來檢查程序的正確性。靜態(tài)測試通過程序靜態(tài)特性的分析,找出欠缺和可疑之處,例如不匹配的參數(shù)、不適當(dāng)?shù)难h(huán)嵌套和分支嵌套、不答應(yīng)的遞回、未使用過的變量、空指針的引用和可疑的計算等。靜態(tài)測試結(jié)果可用于進(jìn)一步的查錯,并為測試用例選取提供指導(dǎo)。

4.19等價劃分測試

等價劃分測試是根據(jù)等價類設(shè)計測試用例的一種技術(shù)。是黑盒測試的典型方法之一,通過把被測試程序所有可能的輸進(jìn)數(shù)據(jù)域劃分成若干部分。從每一部分中選取少數(shù)有代表性的數(shù)據(jù)作為測試用例,可有效減少測試次數(shù),極大提高軟件測試效率,縮短軟件開發(fā)周期。等價類劃分測試的目的就是為了在有限的測試資源的情況下,用少量有代表性的數(shù)據(jù)得到比較好的測試效果。

有效等價類和無效等價類:有效等價類中的數(shù)據(jù)代表的是一組符合需求文檔的正確的有意義數(shù)據(jù)。無效等價類則正相反。


在此,軟件測試的方法還很多很多,這里只列出了一些最常用也最常見的測試方法,根據(jù)軟件生命周期的各個不同的階段,選擇相應(yīng)的測試方法,提高軟件產(chǎn)品的質(zhì)量,讓它的不完善程度降到最低,盡可能地滿足用戶的需求,以實現(xiàn)軟件產(chǎn)品更好地價值。

注:首先測試按照不同的劃分規(guī)則可以分為哪些測試?

1.按照是否使用自動化工具 分為:手工測試,自動化測試

2.按照軟件的質(zhì)量分為:功能測試,可靠性測試,易用性,可維護(hù)測試性測試,可移植性測試

3.對測試按照階段可以分為:單元測試,繼承測試,系統(tǒng)測試

4.按照是否關(guān)注代碼:黑盒測試,白盒測試

1.基本概念 

 什么是手工測試?

手工測試就是由人一個一個去輸入用例,然后觀察結(jié)果,和機器測試想對應(yīng),它是依靠人來查找缺陷,一般采用黑盒測試 ,可用于集成測試系統(tǒng)測試 中


什么是功能測試?

功能測試也叫黑盒測試或者數(shù)據(jù)驅(qū)動測試 ,只需要考慮各個功能,不需要考慮軟件內(nèi)部 結(jié)構(gòu)及代碼。一般從軟件的界面,架構(gòu)觸發(fā),按照需求編寫測試用例,輸入數(shù)據(jù)在預(yù)期結(jié)果和實際結(jié)果之間進(jìn)行評測,進(jìn)而使得產(chǎn)品達(dá)到用戶的需求


什么是性能測試?

性能測試是通過自動化的測試工具模擬多種異常,峰值以及異常 負(fù)載條件來對系統(tǒng)的各個性能進(jìn)行測試。

負(fù)載測試和壓力測試都屬于性能測試

通過負(fù)載測試,確定各種工作負(fù)載下系統(tǒng)的性能,目標(biāo)是當(dāng)負(fù)載 測試逐漸增加時,系統(tǒng)各項性能指標(biāo)的變化

壓力測試是通過確定一個系統(tǒng)的瓶頸或者不能接受的信任點,來獲取提供的最大服務(wù)級別

什么是自動化測試?

自動化測試是把以人為驅(qū)動的測試,轉(zhuǎn)化為機器執(zhí)行的一種過程,通常在測試用例 通過評審以后由測試 人員根據(jù)測試用例中描述的規(guī)程一步步執(zhí)行測試,得到實際結(jié)果和期望結(jié)果比較

補充:

1.自動化測試的前提條件

(1)軟件需求變動不頻繁;

(2)項目周期足夠長

(3)自動化腳本可重用

2.自動化測試的前提條件

(1)自動化測試需求分析

(2)自動化測試框架的 搭建

公用環(huán)境

公用方法

公用對象

測試數(shù)據(jù)

(3)自動化腳本的編寫

(4)腳本的測試與運行

幾種測試的區(qū)別

1,手工測試 和功能測試 的區(qū)別

 手工測試屬于功能測試,手工測試是根據(jù)是否使用自動化工具劃分的,功能測試是根據(jù)質(zhì)量模型的六大特征劃分的

2.手工測試和自動化測試的區(qū)別?

手工測試是傳統(tǒng)的測試方法,由測試人員手工編寫測試用例,測試工作量大,重復(fù)多,回歸測試難以實現(xiàn);而自動化測試是利用軟件測試工具實現(xiàn)全部或部分測試工作,管理,設(shè)計 ,執(zhí)行報告,節(jié)省了大量的測試開銷,并且能夠完成一些功能測試無法完成的測試

3.功能測試和性能測試的區(qū)別?

功能測試只是驗證需求,查找功能流程中一些錯誤或者界面不友好等,不涉及軟件內(nèi)部的結(jié)構(gòu)和代碼;而性能測試主要對系統(tǒng)能夠承受的壓力,大數(shù)據(jù)量,處理速度等方面進(jìn)行測試,是從程序內(nèi)部區(qū)檢查應(yīng)用程序的,比如并發(fā)測試,壓力測試等



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI