測試理論基礎(chǔ)2

一,軟件開發(fā)過程模型

在軟件開發(fā)的十幾年的實踐中,人們總結(jié)了許多的軟件開發(fā)模型用來描述和表示一個復(fù)雜的開發(fā)過程,如:

? 瀑布模型

? 快速原型模型

? 螺旋模型

-1.開發(fā)模型-瀑布模型Waterfall Model

-(1)瀑布模型的介紹

最早出現(xiàn)的軟件開發(fā)模型是1970年羅伊斯W.Royce 提出的瀑布模型。該模型給出了固定的順序,將生存期活動從上一個階段向下一階段逐級過度,如同流水下泄,最終得到所開發(fā)的產(chǎn)品軟件,最終投入使用。

-(2)瀑布模型定義

瀑布模型是將軟件的生存周期的各項活動規(guī)定為按固定的順序而連接的若干解階段工作,形如瀑布流水得到最終軟件產(chǎn)品。

1.是線性模型的一種,在所有的模型中占有重要的地位,是所有其他模型的一個基礎(chǔ)。

2.每一個階段執(zhí)行一次,按階段線性的進行軟件的開發(fā)。

3.測試的切入點:

? ? ? ? 測試階段處于軟件實現(xiàn)后,必須在代碼完成后留出足夠的時間給測試活動,否則將導(dǎo)致測試不充? ? ? ? 分,很多問題到項目后期才暴露


-(3)瀑布模型 的優(yōu)缺點

優(yōu)點

1.開發(fā)的各個階段比較清晰

2.強調(diào)早期計劃及需求調(diào)查

3.適合需求穩(wěn)定的產(chǎn)品開發(fā)

缺點

1.依賴于早期的需求調(diào)查,不適應(yīng)需求變化

2.單一流程不可逆

3.風(fēng)險往往延至后期才顯露,失去及早修正的機會

4.問題在項目后期才開始暴露

5.前面未發(fā)現(xiàn)的錯誤階段會傳遞擴散到后面階段,可能導(dǎo)致項目失敗

-2.開發(fā)模型-快速原型模型

在開發(fā)真實系統(tǒng)之前,構(gòu)造一個原型,在該原型的基礎(chǔ)上,逐漸完成整個系統(tǒng)的開發(fā)工作。

? ? 1.第一步是建造一個快速原型,實現(xiàn)用戶與系統(tǒng)的交互,用戶對原型進行評價,進一步細化待開發(fā)軟件的需求。通過逐步調(diào)整原型使其滿足用戶的要求,開發(fā)人員可以確定用戶的真正需求是什么。

? ?-2.第二步是在第一步的基礎(chǔ)上開發(fā)出用戶滿意的產(chǎn)品軟件。


- 快速原型模型的優(yōu)缺點

(1)優(yōu)點

? ? ? ? 克服瀑布模型的缺點,更好滿足用戶需求并減少由軟件需求不明確帶來的項目開發(fā)風(fēng)險。適合預(yù)先不能確切定義需求的軟件系統(tǒng)開發(fā)。

(2)缺點?

? ? ? ? 不適合大型系統(tǒng)的開發(fā)(適合開發(fā)小型系統(tǒng)、靈活性高的系統(tǒng))。提前要有一個展示性的產(chǎn)品原型,因此在一定程度上可能會限制開發(fā)人員的創(chuàng)新。

-3.開發(fā)模型-螺旋模型

螺旋模型將開發(fā)過程分為幾個螺旋周期,每個螺旋周期大致和瀑布模型相符合,螺旋模型沿著螺旋線旋轉(zhuǎn),即在坐標的4個象限上分別表示了4個方面的活動,如圖所示:

螺旋模型的優(yōu)缺點

優(yōu)點

? ? ? ? 螺旋模型很大程度上是一種風(fēng)險驅(qū)動的方法體系,因為在每個階段之前經(jīng)常發(fā)生的循環(huán)之前,都必須首先進行風(fēng)險評估

缺點

? ? ? ? 采用螺旋模型需要具有相當豐富的風(fēng)險評估經(jīng)驗和專門的知識,在風(fēng)險較大的項目開發(fā)中,如果未能及時標識風(fēng)險,勢必會造成重大損失。過多的迭代次數(shù)會增加開發(fā)成本,延遲提交時間。

二,軟件測試&軟件工程

軟件測與軟件工程息息相關(guān),軟件測試是軟件工程組成中不可或缺的一部分。

在軟件工程、項目管理

質(zhì)量管理以及配置管理與軟件測試的關(guān)系;在不同的開發(fā)模式下,如何進行軟件測試。

