軟件測試的功能測試和性能測試,大型軟件的功能測試流程及性能測試流程

大型軟件具有涉及子模塊繁多、建設過程復雜、功能全面、性能具有較高要求的特點。依據ISO/IEC 9126軟件產品評估標準,需要對軟件的功能性、可靠性、可用性、效率、可維護性、可移植性等方面進行評估。因此,需要有一種方法能夠對大型軟件進行測試,保障其軟件質量。

本論文針對大型軟件功能模塊多、流程復雜、性能要求高的特點,總結了一種測試方法,該方法主要由功能測試和性能測試方法組成。功能測試方法由功能測試流程和功能測試用例設計方法組成,其中功能測試用例設計方法采用以等價類劃分方法為主,多種其他黑盒方法為輔助的方法。性能測試方法由性能測試流程、測試工具選擇、性能測試指標設計和性能調優方法組成。實踐表明,該測試方法具有良好的效果,能夠達到大型軟件進行功能和性能把關的目的。

1 大型軟件的功能測試

某大型軟件在企業統一的電網設備和客戶信息模型、基礎資料和拓撲關系的基礎上,基于GIS的標準化、一體化企業級信息平臺,應用于供電可靠性管理、客戶停電管理、線損四分管理、業擴報裝輔助決策及配網建設規劃等領域。具有涉及子模塊繁多、建設過程復雜、功能全面的特點,需對其進行功能測試。

1.1 功能測試流程

功能測試目的是測試產品是否達到了合同技術協議書規定的功能。其流程如圖1所示。

381e4d6cdec174ef61610281df5c8c2b.gif

1.2 功能測試測試用例設計

業務測試用例由10項內容組成:(1)用例ID,(2)用例名稱,(3)測試目的,(4)測試級別,(5)參考信息,(6)測試環境,(7)前提條件,(8)測試步驟,(9)預期結果,(10)設計人員。業務測試用例的方法有包括等價類劃分方法、邊界值分析方法、錯誤推測方法、因果圖方法、判定表驅動分析方法、正交實驗設計方法、功能圖分析方法和場景設計方法等,各種方法可以相互補充[2]。

在本文中,對一個模塊依據邏輯功能不同將其細分,并分別設計測試用例,主要采用等價類劃分方法來設計測試用例[3-4]。同時采用邊界值分析方法、錯誤推測方法、因果圖方法等在測試過程中進行輔助,輔助測試人員可以用較少的用例發現盡可能多的錯誤和缺陷。對某大型軟件的所有模塊均采取這種測試用例設計方法,其中某功能模塊的功能細分列表如表1所示。

feace8b6b705301a04a66fb4ff7d2d69.gif

1a415b05614eb0525a4866b264abf975.gif

某功能模塊的一個具體業務測試用例(運行數據查詢)如表2所示。

2 大型軟件的性能測試

2.1 性能測試流程

性能測試需要驗證產品是否達到了合同技術協議書規定的性能指標。通過自動化的測試工具模擬多種正常、峰值及異常負載條件來對系統的各項性能指標進行測試。

性能測試可以分為負載測試、壓力測試、配置測試、容量測試、基準測試和并發測試等[5]。本文主要通過負載測試,確定在各種工作負載下系統的性能,目標是測試當負載逐漸增加時,系統各項性能指標的變化情況。測試時監控系統的各項性能指標,以便為性能調優提供支持。性能測試流程圖如圖2所示。

cc63ca6f45b2c09705b9ce7741e4aad9.gif

2.2 測試工具選擇

性能測試的工具種類很多,簡單劃分為以下幾種:負載壓力測試工具、資源監控工具、故障定位工具以及調優工具。QA Load、SilkPerformer、LoadRunner、WebRunner都是主流的負載性能測試工具。本文采用LoadRunner作為測試工具,它也可以作為監控工具直接從中間件、數據庫以及主機自身提供的性能數據采集接口獲取性能指標,在負載壓力測試的同時對業務系統所處的測試環境進行監控。

2.3 性能測試指標

性能指標包括應用性能、主機性能、網絡性能、多任務性能、可靠性、可用性、易用性、易學性、負載均衡等性能指標[6]。

本文的合同技術協議書主要考察系統的功能模塊在某測試點下的最大并發數和響應時間指標。測試時、對服務器的CPU使用率、CPU等待隊列、磁盤傳輸率(Mb/s)、內存頁交換率(頁/s)、網絡傳輸率(包/s)等指標進行監控,編制服務器資源占用情況表,格式如表3所示。

02bbf82cabb01d38fe21e5fbe55105bf.gif

e93820d9e7108510e3b0e69ac1e95d05.gif

對大型軟件的所有模塊均考察測試點的最大并發數和響應時間指標,其中某子系統的性能測試表如表4所示。

2.4 性能調優

