软件测试c语言代码_软件测试理论知多少?
有源醫(yī)療器械很多都是帶有軟件的,今天一起了解下軟件測(cè)試?yán)碚?#xff1a;軟件測(cè)試目的,軟件測(cè)試定義,軟件測(cè)試原則,軟件測(cè)試分類,軟件測(cè)試方法,測(cè)試基本流程。
軟件測(cè)試定義:軟件測(cè)試(英語(yǔ):software testing),描述一種用來(lái)促進(jìn)鑒定軟件的正確性、完整性、安全性和質(zhì)量的過(guò)程。換句話說(shuō),軟件測(cè)試是一種實(shí)際輸出與預(yù)期輸出之間的審核或者比較過(guò)程。軟件測(cè)試的經(jīng)典定義是:在規(guī)定的條件下對(duì)程序進(jìn)行操作,以發(fā)現(xiàn)程序錯(cuò)誤,衡量軟件質(zhì)量,并對(duì)其是否能滿足設(shè)計(jì)要求進(jìn)行評(píng)估的過(guò)程,為軟件產(chǎn)品的質(zhì)量和評(píng)價(jià)提供依據(jù)。
一、軟件測(cè)試目的:
1、確保軟件完成了它所承諾或公布的功能。
2、確保軟件滿足性能和效率的要求。
3、確保軟件是健壯的、適應(yīng)用戶的環(huán)境。
4、提早預(yù)防、盡早發(fā)現(xiàn)、及時(shí)跟蹤軟件缺陷,滿足產(chǎn)品發(fā)布需求。
二、軟件測(cè)試原則:
1、有計(jì)劃的盡早測(cè)試,解決問(wèn)題的成本越小。測(cè)試需求貫穿整個(gè)軟件的生命周期,缺陷修復(fù)成本隨著各個(gè)階段的靠后而提升。
2、成功的測(cè)試在于發(fā)現(xiàn)迄今未發(fā)現(xiàn)的缺陷。
3、測(cè)試并不能保證軟件100%的沒(méi)有問(wèn)題。進(jìn)行測(cè)試時(shí)可以查找并報(bào)告發(fā)現(xiàn)的軟件缺陷和錯(cuò)誤,但是不能保證軟件的缺陷和錯(cuò)誤能全部找到,繼續(xù)經(jīng)一部測(cè)試可能還會(huì)找到一些,也就是說(shuō)測(cè)試只能證明軟件存在錯(cuò)誤而不能證明軟件沒(méi)有錯(cuò)誤。
4、測(cè)試工作的本質(zhì)都應(yīng)追溯到用戶需求。
5、測(cè)試的規(guī)模由小而大,從單元測(cè)試到系統(tǒng)測(cè)試。
6、0 bug,good-enough原則,窮舉測(cè)試是不可能實(shí)現(xiàn)的。即Zero Bug與Good Enough;本條給我們灌輸?shù)氖且环N測(cè)試執(zhí)行通過(guò)的標(biāo)準(zhǔn)。顯示任何測(cè)試通過(guò)不可能達(dá)到0bug。那我們就應(yīng)該達(dá)到Good Enough。這條原則是一種權(quán)衡投入/產(chǎn)出比的原則:測(cè)試既不能不充分也能過(guò),我們需要制定測(cè)試通過(guò)標(biāo)準(zhǔn)和測(cè)試內(nèi)容,比如:遺留的bug數(shù)&嚴(yán)重程度,測(cè)試用例的執(zhí)行率&通過(guò)率等來(lái)解決上面的問(wèn)題。
7、程序員應(yīng)避免檢查自己的程序。
8、回歸測(cè)試的關(guān)聯(lián)性?;貧w測(cè)試的關(guān)聯(lián)性一定要引起充分注意。修改一個(gè)錯(cuò)誤而引起更多錯(cuò)誤出現(xiàn)的現(xiàn)象并不少見(jiàn)。
9、關(guān)注程序不該做的事。檢查程序應(yīng)該完成哪些功能,這只是測(cè)試工作的一半,測(cè)試工作的另一半是,檢查程序完成了哪些不應(yīng)該完成的功能。
三、測(cè)試基本流程:
第一步:對(duì)要執(zhí)行測(cè)試的產(chǎn)品/項(xiàng)目進(jìn)行分析,確定測(cè)試策略,制定測(cè)試計(jì)劃。該計(jì)劃被審核批準(zhǔn)后轉(zhuǎn)向第二步。測(cè)試工作啟動(dòng)前一定要確定正確的測(cè)試策略和指導(dǎo)方針,這些是后期開(kāi)展工作的基礎(chǔ)。只有將本次的測(cè)試目標(biāo)和要求分析清楚,才能決定測(cè)試資源的投入。
第二步:設(shè)計(jì)測(cè)試用例。設(shè)計(jì)測(cè)試用例要根據(jù)測(cè)試需求和測(cè)試策略來(lái)進(jìn)行,進(jìn)度壓力不大時(shí),應(yīng)該設(shè)計(jì)的詳細(xì),如果進(jìn)度、成本壓力較大,則應(yīng)該保證測(cè)試用例覆蓋到關(guān)鍵性的測(cè)試需求。該用例被批準(zhǔn)后轉(zhuǎn)向第三步。
第三步:如果滿足“啟動(dòng)準(zhǔn)則”(EntryCriteria),那么執(zhí)行測(cè)試。執(zhí)行測(cè)試主要是搭建測(cè)試環(huán)境,執(zhí)行測(cè)試用例。執(zhí)行測(cè)試時(shí)要進(jìn)行進(jìn)度控制、項(xiàng)目協(xié)調(diào)等工作。
第四步:提交缺陷。這里要進(jìn)行缺陷審核和驗(yàn)證等工作。
第五步:消除軟件缺陷。通常情況下,開(kāi)發(fā)經(jīng)理需要審核缺陷,并進(jìn)行缺陷分配。程序員修改自己負(fù)責(zé)的缺陷。在程序員修改完成后,進(jìn)入到回歸測(cè)試階段。如果滿足“完成準(zhǔn)則”(ExitCriteria),那么正常結(jié)束測(cè)試。
第六步:撰寫測(cè)試報(bào)告。對(duì)測(cè)試進(jìn)行分析,總結(jié)本次的經(jīng)驗(yàn)教訓(xùn),在下一次的工作中改。
需求分析(概念)階段:閱讀需求,理解需求,分析業(yè)務(wù)需求點(diǎn),提取測(cè)試需求。
計(jì)劃階段:編寫測(cè)試用例計(jì)劃,參考軟件需求規(guī)格說(shuō)明書、項(xiàng)目總體計(jì)劃,制定測(cè)試計(jì)劃和測(cè)試方案內(nèi)容包括測(cè)試范圍、進(jìn)度的安排,人力物力的分配,整體測(cè)試策略的制定,風(fēng)險(xiǎn)評(píng)估與規(guī)避措施,主管編寫,參與評(píng)審工作。
設(shè)計(jì)階段:編寫測(cè)試用例,參考需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì),不明確的與開(kāi)發(fā)、產(chǎn)品經(jīng)理溝通。編寫測(cè)試用例完成后進(jìn)行評(píng)審。
開(kāi)發(fā)階段:首先搭建測(cè)試環(huán)境,執(zhí)行預(yù)測(cè),判定當(dāng)前版本是否可測(cè),預(yù)測(cè)通過(guò),正式進(jìn)入系統(tǒng)測(cè)試,遇到問(wèn)題提交bug到缺陷管理平臺(tái),并對(duì)bug進(jìn)行跟蹤,直到被測(cè)試軟件達(dá)到測(cè)試需求要求,沒(méi)重大bug,測(cè)試結(jié)束。
評(píng)估階段:出測(cè)試報(bào)告,對(duì)整個(gè)測(cè)試的過(guò)程和版本質(zhì)量做一個(gè)詳細(xì)的評(píng)估總結(jié)經(jīng)驗(yàn)和教訓(xùn)。
四、測(cè)試對(duì)象:
軟件(英語(yǔ):software)是一系列按照特定順序組織的電腦數(shù)據(jù)和指示,是電腦中的非有形部分,在這里我們可以將“指示”理解為程序。外設(shè)硬件(鼠標(biāo),鍵盤或者其他)給出指令(點(diǎn)擊,輸入等),操作系統(tǒng)接收指令,再將指令分發(fā)給程序,程序再做出響應(yīng),反饋給操作系統(tǒng),操作系統(tǒng)再反饋給硬件。軟件并不一定只包括可以在計(jì)算機(jī)上運(yùn)行的計(jì)算機(jī)程序,有些定義中,與計(jì)算機(jī)程序相關(guān)的文檔,一般也被認(rèn)為是軟件的一部分。所以測(cè)試對(duì)象=程序 + 數(shù)據(jù) + 文檔。
五、軟件測(cè)試分類:
軟件測(cè)試按階段分,可以分為單元測(cè)試,集成測(cè)試,系統(tǒng)測(cè)試,驗(yàn)收測(cè)試。
1、單元測(cè)試
是對(duì)軟件組成單元(最小可測(cè)試單元)進(jìn)行測(cè)試,其目的是檢驗(yàn)軟件基本組成單位的正確性,測(cè)試的對(duì)象是軟件設(shè)計(jì)的最小單位:函數(shù)。一般來(lái)說(shuō),最小單元要根據(jù)實(shí)際情況去判定其具體所指,如C語(yǔ)言中單元指一個(gè)函數(shù),Java里單元指一個(gè)類,圖形化的軟件中可以指一個(gè)窗口或一個(gè)菜單等??偟膩?lái)說(shuō),單元就是人為規(guī)定的最小的被測(cè)功能模塊。單元測(cè)試是在軟件開(kāi)發(fā)過(guò)程中要進(jìn)行的最低級(jí)別的測(cè)試活動(dòng),軟件的獨(dú)立單元將在與程序的其他部分相隔離的情況下進(jìn)行測(cè)試。
通常,小型測(cè)試是由SWE來(lái)實(shí)現(xiàn),也會(huì)有少量的SET參與,TE幾乎不參與小型測(cè)試。-《google測(cè)試之道》
所以通常而言:誰(shuí)編寫代碼,誰(shuí)負(fù)責(zé)編寫單元測(cè)試用例,即單元測(cè)試由開(kāi)發(fā)人員自己執(zhí)行。
2、集成測(cè)試是指通過(guò)測(cè)試的單元模塊組裝成子系統(tǒng),然后再進(jìn)行的測(cè)試,主要測(cè)試內(nèi)容是接口。
集成測(cè)試大部分是接口測(cè)試和交互測(cè)試。一般來(lái)說(shuō)集成測(cè)試由測(cè)試人員完成。
在產(chǎn)品早期開(kāi)發(fā)過(guò)程中,在獨(dú)立模塊功能被開(kāi)發(fā)完畢之后,SET會(huì)驅(qū)動(dòng)這些測(cè)試的實(shí)現(xiàn)及運(yùn)行,SWE會(huì)深度參與,一起編碼、調(diào)試和維護(hù)這些測(cè)試。-《google測(cè)試之道》
3、系統(tǒng)測(cè)試是指對(duì)整個(gè)系統(tǒng)的測(cè)試,將硬件、軟件、操作人員看作一個(gè)整體,檢驗(yàn)它是否有不符合系統(tǒng)說(shuō)明書的地方。主要包括功能測(cè)試、界面測(cè)試、可靠性測(cè)試、易用性測(cè)試、性能測(cè)試。一般而言:系統(tǒng)測(cè)試是測(cè)試人員的工作。
功能測(cè)試:對(duì)產(chǎn)品的各功能(包括功能可用性、功能實(shí)現(xiàn)程度(功能流程&業(yè)務(wù)流程、數(shù)據(jù)處理&業(yè)務(wù)數(shù)據(jù)處理)方面測(cè)試)進(jìn)行驗(yàn)證,以檢查是否滿足需求的要求。
性能測(cè)試:通過(guò)自動(dòng)化測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件來(lái)對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。
4、驗(yàn)收測(cè)試是部署軟件之前的最后一個(gè)測(cè)試操作。在軟件產(chǎn)品完成了單元測(cè)試、集成測(cè)試和系統(tǒng)測(cè)試之后,產(chǎn)品發(fā)布之前所進(jìn)行的軟件測(cè)試活動(dòng)。它是技術(shù)測(cè)試的最后一個(gè)階段,也稱為交付測(cè)試。驗(yàn)收測(cè)試的目的是確保軟件準(zhǔn)備就緒,并且可以讓最終用戶將其用于執(zhí)行軟件的既定功能和任務(wù)。主要有Apha和Bta測(cè)試:Alpha測(cè)試通常是階段性的開(kāi)發(fā)完成后所開(kāi)始進(jìn)行,一直持續(xù)到進(jìn)入Beta測(cè)試階段前的階段。Alpha測(cè)試是一種驗(yàn)證測(cè)試,在模擬的環(huán)境中以模擬的數(shù)據(jù)來(lái)運(yùn)行。在這個(gè)階段中,通常是開(kāi)發(fā)人員與測(cè)試人員以模擬或?qū)嶋H操作性的方式進(jìn)行驗(yàn)證測(cè)試。在系統(tǒng)測(cè)試中通常先進(jìn)行Alpha測(cè)試以驗(yàn)證信息系統(tǒng)匹配用戶以及設(shè)計(jì)需求所期望的功能。當(dāng)Alpha階段完成后,開(kāi)發(fā)過(guò)程進(jìn)入到Beta階段,由公眾參與的測(cè)試的階段。Beta測(cè)試可稱為確認(rèn)測(cè)試,在一個(gè)真實(shí)的環(huán)境中以實(shí)際的數(shù)據(jù)來(lái)運(yùn)行測(cè)試,以確認(rèn)性能,系統(tǒng)運(yùn)行有效率,系統(tǒng)撤消與備份作業(yè)正常,通過(guò)測(cè)試讓信息系統(tǒng)日后可以更趨完善。Bta測(cè)試又分為兩種:封閉測(cè)試和公開(kāi)測(cè)試:由軟件的最終用戶在一個(gè)或多個(gè)用戶場(chǎng)所來(lái)進(jìn)行的,開(kāi)發(fā)者通常不在現(xiàn)場(chǎng),用戶記錄測(cè)試中遇到的問(wèn)題并報(bào)告給開(kāi)發(fā)者。
封閉測(cè)試(Closed Beta,常簡(jiǎn)作封測(cè)或CB)是軟件或服務(wù)等產(chǎn)品在開(kāi)發(fā)完成后、將公開(kāi)上市前的測(cè)試過(guò)程。相對(duì)于公開(kāi)測(cè)試,封閉測(cè)試的主要用途是測(cè)試軟件的功能和檢查程序錯(cuò)誤等等,因此通常只提供給少數(shù)人進(jìn)行測(cè)試。有些公司會(huì)要求參與測(cè)試者簽署保密協(xié)議,以避免測(cè)試的產(chǎn)品提前外流。MMORPG的封測(cè)結(jié)束之后,游戲公司常會(huì)將角色數(shù)據(jù)刪除,但也有少數(shù)不刪的。
公開(kāi)測(cè)試(Open Beta,常簡(jiǎn)作公測(cè)或OB),一般常指軟件或服務(wù)等產(chǎn)品在正式上市前開(kāi)放給不特定人試用,雖然原意是希望試用者能夠提報(bào)bug,但并不是把試用者當(dāng)做真正的驗(yàn)證人員。由于通常為免費(fèi)性質(zhì),故常常能夠吸引到大批的試用者參與,可視為另一種營(yíng)銷策略。另一方面也節(jié)省下測(cè)試人員的成本,和驗(yàn)證穩(wěn)定度(對(duì)于多人使用的帶寬及機(jī)器是否能負(fù)載,又稱壓力測(cè)試)的時(shí)間。
另外一個(gè)不常提及的是Gmma測(cè)試:Gamma測(cè)試是一個(gè)很少被提及的非正式測(cè)試階段,該測(cè)試階段對(duì)應(yīng)的是對(duì)“存在缺陷”產(chǎn)品的測(cè)試??紤]到任何產(chǎn)品都可以被稱為“存在缺陷”的產(chǎn)品(測(cè)試只能發(fā)現(xiàn)產(chǎn)品中存在的問(wèn)題,不能說(shuō)明產(chǎn)品不存在問(wèn)題),因此這個(gè)概念存在一定的不確定性。
六、軟件測(cè)試方法
1、按照測(cè)試設(shè)計(jì)分類可以分為 Black box黑盒測(cè)試、White box白盒測(cè)試、Gray box灰盒測(cè)試。
黑盒測(cè)試:又稱功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試,是針對(duì)軟件的功能需求/實(shí)現(xiàn)進(jìn)行測(cè)試,通過(guò)測(cè)試來(lái)檢測(cè)每個(gè)功能是否符合需求,把軟件系統(tǒng)當(dāng)作一個(gè)“黑盒”,不考慮程序內(nèi)部的邏輯結(jié)構(gòu),從軟件的行為,而不是內(nèi)部結(jié)構(gòu)出發(fā)來(lái)設(shè)計(jì)測(cè)試。
常見(jiàn)的黑盒測(cè)試方法:等價(jià)類劃分、邊界值分析、因果圖、錯(cuò)誤推測(cè)、場(chǎng)景法。
白盒測(cè)試:白盒測(cè)試也稱結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,設(shè)計(jì)者可以看到軟件系統(tǒng)的內(nèi)部結(jié)構(gòu),并且使用軟件的內(nèi)部知識(shí)來(lái)指導(dǎo)測(cè)試數(shù)據(jù)及方法的選擇,通過(guò)測(cè)試來(lái)檢測(cè)軟件內(nèi)部是否按照需求、設(shè)計(jì)正常運(yùn)行。
常見(jiàn)的白盒測(cè)試方法:邏輯覆蓋(語(yǔ)句覆蓋、分支覆蓋、條件覆蓋、判定-條件覆蓋、條件組合覆蓋)、循環(huán)覆蓋(簡(jiǎn)單循環(huán)、嵌套循環(huán)、串接循環(huán))。
灰盒測(cè)試:介于白盒測(cè)試與黑盒測(cè)試之間的一種測(cè)試,灰盒測(cè)試多用于集成測(cè)試階段,不僅關(guān)注輸出、輸入的正確性,同時(shí)也關(guān)注程序內(nèi)部的情況。
2、按照是否需要測(cè)試人員操作分類分為手動(dòng)測(cè)試(人工測(cè)試,比如頁(yè)面操作的測(cè)試)、自動(dòng)測(cè)試(測(cè)試人員編寫腳本/代碼/工具代替人工,來(lái)完成相應(yīng)測(cè)試工作)和半自動(dòng)測(cè)試(代碼或腳本,與人工結(jié)合的測(cè)試)。
3、按照測(cè)試目的分類
功能測(cè)試:測(cè)試軟件產(chǎn)品的功能是否能達(dá)到預(yù)期;
性能測(cè)試:通常驗(yàn)證軟件的性能在正常環(huán)境和系統(tǒng)條件下重復(fù)使用是否還能滿足性能指標(biāo),分為壓力測(cè)試(評(píng)估應(yīng)用程序在峰值負(fù)載和正常情況下的行為)和負(fù)載測(cè)試(負(fù)載測(cè)試的目的是通過(guò)不斷地、穩(wěn)定地增加系統(tǒng)的負(fù)載來(lái)測(cè)試系統(tǒng),直到達(dá)到閾值。它是性能測(cè)試的一個(gè)子集)。
接口測(cè)試:測(cè)試系統(tǒng)組件間接口的一種測(cè)試;
安全測(cè)試:測(cè)試系統(tǒng)在防止非授權(quán)的內(nèi)部或外部用戶的訪問(wèn)或故意破壞等情況時(shí)怎么樣;
兼容性測(cè)試:測(cè)試軟件在一個(gè)特定的硬件/軟件/操作系統(tǒng)/網(wǎng)絡(luò)等環(huán)境下的性能如何。向上兼容向下兼容,軟件兼容硬件兼容;
回歸測(cè)試:對(duì)軟件進(jìn)行修改之后進(jìn)行的測(cè)試,目的是檢驗(yàn)對(duì)軟件進(jìn)行的修改是否正確。一是所做的修改達(dá)到了預(yù)定的目的,也就是確認(rèn)測(cè)試,二是還要保證不影響軟件的其他功能的正確性。
4、按照是否執(zhí)行程序分類
靜態(tài)測(cè)試:不運(yùn)行被測(cè)程序本身,僅通過(guò)分析或檢查源程序的文法、結(jié)構(gòu)、過(guò)程、接口等來(lái)檢查程序的正確性。也包括測(cè)試文檔。
動(dòng)態(tài)測(cè)試:通過(guò)運(yùn)行軟件來(lái)檢驗(yàn)軟件的動(dòng)態(tài)行為和運(yùn)行結(jié)果的正確性。
總結(jié)
以上是生活随笔為你收集整理的软件测试c语言代码_软件测试理论知多少?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 荣耀万飚:预计今年下半年折叠屏手机有翻倍
- 下一篇: 为什么开源的代码没有注释_代码注释那些事