軟件測試與質(zhì)量復習
- 軟件缺陷定義:
軟件缺陷就是軟件產(chǎn)品中存在的問題,最終表現(xiàn)為用戶所需要的功能沒有完全實現(xiàn),不能滿足或不能全部滿足用戶的需求。
軟件缺陷表現(xiàn)形式
- 設計不合理,不是用戶所期望的風格、格式
- 部分實現(xiàn)了軟件某項功能
- 系統(tǒng)崩潰、界面混亂
- 數(shù)據(jù)結果不正確、精度不夠
- 存取時間過長、界面不美觀
軟件缺陷案例(UML路徑錯誤、int類型的數(shù)據(jù)溢出、J2ME存在的漏洞、平臺設計不合理)
軟件測試與質(zhì)量的關系:息息相關,分不開,測試是手段,質(zhì)量是目的,軟件測試作為一種輔助而且必需的手段,客觀反映某個時間段內(nèi)的軟件質(zhì)量。
軟件測試作為軟件質(zhì)量的重要保證。通過分析和測試軟件來發(fā)現(xiàn)和糾正錯誤,可以保證軟件質(zhì)量。軟件質(zhì)量控制所采取的主要技術就是軟件測試,通過軟件測試,來驗證產(chǎn)品是否符合技術文檔預期的功能、特性和性能等要求,并識別產(chǎn)品缺陷。
軟件測試與軟件開發(fā)過程的關系:
密不可分。軟件測試在開發(fā)階段具有以下作用:
- 項目規(guī)劃階段:負責從單元測試到系統(tǒng)測試的整個測試階段的監(jiān)控
- 需求分析階段: 確定測試需求分析、系統(tǒng)測試計劃的制訂,評審后成為管理項目。
- 詳細設計和概要設計階段:確保集成測試計劃和單元測試計劃完成。
- 編碼階段:由開發(fā)人員完成自己負責部分的測試代碼,當編寫工作項目較大時,由專人進行編碼階段的測試任務。
- 測試階段(單元、集成、系統(tǒng)測試):依據(jù)測試代碼進行測試,并提交相應的測試狀態(tài)報告和測試結束報告。
測試和開發(fā)貫穿軟件過程的整個生命周期,二者相輔相成、相互依賴。
同時開始,同時結束,保持同步關系,并行的。
測試過程是對開發(fā)過程中階段性成果和最終產(chǎn)品進行驗證的過程,所以2者相互依賴。前期,測試過程更多地依賴開發(fā)過程,后期,開發(fā)過程更多地依賴測試過程。
軟件測試定義
使用人工或自動手段來運行或測試某個軟件系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或弄清預期結果與實際結果之間的差別。
軟件測試目的
以最少的時間和人力找出軟件中潛在的各種錯誤和缺陷,證明軟件功能和性能與需求說明相符。
- 找出錯誤、分析錯誤發(fā)生原因和錯誤發(fā)生趨勢,幫助管理者發(fā)現(xiàn)缺陷,及時改進。
- 測試分析幫助測試人員設計出有針對性的測試方法,改善測試的效率和有效性。
- 完整的測試是評定軟件質(zhì)量的一種方法,沒有發(fā)現(xiàn)錯誤的測試是有價值的。
軟件測試原則
- 應當把“盡早地和不斷地進行軟件測試”作為軟件開發(fā)者的座右銘。
- 測試用例應由測試輸入數(shù)據(jù)和與之對應的預期輸出結果兩部分組成。
- 程序員應避免檢查自己的程序
- 在設計測試用例時,應當包括合理的輸入條件和不合理的輸入條件
- 充分注意測試中的群集現(xiàn)象
- 嚴格執(zhí)行測試計劃,排除測試的隨意性
- 應當對每一個測試結果做全面檢查
- 妥善保存測試計劃、測試用例、出錯統(tǒng)計和最終分析報告,為軟件維護提供方便
3、 軟件測試的基本思路
- 增加功能的測試思路,必填項校驗、文本輸入框校驗
- 修改功能的測試思路,考慮什么類型的數(shù)據(jù)允許修改
- 刪除功能
單條刪除:刪除權限,刪除的恢復和撤銷、數(shù)據(jù)庫變化、由于業(yè)務影響不能刪除
多條刪除:系統(tǒng)異常是否刪成功,有條件的選擇多條刪除(構造符合條件的刪除和不符合條件的刪除,檢查消耗時間
- 查詢功能
- 導入導出功能(文件類型格式、大小、文件數(shù)據(jù)格式、導入導出的結果是否正常)
- 計算功能(弄清計算邏輯,把所有可能的情況都測了)
- 業(yè)務流程,走完整流程
為什么需要測試用例,
- 設計測試用例是為了更有效、更快地發(fā)現(xiàn)軟件缺陷
- 測試用例具有很高的有效性和可重復性,依據(jù)測試用例進行測試可以節(jié)約測試時間,提升測試效率
- 測試用例具有良好的組織性和可跟蹤性,有利于測試的管理
什么是測試用例,?
測試用例就是為特定目標而開發(fā)的一組測試輸入、執(zhí)行條件和預期結果,其目標可以是測試某個程序路徑或核實是否滿足某個特定需求。
單元測試(unit testing):是指對軟件中的最小可測試單元進行檢查和驗證。程序的多個模塊可以并行地進行單元測試。
解決任務:邊界條件、局部數(shù)據(jù)結構、模塊接口、出錯處理、路徑測試
單元測試的依據(jù)
(1)源程序本身,代碼 + 注釋。 (2)《詳細設計》文檔。
單元測試的通過標準
- 程序通過所有的單元測試的用例。?
- 語句的覆蓋率達到100%。
- 分支的覆蓋率達到85%。
單元測試的一般步驟(白盒測試)
- 編譯運行程序,查看能否正確運行
- 靜態(tài)測試(查看編碼規(guī)范)
- 動態(tài)測試(運行程序)
?單元的質(zhì)量是整個軟件質(zhì)量的基礎,所以充分的單元測試是非常必要的。
? 通過單元測試可以更早地發(fā)現(xiàn)缺陷,縮短開發(fā)周期、降低軟件成本。多數(shù)缺陷在單元測試中很容易被發(fā)現(xiàn),但如果沒有進行單元測試,那么這些缺陷在后期測試時就會隱藏得很深而難以發(fā)現(xiàn),最終導致測試周期延長、開發(fā)成本急劇增加。
集成測試(integration testing):是指將已通過測試的單元模塊組裝成系統(tǒng)或子系統(tǒng),再進行測試,重點測試不同模塊的接口部分。
三明治集成-混合策略:改進的三明治集成方法,不僅自兩頭向中間集成,而且保證每個模塊得到單獨的測試,使測試進行得更徹底。
集成測試就是用來檢查各個單元模塊結合到一起能否協(xié)同配合,正常運行。重點檢測各個模塊的接口部分,如函數(shù)之間的參數(shù)傳遞是否正確、全局變量的使用等。
實際:單元測試和集成測試同步進行,在單元測試中先測試幾個函數(shù)的功能,然后再集成測試一下這幾個函數(shù)的接口(即參數(shù)傳遞)。
集成測試的依據(jù) (1)單元測試模塊。 (2)《概要設計》文檔
? 確認測試用于驗證軟件的有效性,驗證被測軟件是否滿足需求規(guī)格說明書中 列出的需求,即驗證軟件的功能及其他特性是否與用戶要求一致。
? 軟件的功能要求在軟件需求規(guī)格說明書中已經(jīng)明確規(guī)定,即需求規(guī)格說明書 包含的用戶需求信息就是軟件確認測試的基礎。
系統(tǒng)測試是驗證軟件產(chǎn)品是否符合這些質(zhì)量特性要求的測試。系統(tǒng)測試包括性能測試、安全測試和兼容性測試、易用性測試等。
驗收測試(acceptance testing):指的是在系統(tǒng)測試的后期,以用戶測試為主,或有測試人員等質(zhì)量保證人員共同參與的測試,它也是軟件正式交給用戶使用的最后一道工序。重要性:涉及到用戶能否最終驗收簽字并付款。
6、 軟件測試分類
執(zhí)行主體分類:開發(fā)方測試(alpha、驗收測試)、用戶(β)、第三方測試(獨立測試)
?文章來源地址http://www.zghlxwxcb.cn/news/detail-517517.html
靜態(tài)測試(static testing):不實際運行被測軟件,只是人工靜態(tài)分析和檢查程序代碼界面和文檔中可能存在的錯誤的過程。
7、 軟件測試模型:V 模型、W 模型
?
8、
Alpha測試:由用戶、測試人員、開發(fā)人員共同參與的內(nèi)部測試,檢驗是否滿足需求
Beta測試:內(nèi)測后的公測,即完全交給最終用戶測試
回歸測試:一種驗證已變更的系統(tǒng)的完整性與正確性的測試技術,是指重新執(zhí)行已經(jīng)做過的測試的某個子集。
冒煙測試(Smoke Testing)是指:針對每個版本或每次需求變更之后,在正式測試之前,對產(chǎn)品或系統(tǒng)的一次簡單的驗證性測試,驗證產(chǎn)品或系統(tǒng)的“基本功能”流程是否正常。
隨機測試是指測試中的所有輸入數(shù)據(jù)都是隨機生成的,其目的是模擬用戶的真實操作,并發(fā)現(xiàn)一些邊緣性的錯誤
1、 黑盒測試:什么是黑盒測試
也稱功能測試,是通過測試來檢測每個功能是否都能正常使用。在測試中把程序看成是一個不能打開的黑盒子,在完全不考慮程序內(nèi)部結構和內(nèi)部特性的情況下,對程序接口進行測試,它只檢查程序功能是否按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當?shù)亟邮?/span>輸入數(shù)據(jù)而產(chǎn)生正確的輸出信息。
2、
等價類劃分法的定義:等價類劃分法是把所有可能的輸入數(shù)據(jù),即程序的輸入數(shù)據(jù)集合劃分成若干個子集(即等價類),然后從每一個等價類中選取少量具有代表性的數(shù)據(jù)作為測試用例。
- “有效等價類”:完全滿足產(chǎn)品規(guī)則說明的輸入數(shù)據(jù),即有效的、有意義的輸入數(shù)據(jù)所構成的集合。利用有效等價類可以檢驗程序是否滿足規(guī)則說明所規(guī)定的功能性要求。
- “無效等價類”:和有效等價類相反,即不滿足程序輸入要求或者無效的輸入數(shù)據(jù)構成的集合。
等價類劃分原則:
- 如果規(guī)定了輸入值的范圍,可定義一個有效等價類和2個無效等價類
- 如果規(guī)定輸入的規(guī)則,可以劃分出1個有效等價類和若干個無效等價類(從不同角度違反規(guī)則)
- 如果規(guī)定了輸入數(shù)據(jù)的一組值(數(shù)值),且程序?qū)Σ煌斎胫底龀霾煌幚?,則每個允許的輸入值是一個有效等價類,并由一個無效等價類(所有不允許的輸入值的集合)
- 如果規(guī)定了輸入數(shù)據(jù)是整型,則可以劃分出正整數(shù)、負整數(shù)和0這3個有效等價類。
- 當處理表格時,有效類可以劃分為空表、含一項的表、含多項的表等。
使用等價類劃分法的過程?
(1)形成等價類表,每一等價類規(guī)定一個唯一的編號。
(2)設計一測試用例,使它能夠盡量覆蓋尚未覆蓋的有效等價類。重復這個步驟,直到所有的有效等價類均被測試用例所覆蓋。
(3)設計一新測試用例,使它僅覆蓋一個尚未覆蓋的無效等價類。重復這一步驟,直到所有的無效等價類均被測試用例所覆蓋。
3、
邊界值分析法定義:就是對輸入或輸出的邊界值進行測試的一種黑盒測試方法
通常邊界值分析法是作為對等價類劃分法的補充,這種情況下,其測試用例來自等價類的邊界。
使用邊界值分析法的過程
如果是范圍,選擇剛到達范圍的邊界值以及剛剛超越邊界的值作為測試數(shù)據(jù)。
決策表法的定義:決策表法是分析和表達多邏輯條件下執(zhí)行不同操作的技術
決策表的概念:決策表是分析和表達多邏輯條件下執(zhí)行不同操作的情況的工具。
制定決策表一般經(jīng)過以下4個步驟:
? 列出所有的條件樁和動作樁。
? 填入條件項。
? 填入動作項,制定初始判定表。
? 簡化、合并相似規(guī)則或者動作
規(guī)則的簡化和合并
– 如果兩條或多條規(guī)則的動作項相同,條件項只有一項不同,則可以將該項合并,合并后的條件項用符號“-”表示,說明執(zhí)行的動作與該條件的取值無關,稱為無關條件。
使用決策表法的過程
因果圖法的定義:是一種利用圖解法分析輸入的各種組合情況,從而設計測試用例的方法,它適合于檢查程序輸入條件的各種組合情況。
因果圖中輸入條件與輸出結果之間的關系(4 種)
?
因果圖中輸入或輸出的約束關系(5 種)
?
使用因果圖法的過程
三、白盒測試
1、
白盒測試方法:對軟件的過程性細節(jié)做細致的檢查,把測試對象看成是一個打開的盒子,允許測試人員利用程序內(nèi)部邏輯結構及有關信息,設計或選擇測試用例,針對程序語句、路徑、變量狀態(tài)等來進行測試。
靜態(tài)白盒測試是一種不執(zhí)行程序而進行測試的技術,其關鍵功能是檢查軟件的表示和描述是否一致,沒有沖突或者沒有歧義。側(cè)重于糾正軟件系統(tǒng)在描述、表示和規(guī)格上的錯誤,是任何進一步測試的前提。
人工靜態(tài)測試(代碼檢查法、靜態(tài)結構分析法)
2、
邏輯覆蓋法定義:通過對程序邏輯結構的遍歷實現(xiàn)對程序的覆蓋,它是一系列測試過程的總稱。
?? 邏輯覆蓋法以不同的覆蓋項作為測試標準。
?? 覆蓋項是指作為測試基礎的一個入口或?qū)傩裕热缯Z句、判定(分支)、條件等。
5 種不同的邏輯覆蓋標準(語句覆蓋、判定覆蓋、條件覆蓋、條件判定覆蓋、條件組合覆蓋),
語句覆蓋法(SC)的基本思想是:設計若干測試用例,運行被測程序,使程序中的每個可執(zhí)行語句至少被執(zhí)行一次
判定覆蓋法(DC)的基本思想是:設計若干用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷真假值均曾被滿足。
條件覆蓋(CC)的基本思想是:設計若干測試用例,執(zhí)行被測程序以后,要使每個判斷中每個條件的可能取值至少滿足一次。
條件-判定覆蓋(CDC):是條件和判定覆蓋設計方法的交集,即設計足夠的測試用例,使得判斷條件中的所有條件可能取值至少執(zhí)行一次,同時,所有判斷的可能結果至少執(zhí)行一次。
條件組合覆蓋(MCC)的基本思想是:設計足夠的測試用例,使得判斷中每個條件的所有可能至少出現(xiàn)一次,并且每個判斷本身的判定結果也至少出現(xiàn)一次。
它與條件覆蓋的差別是它不是簡單地要求每個條件都出現(xiàn)“真”與“假”兩
種結果,而是要求讓這些結果的所有可能組合都至少出現(xiàn)一次
使用邏輯覆蓋法的過程
3、
基本路徑/線性無關路徑:包括一組以前沒有處理的語句或條件的一條路徑(與其他基本路徑至少有一條邊不能相同)
基本路徑測試方法:在不能做到所有路徑覆蓋的前提下,如果某一程序的每一個獨立路徑都被測試過,那么可以認為程序中的每個語句都已經(jīng)檢驗過了,即達到了語句覆蓋。這種測試方法就是基本路徑測試法
基本路徑測試開始前的準備工作:分析源程序、繪制程序控制流程圖
使用基本路徑法的步驟和過程
- 導出程序的控制流圖
- ?計算控制流圖 G 的圈復雜度 V(G)
- 導出獨立路徑(用代碼行號表示)
- 設計測試用例,確?;韭窂郊械拿織l路徑都被執(zhí)行
控制流圖(程序流程圖轉(zhuǎn)化為控制流圖,復合條件下生成控制流圖)
?
圖矩陣(控制流圖轉(zhuǎn)化為控制流圖矩陣)
?
圈復雜度的計算(4 種方法)
圈復雜度為程序邏輯復雜性提供定量的測度,該度量用于計算程序的基本獨立路徑數(shù)目,確保所有語句至少執(zhí)行一次的測試數(shù)量的上界。
V(G)=4(區(qū)域數(shù))或:V(G)= 3(判斷節(jié)點數(shù))+ 1 = 4;
V(G)=10(邊的個數(shù))-8(節(jié)點個數(shù))+2=4;
四、性能測試
1、
性能測試:測試在一定條件下系統(tǒng)行為表現(xiàn)是否符合需求規(guī)格的性能指標,例如計算精度、響應時限、恢復時限、傳輸錯誤率等性能指標。
2、
?響應時間:對請求做出響應所需要的時間。(網(wǎng)絡傳輸和應用延遲)
并發(fā)用戶數(shù)(1同一時刻做同一件事情、2發(fā)出請求或者操作可同可不同)
? 第一:并發(fā)強調(diào)所有的用戶必須在同一時刻對服務器進行施壓。
? 第二:強調(diào)要與服務器進行數(shù)據(jù)交互。同類/不同類操作
?
吞吐量:指在一次性能測試過程中,網(wǎng)絡上傳輸數(shù)據(jù)量的總和。
? 1、一般來說,在系統(tǒng)的設計范圍之內(nèi),吞吐量隨系統(tǒng)的并發(fā)用戶數(shù)的增加呈現(xiàn)增加趨勢;
? 2、當超出這個范圍時有兩種情況,一種是系統(tǒng)只能處理這么多,超過這個數(shù)系統(tǒng)不接收了,最后隨著并發(fā)用戶數(shù)的增多吞吐量是一個水平的直線;還有一種情況是不管來多少系統(tǒng)都接收最后導致系統(tǒng)吞吐量下降甚至系統(tǒng)崩潰。
?
? 性能計數(shù)器:描述服務器或操作系統(tǒng)性能的一些數(shù)據(jù)指標,如使用內(nèi)存數(shù)、進程時間等,在性能測試中發(fā)揮著“監(jiān)控和分析”的作用
- 資源利用率:CPU占用率、內(nèi)存占用率、磁盤使用率、網(wǎng)絡等。
- 資源利用率表現(xiàn)當前服務器資源使用的情況,它是分析服務器出現(xiàn)瓶頸和對服務器進行調(diào)優(yōu)的主要依據(jù),在配置調(diào)優(yōu)測試的過程中,通過比較配置調(diào)優(yōu)前后系統(tǒng)資源的使用率來判斷調(diào)優(yōu)的效果.
? 思考時間(Think Time):也稱為“休眠時間”,是指用戶在進行操作時,每個請求之間的時間
間隔。
? 點擊率(Hit Per Second):是指每秒鐘用戶向Web服務器提交的HTTP請求數(shù)。
? 用戶每點擊一次,服務器端就要對用戶提交的請求進行一次處理;
? 對于Web 系統(tǒng)來說,點擊率是服務器處理的最小單位,點擊率的值越大,說明服務器端所能承受的壓力越大。
? 通常情況下,Web 服務器都具有防刷新的機制,因為客戶每刷新一次系統(tǒng)就要響應一次點擊,如果不對服務器進行防刷新處理,當用戶不停地單擊刷新按鈕,此時服務器將承受著巨大的壓力。
3、 常見的性能測試:基準測試,并發(fā)測試,聯(lián)機測試,綜合場景測試,負載測試,壓力測
試,每種性能測試的目標和執(zhí)行方式
基準測試(Benchmark Testing)單用戶測試
基準測試是基于一定規(guī)模的數(shù)據(jù)量上進行單業(yè)務或按實際用戶操作同比例組合業(yè)務的測試,目的在于量化響應時間、吞吐率的指標,便于后續(xù)比對。
方法是做多組不同場景的測試,觀察結果,抽取出幾個關鍵數(shù)據(jù)做好記彔,用于以后進行性能對比和評價。
并發(fā)測試(Concurrency Testing)
通過模擬用戶的并發(fā)訪問,測試多用戶并發(fā)訪問同一個應用、同一個模塊或者數(shù)據(jù)記錄時是否存在死鎖或者其他性能問題。
特點:
(1)主要目的是發(fā)現(xiàn)系統(tǒng)中可能隱藏的并發(fā)訪問時的問題。
(2主要關注系統(tǒng)可能存在的并發(fā)問題,例如系統(tǒng)中的內(nèi)存泄露、線程鎖和資源爭用方面的問題。
(3) 可在在開發(fā)的各個階段使用,需要相關的測試工具的配合和支持。
負載測試(正常下承受多大負載):可以理解為確定所要測試的業(yè)務或系統(tǒng)的負載范圍,然后對其進行測試,他的主要目的驗證業(yè)務或者系統(tǒng)在給定負載條件下的處理能力。此外,還要關注響應時間、每秒通過事務數(shù)和其他相關指標。(一次加載、遞增加載、高低突變加載、隨機加載方式)
負載測試是為了發(fā)現(xiàn)系統(tǒng)問題(內(nèi)存泄漏、性能瓶頸)。而性能測試是為了獲取性能指標。
壓力測試(施加多大壓力使得系統(tǒng)崩潰):可以理解為沒有預期的性能指標,不斷加壓,看系統(tǒng)什么時候崩潰,以此來確定系統(tǒng)的瓶頸不能接受的性能拐點,以獲取系統(tǒng)的最佳并發(fā)數(shù),最大并發(fā)數(shù)(高負載穩(wěn)定性測試+極限負載破壞性壓力測試)(步驟1:簡單多任務測試;2:修正后增加壓力直到崩潰)
壓力測試也可以看作負載測試的一種,即高負載下的負載測試。負載測試與壓力測試的概念并非完全獨立,在實際應用中一般二者都是相互結合,相互補充的。
文章來源:http://www.zghlxwxcb.cn/news/detail-517517.html
?
到了這里,關于軟件測試與質(zhì)量期末復習的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!