性能測試調優是為了改善系統某些方面的性能,而對系統軟件或硬件進行的修改,它與負載測試是性能測試的兩個核心內容,它們是多次交替進行的。

收集完以上必要的信息后,即確定調優的具體目標,如:(1)提高系統吞吐量;(2)縮短響應時間;(3)更好地支持并發;(4)提高硬件配置(如CPU、內存、硬盤、網絡等)。

調優完成后,再次進行負載測試,確定調優后的系統性能指標是否達到合同技術協議書的要求。若仍未達到,則需要再次進行調優,并讓開發方也改進程序。

實踐證明,這種功能測試與性能測試方法能夠有效地驗證多個廠商的產品是否達到了合同技術協議書規定的功能和性能指標。性能測試是控制系統性能的有效手段,在軟件的能力驗證、能力規劃、性能調優、缺陷修復等方面都發揮著重要作用。本文總結的功能測試與性能測試方法可以對多模塊、有具體性能要求的大型軟件進行測試,功能測試具有步驟明確、設計測試用例效率高和執行簡單的特點;性能測試具有步驟明確、監控全面和能夠進行調優的特點,是一種較好的測試方法。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370714.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370714.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370714.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue 分模塊打包 腳手架_Vue面試官最愛的底層源碼問題,你可以這樣回答!

最近看到身邊很多人都在投簡歷,有因為企業裁員的,有因為自己想跳槽的,原因不一,但是最終大家都會需要接觸到面試這個事情。但是很多人對待面試不夠認真,只會等待結果,不去努力。所以這邊想整理一些懶人面試…

re.containerbase.startinternal 子容器啟動失敗_Python項目容器化實踐(二) Docker Machine和Docker Swarm...

前言這篇文章介紹Docker生態中的常被提到的Engine、Machine和Swarm,大家以了解為主,工作需要再深入。EngineDocker Engine其實就是我們常說的「Docker」,它是一個C/S模型(Client/Server)的應用,包含如下組件:Daemon。守護進程&…

基于設備樹的TQ2440的中斷(2)

下面以按鍵中斷為例看看基于設備數的中斷的用法&#xff1a; 設備樹&#xff1a; tq2440_key {compatible "tq2440,key";interrupt-parent <&gpf>;interrupts <0 IRQ_TYPE_EDGE_FALLING>, <1 IRQ_TYPE_EDGE_FALLING>;key_3 <&gpf 2…

計算機里有個不能進入的磁盤分區,新電腦只有一個分區怎么辦? 教你們如何不進pe給硬盤創建新分區!...

很多朋友新電腦剛買回來打開發現明明自己機械硬盤1T或者1T機械加128G固態&#xff0c;但是卻只有一個或者兩個分區&#xff0c;但是又不會分區現在教大家如何不用老毛桃大白菜之類的進pe系統里面就能直接創建新分區1 WinR輸入diskmgmt.msc2進入磁盤管理可以查看本機的C盤與E盤的…

OSGi中的權限

在上一篇文章中 &#xff0c;我們介紹了為Java應用程序實現沙箱的方法&#xff0c;在其中我們可以安全地運行移動代碼 。 這篇文章探討了如何在OSGi環境中執行相同的操作。 OSGi OSGi規范 為Java定義了一個動態模塊系統 。 因此&#xff0c;它是實施那種可以使您的應用程序動…

HTTP簡單教程

目錄 HTTP簡介 HTTP工作原理 HTTP消息結構 客戶端請求消息服務器響應消息實例 HTTP請求方法HTTP響應頭信息HTTP狀態碼 HTTP狀態碼分類HTTP狀態碼列表 HTTP content-type對照表 HTTP簡介 HTTP協議是Hyper Text Transfer Protocol&#xff08;超文本傳輸協議&#xff09;的縮寫&…

Reversed-Z詳解

在3D渲染管線中&#xff0c;Z這個家伙幾乎無處不在&#xff0c;如Z-Buffer&#xff0c;Early-Z&#xff0c;Z-Cull&#xff0c;Z-Test&#xff0c;Z-Write等等&#xff0c;稍有接觸圖形學的人都會對這些術語有所耳聞。 那么Z到底是什么呢&#xff1f;首先Z當然可以是任意坐標系…

pyqt開發的程序模板_小程序定制開發和模板開發要多少錢?有什么區別?

到現在&#xff0c;小程序開發已經有了1年多的歷史&#xff0c;已經達到百萬數量級。無論是小程序商城還是小程序游戲&#xff0c;其開發方式不外乎兩種&#xff0c;一種是定制開發&#xff0c;另一種是模板開發。對于很多初次接觸小程序的客戶來說&#xff0c;還不知道小程序的…

實現字符串的編碼轉換,用以解決字符串亂碼問題

