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