測試模型

到底測試的過程和軟件開發(fā)的過程一樣嗎?是不是由些看上去很專業(yè)似乎很有內(nèi)涵呢?

答:隨著測試過程的管理和發(fā)展,測試人員通過大量的實踐,從而總結(jié)出來了不少測試模型,如常見的V模型、W模型、H模型等。這些模型與開發(fā)緊密結(jié)合,對測試活動進行了抽象,成為了測試過程管理的重要參考依據(jù)

-1,V模型


V模型大體可以劃分為以下幾個不同的階段步驟: 從客戶需求——需求分析——概要設(shè)計——詳細設(shè)計——產(chǎn)品編碼——單元測試——集成測試——系統(tǒng)測試 ——驗收測試

-2,W模型


優(yōu)點

? ? ? ? -強調(diào)測試伴隨著整個軟件開發(fā)周期,而且測試的對象不僅僅是程序,需求和概要設(shè)計同樣要測試;

? ? ? ? -更早地介入測試,可以發(fā)現(xiàn)開發(fā)初期的缺陷,那么可以用更加低的成本進行缺陷修復(fù);

? ? ? ? -同樣是分階段的工作,便于控制項目過程。

缺點

? ? ? ? -依賴于軟件開發(fā)和軟件測試依然保持一前一后的線性關(guān)系,依然無法支持迭代、自發(fā)性和需求變更調(diào)整;

? ? ? ? -對于當前很多項目,在執(zhí)行的過程中根本不產(chǎn)生文檔,那么W模型極本無法適用;

? ? ? ? -使用起來技術(shù)復(fù)雜度很高,對于需求設(shè)計的測試要求很高,實踐起來困難。

-3,H模型


-測試流程: -測試準備:所有測試執(zhí)行活動的準備;判斷是否到測試就緒點; -測試就緒點:測試準入準則,即是否可以開始執(zhí)行測試的條件; -測試執(zhí)行:具體的執(zhí)行測試的程序 -其他流程 -具體開發(fā)中的流程,如:設(shè)計流程

H模型的優(yōu)缺點

優(yōu)點

? ? -開發(fā)肥肉H模型揭示了軟件測試除測試執(zhí)行外,還有很多工作;

? ? -軟件測試完全獨立,貫穿整個生命周期,且與其他流程并發(fā)進行;

? ? -軟件測試活動可以盡早準備,今早執(zhí)行,具有很強的靈活性;

? ? -軟件測試可以根據(jù)被測試物的不同而分層次、分階段、分次序的執(zhí)行,同時也是可以被迭代的。

缺點

? ? -管理型要求高:由于模型很靈活,必須要定義清晰的規(guī)則和管理制度, 否則測試過程將非常難以管理和控制;

? ? -技能要求高:H模型要求能夠很好的定義每個迭代的規(guī)模,不能太大也不能太??;

? ? -測試就緒點分析困難:測試很多時候,你并不知道測試準備到什么時候是合適的,就緒點在哪里,就緒點的標準是什么,這就對后續(xù)的測試執(zhí)行的啟動帶來很大困難;

? ? -對于整個項目的人員要求非常高:在很好的規(guī)范制度下,大家都能高效率的工作,否則容易混亂。例如:你分了一個小的迭代,但是因為人員技能不足,使得無法有效完成,那么整個項目就會受到很大的干擾。


三,軟件測試分類


-1,按照測試階段分類

-(1)單元測試

-又稱模塊測試,針對軟件設(shè)計中的最小單元——程序模塊,進行正確性檢查的測試工作。

單元測試需要從程序的 內(nèi)部結(jié)構(gòu)出發(fā)來設(shè)計測試用例。多個模塊可以平行地獨立進行單元測試。

? ? -C中指的是一個函數(shù),Java中指的是一個類,在圖形化的軟件中,一般是指的一個窗口,一個菜單。


-(2)集成測試

-又叫組裝測試,通常在單元測試的基礎(chǔ)上,將所有程序模塊進行有序的、遞增的測試。種地啊測試不同模塊的接口部分。


-(3)系統(tǒng)測試

-指的是將整個軟件系統(tǒng)看作一個整體進行測試,包括對功能、性能、以及軟件所運行的軟硬件環(huán)境進行測試。

-系統(tǒng)測試在系統(tǒng)集成完成后進行測試,


-2,按照是否查看源代碼分類

-(1)黑盒測試

????- 1,黑盒測試的優(yōu)缺點

-優(yōu)點