引起亂碼的情況很多~實質上 主要是字符串本身的編碼格式 與程序所需要的編碼格式不一致導致的。要解決亂碼其實很簡單&#xff0c; 分2步 &#xff1a; 1&#xff1a;獲取到字符串 本身的編碼 2&#xff1a;改變字符串編碼 &#xff08;本身編碼 -> 新編碼&#xff09; 話不…

python運行原理_Python線程池及其原理和使用(超級詳細)

系統啟動一個新線程的成本是比較高的&#xff0c;因為它涉及與操作系統的交互。在這種情形下&#xff0c;使用線程池可以很好地提升性能&#xff0c;尤其是當程序中需要創建大量生存期很短暫的線程時&#xff0c;更應該考慮使用線程池。 線程池在系統啟動時即創建大量空閑的線程…

Google Guava緩存

這篇文章是我在Google Guava上系列文章的續篇&#xff0c;這次涵蓋了Guava Cache。 與HashMap或ConcurrentHashMap相比&#xff0c;Guava Cache提供了更大的靈活性和功能&#xff0c;但不像使用EHCache或Memcached那樣繁重&#xff08;就此而言&#xff0c;它很健壯&#xff0c…

html 三列布局(兩列自適應,一列固定寬度)

不做過多解釋&#xff1a;主要是記錄一個完整的布局樣式&#xff0c;實現頁面大致三列其中左右兩列是自適應寬度&#xff0c;中間固定寬度效果。 不多少代碼奉上&#xff1a; CSS樣式代碼&#xff1a; /*********************公共標簽樣式********************//************…

jsp常用動作

jsp:include 動態包含&#xff1b; jsp:forward 轉發&#xff1b; jsp:useBean 實例化bean對象&#xff1b; jsp:setProperty 設置一個屬性值 jsp:getProperty 獲取一個屬性值 jsp:param 動態傳參數&#xff1b; jsp:plugin 生成一個插件 jsp:useBean 實例化一個對象…

單曲循環 翻譯_歌單 | 單曲循環amp;熱評

December2020/12/ 寫在前面的話 /本來打算在跨年的時候才更文&#xff0c;但是吧又覺得空出這最后一個月有點蒼白&#xff0c;然后最近一直夜半網抑云(敏感ing)就想到可以做一期分享歌單的推文&#xff0c;分享一些最近聽得頻繁的歌曲(還不是刷抖音刷出來的)。《曖昧》// 王菲徘…

python的字符串內建函數

python的字符串內建函數 字符串方法是從python1.6到2.0慢慢加進來的——它們也被加到了Jython中。 這些方法實現了string模塊的大部分方法&#xff0c;如下表所示列出了目前字符串內建支持的方法&#xff0c;所有的方法都包含了對Unicode的支持&#xff0c;有一些甚至是專門用…

休息使用Jersey –包含JAXB,異常處理和客戶端程序的完整教程

最近&#xff0c;我開始使用Jersey API開發一個Restful Web服務項目。 在線提供了一些教程&#xff0c;但是我遇到了異常處理方面的一些問題&#xff0c;而且在使用JaxB和提供異常處理方法的完整項目中找不到任何地方。 因此&#xff0c;一旦我能夠使用帶有異常處理和客戶端程序…

python基于web可視化_獨家 | 基于Python實現交互式數據可視化的工具(用于Web)

轉自&#xff1a;數據派ID&#xff1a;datapi 作者&#xff1a;Alark Joshi 翻譯&#xff1a;陳雨琳 校對&#xff1a;吳金笛 本文2200字&#xff0c;建議閱讀8分鐘。 本文將介紹實現數據可視化的軟件包。 這學期&#xff08;2018學年春季學期&#xff09;我教授了一門關于數據…

SASS簡介及使用方法

一、什么是Sass Sass (Syntactically Awesome StyleSheets)是css的一個擴展開發工具&#xff0c;它允許你使用變量、條件語句等&#xff0c;使開發更簡單可維護。這里是官方文檔。 二、基本語法 1&#xff09;變量 sass的變量名必須是一個$符號開頭&#xff0c;后面緊跟變量名…

【轉】Java方向如何準備BAT技術面試答案(匯總版)

原文地址&#xff1a;http://www.jianshu.com/p/1f1d3193d9e3 這個主題的內容之前分三個篇幅分享過&#xff0c;導致網絡上傳播的比較分散&#xff0c;所以本篇做了一個匯總&#xff0c;同時對部分內容及答案做了修改&#xff0c;歡迎朋友們吐槽、轉發。因為篇幅長度和時間的原…

numpy維度交換_“lazy”的transpose()函數——從numpy 數組的內存布局講起

1 數組的兩種內存布局方式行優先與列優先首先我們回顧一下&#xff0c;矩陣數據在內存中的兩種布局方式&#xff1a;行優先&#xff08;row-major&#xff09;&#xff1a;以行為優先單位&#xff0c;在內存中逐行存儲/讀取&#xff1b;對于多維&#xff0c;意味著當線性掃描內…