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