? ? -測試人員不需要了解實現(xiàn)的細節(jié),包括特定的編程語言(沒有編程經(jīng)驗的人也可以設(shè)計測試用例);

? ? -測試人員和編程人員是相互獨立的(黑盒測試用例的設(shè)計與程序如何實現(xiàn)無關(guān));

? ? -從用戶的角度進行測試,很容易被接受和理解;

? ? -有助于暴露任何與規(guī)格不一致或歧異的地方;

-缺點

? ? -不能測試程序內(nèi)部特定部位;

? ? -如果程序未執(zhí)行的代碼無法發(fā)現(xiàn);

? ? -不可能做到窮舉測試

-黑盒測試能發(fā)現(xiàn)以下幾類錯誤:

? ? -功能不對或功能遺漏;

? ? -界面錯誤;

? ? -數(shù)據(jù)庫訪問或者處理錯誤;

? ? -性能問題。

? ? - 2,黑盒測試的分類


????- 1,功能測試(function testing)

-是黑盒測試的一方面,它檢查實際軟件的功能是否符合用戶的需求。

? ? -邏輯功能測試(function testing)

? ? -界面測試(UI testing)

? ? -易用性測試(usability testing)

? ? -安裝測試(installation testing)

? ? -兼容性測試(compatibility testing)

? ??- 2,性能測試(performance testing)

-是軟件測試的高端領(lǐng)域,性能測試工程師的待遇和白盒測試工程師不相上下,通常我們所說的高級軟件測試工程師,一般指的就是白盒測試和性能測試工程師。

? ? -時間性能(事務(wù)相應(yīng)時間等)

? ? -空間性能(系統(tǒng)資源的消耗)

? ? -一般性能測試

? ? -穩(wěn)定性能測試

? ? -負載測試:通過負載測試來確定在各種工作負載下,系統(tǒng)各項性能指標的變化情況。

? ? -壓力測試:通過確定一個系統(tǒng)的瓶頸或者剛好不能接受的性能點,來獲得系統(tǒng)能夠提供的最大服務(wù)級別。

-(2)白盒測試

-指的是把盒子打開,去研究里面的源代碼和程序結(jié)構(gòu)。

-在軟件公司,往往采用黑盒測試&白盒測試相結(jié)合的方式。

? ? -軟件的整體功能和性能進行黑盒測試。

? ? -軟件的源代碼采用白盒測試。?

-(3)灰盒測試

灰盒測試,是介于白盒和=與黑盒之間的一種測試,即可保證黑盒的關(guān)注點又可掌控百盒的內(nèi)部結(jié)構(gòu),但不會對內(nèi)部程序功能和運作詳細了解,灰盒測試結(jié)合了白盒測試和黑盒測試的要素。

-3,按照是否運行分類

-(1)靜態(tài)測試 (static testing)

指不實際運行被測軟件,而只是靜態(tài)地檢查程序代碼、界面或文檔中可能存在的錯誤過程。

-(2)動態(tài)測試 (dynamic testing)

是指實際運行被測程序,輸入相應(yīng)的測試數(shù)據(jù),檢查實際輸出結(jié)果和預(yù)期結(jié)果是否相符過程。

-4,驗收測試

α測試

-Alpha 是內(nèi)測版本,即現(xiàn)在所說的CB,此版本表示該軟件僅僅是一個初步完成品,通常只在軟件開發(fā)者內(nèi)部交流,也有很少一部分發(fā)給專業(yè)的測試人員。一般而言,該版本的軟件bug較多,普通用戶最好不要安裝。

β測試

-Beta測試是公測版本,是對所以用戶開放的測試版本。該版本相較于Alpha有了很大的改進,消除了嚴重的錯誤,但還是存在著一些缺陷,需要經(jīng)過大規(guī)模的發(fā)布測試來進一步的消除。這一版通常由軟件公司免費發(fā)布,用戶可以從相關(guān)的站點下載。通過一些專業(yè)愛好者的測試,將結(jié)果反饋給開發(fā)者,開發(fā)者們再進行有針對性的修改。該版本也不適合一般用戶安裝。

γ測試

-Gamma版本,指的是軟件正式發(fā)布的候選版本,該版本已經(jīng)相當成熟了,與即將發(fā)行的正式版相差無幾,是正式版本的候選版本。

隨機測試(探索測試)

-隨機測試主要是對被測軟件的一些重要功能進行復(fù)測,也包括當前的測試用例沒有覆蓋到 的部分。另外,對于軟件更新和新增加的功能要重點測試。重點對一些特殊點情況點、特殊的使用環(huán)境、并發(fā)性、進行檢查。尤其對以前測試發(fā)現(xiàn)的重大bug進行再次測試,可以結(jié)合回歸測試(Regressive Testing)一起進行。

四,測試用例

測試用例舉例說明1:

? ? ? ? -買手機:按開機鍵,相當于輸入了一組數(shù)據(jù)來測試,執(zhí)行條件指的是開機的前提條件,比如是否有電;預(yù)期結(jié)果就是能夠順利的打開手機,那么測試完畢后,是否達到了想要的需求(順利開機)。

? ? ? ? -所以通過上面的描述,我們不難看出,測試用例要解決的問題是要測 什么?怎么測?

測試用例舉例說明2:

? ? ? ? -新浪注冊頁面:https://login.sina.com.cn/signup?entry=homepage

? ? ? ? -這次測試的是郵箱地址格式是否正確,怎么測試的呢?分別輸入正確的地址和錯誤的地址進行測試。


等價類劃分法

計算器:到底輸入幾組數(shù)據(jù)才算測試完畢?

答案:一個一個測試效率低下,一定要分類測試!

? ? -1、整數(shù)(在范圍內(nèi)的整數(shù) -99到99 )取最大、最小、中間

? ? -2、小數(shù)(在范圍內(nèi)的整數(shù) -99到99 )

? ? -3、符號(+-/*,!@¥%......&*())

? ? -4、漢字

? ? -5、空格

? ? -6、不輸入

通過上面的描述,我們發(fā)現(xiàn)我們用戶所有可能輸入的數(shù)據(jù),劃分成了若干份(或者也可以稱為子集),然后從每個子集當中選取少數(shù)具有代表性的數(shù)據(jù)作為測試用例這種測試用例我們稱為“等價類劃分法”。?

? ? 等價類劃分是一種重要的,黑盒測試方法,不需要考慮程序的內(nèi)部結(jié)構(gòu),只需要考慮輸入的規(guī)格即可。它將不能窮舉的測試過程進行合理的分類,從而保證設(shè)計出來的測試用例具有完整性和代表性。

? ? >注意:在有限的測試資源的情況下,用少量有代表性的數(shù)據(jù)得到比較好的測試效果。

-(1)等價類劃分(分類)

-有效等價類

? ? ? ? -指符合《需求規(guī)格說明書》,輸入合理的數(shù)據(jù)集合?

? ? -無效等價類

? ? ? ? -指不符合《需求規(guī)格說明書》,輸入不合理的數(shù)據(jù)集合

-(2)等價類思考步驟

1.先確定有效和無效等價類

2.有效等價類就是題目條件(兩端的極值(邊界值)要判斷、中間隨意一個值也要判斷)

3.無效等價類先劃分與條件相反的情況,再找到特殊的情況(中文、英文、符號、空格、空)

-(3)等價類劃分案例(兩位數(shù)相加案例)

-我們可以把“有效等價”和“無效等價”用例寫在一個Excel表格中(寫出來永遠比腦子里想的要好)!

? ? -例:計算1---100的整數(shù)之和(包括1和100)

-(4)等價類劃分案例(TIM登錄和電話號碼案例)

測試要求是:測試QQ賬號,賬號的要求是6—10位正整數(shù)。


-有效等價類

? ? -1,長度在6~10位之間的正整數(shù)

-無效等價類

? ? -1,長度小于6位

? ? -2,長度大于10位

? ? -3,負數(shù)

? ? -4,小數(shù)

? ? -5,英文字母

? ? -6,中文

? ? -7,空格

? ? -8,特殊字符


手機號碼

? ? -某城市電話號碼由三部分組成,分別是

? ? ? ? -地區(qū)碼:空白或是3位數(shù)字

? ? ? ? -前綴: 非‘0' 且非 '1' 的三位數(shù)字

? ? ? ? -后綴:4位數(shù)字

? ? -例子:1234567890


登陸界面

? ? -用戶名(昵稱)長度為3-19:以字母開頭

? ? -登錄名稱:非空

? ? -密碼:非空

? ? -確認密碼:值和密碼相同


總結(jié):

? ? -通過上面的案例。我們可以總結(jié)一下,當我們在測試文本框的程序可以考慮如下情況:

? ? ? ? -1:文本框要求輸入的長度

? ? ? ? -2:輸入的類型

? ? ? ? -3:組成規(guī)則

? ? ? ? -4:是否為空

? ? ? ? -5:是否重復(fù)---區(qū)分大小寫

? ? ? ? -6:是否去除空格

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容