淺談軟件測試

一. 什么是軟件測試

軟件測試是一個過程或者一系列過程, 用來測試計算機代碼完成了其應該完成的功能, 不執行不該有的操作.或者說軟件測試是根據軟件開發各階段的功能和說明而精心設計的一批測試用例, 并根據測試用例運行程序, 以發現程序錯誤的過程.

二. 軟件測試的心理學和經濟學

1.軟件測試心理學

測試是為發現錯誤而執行程序的一個過程.

2.黑盒測試

數據驅動測試或者輸入輸出驅動的測試, 測試目標與程序的內部結構以及程序的內部機制都無關, 將重點放在程序不按照其規范正確運行的環境條件.

3.白盒測試

邏輯驅動測試, 即允許對程序的內部結構進行檢查, 對程序的邏輯結構進行檢查, 從中獲取測試數據(忽略了程序的規范).知道產品內部結構, 可通過測試檢測產品內部是否按照說明書正常工作. 測試方法通常有邏輯驅動, 基路測試等.

4. 軟件測試的目的

以最少的人力物力時間找出軟件中潛在的各種錯誤缺陷,通過修正錯誤缺陷, 提高軟件的性能和質量, 避免軟件發布后由于潛在的問題引起商業風險

5.需求文檔測試

主要測試產品需求中是否存在邏輯矛盾, 以及需求在技術上是否可以實現

6.設計文檔測試

測試設計是否符合全部需求以及設計是否合理

三. 軟件測試的原則
1.對預期輸出或結果的一個定義

只有在測試之前對程序的預期結果做出相應的定義, 才會知道程序是否完成了自己應該完成的功能, 或者程序是否執行了自己不該執行的任務.

2.程序員應該避免測試自己編寫的程序

每一個作者都清楚自己所編寫的程序需要表達一個什么意思, 但實際表達出來的意思有可能是南轅北轍的, 而自己卻沒有意識到.

3.編寫軟件的組織不應該測試自己編寫的軟件

對于編寫者來說, 定量的衡量軟件的可靠性較難, 即使合理的規劃和測試過程, 可能也會降低完成進度和成本目標.

4.徹底檢查每個測試的執行結果

在后序的檢查和測試中, 往往發現的錯誤是前序測試所遺漏的.

5. 測試用例的編寫不僅要考慮到有效和預期的輸入, 還應該考慮無效且不符合預期結果的輸入用例.

在測試的過程中往往將重點放在了有效和符合預期結果的輸入中, 而忽略了一些無效和未預料的結果.

6.檢查程序是否未做其應該做的僅僅是測試的一半, 還應該檢查程序是否做了其不應該做的

必須檢查程序是否有我們不希望的副作用

7.避免測試用例用后丟棄, 除非軟件本身是一次性的軟件

保留測試用例是為了當程序其他部分發生更動后重新執行,

8.計劃測試時, 不應該默許假定不會發現錯誤

所謂測試, 是為了發現錯誤而執行的一個過程

9.程序某部分存在更多錯誤的可能性

加入一個程序由模塊 A和模塊 B構成, 但是模塊 A有五個錯誤, 而模塊 B只有一個錯誤

10.軟件測試是一個具有創造性和智力性的工作

測試一個大型軟件所需要的創造性很可能超過了開發一個大型軟件所需要的創造性和智力性.

四. 幾個名詞
1. Alpha 測試

有一個用戶在開發環境下進行的測試, 也可以由公司內部的用戶在模擬實際操作環境下進行的受控測試. 測試不能由測試員或者程序員來完成, 測試過程中如果發現錯誤, 可以現場立即向開發者反饋, 目的是評價軟件的功能, 可靠性, 可使用性, 性能和支持. 尤其注重軟件的界面和特色.可以從軟件的編碼之后進行測試.有關的手冊應該在測試之前準備好

2. Bate 測試

軟件的多個用戶在一個或多個用戶的實際使用環境下進行的測試. 開發者往往不在現場, Bate 的測試往往不能由測試員或者程序員來完成, 因此 Bate 測試是不可控的. 在遇到問題時有用戶記下, 然后反饋給開發者, 開發者在接到反饋時及時對其作出修改, 最終將產品交給使用用戶. Bate 測試往往側重于產品的支持性, 只有 Alpha 測試達到一定的可靠性的之后才能進行 Bate 測試, 由于 Bate 測試注重于產品的支持性, 因此盡可能讓支持產品發行的人員進行管理

3. 驅動模塊

驅動模塊往往也叫做主程序, 它接受測試數據, 將測試數據傳入到北側單元, 驅動模塊主要完成對輸入數據進行判斷, 將輸入數據傳送給輸出被測模塊, 驅動被測模塊執行, 接受被測單元執行結果, 對輸出結果進行判斷, 接受被測單元執行結果, 將執行結果作為用例執行結果輸出測試報告

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

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

相關文章

UVa10340

【題目描述】 傳送門 【題目分析】 求字串&#xff0c;最好還是處理母串&#xff0c;每次找到一個子串就加1&#xff0c;這樣處理不用處理細節 【AC代碼】 #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include&l…

淺析linux下的條件變量

一.條件變量 條件變量是用來等待線程而不是上鎖的&#xff0c;條件變量通常和互斥鎖一起使用。條件變量之所以要和互斥鎖一起使用&#xff0c;主要是因為互斥鎖的一個明顯的特點就是它只有兩種狀態&#xff1a;鎖定和非鎖定&#xff0c;而條件變量可以通過允許線程阻塞和等待另…

UVa1587

【題目描述】 傳送門 【題目分析】 剛開始想簡單了&#xff0c;認為只要相對的面相等就可以了。然后發現三個不同方向的面的邊應該有相等的關系&#xff0c;即如果兩個面公用一條邊&#xff0c;那么這兩個面的另外兩條邊就是另一個面的兩條邊。而且這三個量里面肯定有一個最…

Linux多線程與同步

https://www.cnblogs.com/freedomabcd/p/7774743.html 典型的UNIX系統都支持一個進程創建多個線程(thread)。在Linux進程基礎中提到&#xff0c;Linux以進程為單位組織操作&#xff0c;Linux中的線程也都基于進程。盡管實現方式有異于其它的UNIX系統&#xff0c;但Linux的多線程…

內存管理(二)

頁面置換算法 當發生缺頁中斷的時候, 系統會在內存中選擇一個頁面將其換出內存, 而當換出內存的時候如果該頁面的內容在內存中發生修改,則必須將該新數據重新寫回到磁盤, 然后再將需要換進的數據覆蓋掉原來的數據, 而當該數據在內存中沒有被修改的時候, 此時就直接用需要換進的…

兩個棧實現一個隊列/兩個隊列實現一個棧

http://blog.csdn.net/sinat_30472685/article/details/70157227 1兩個棧實現一個隊列 1.原理分析&#xff1a; 隊列的主要操作有兩個&#xff1a;入隊操作和出隊操作&#xff0c;出隊時從隊頭出&#xff0c;入隊是從隊尾插入&#xff0c;入隊的操作和入棧的操作類似&#xff0…

UVa1588

【題目描述】 傳送門 【題目分析】 剛開始想了一會沒有想到什么很好的算法&#xff0c;看到了長度最多為100&#xff0c;就知道自己想的沒有什么意義了&#xff0c;直接暴力&#xff0c;把每一種填法都試一下就知道了。適當剪枝一下&#xff08;一個簡單的樂觀函數&#xff…

轉:C++中const、volatile、mutable的用法

const修飾普通變量和指針 const修飾變量&#xff0c;一般有兩種寫法&#xff1a; const TYPE value; TYPE const value; 這兩種寫法在本質上是一樣的。它的含義是&#xff1a;const修飾的類型為TYPE的變量value是不可變的。對于一個非指針的類型TYPE&#xff0c;無論怎么寫&…

數據鏈路

廣播信道的數據鏈路層 局域網的優點 網絡為一個單位所擁有, 地理范圍和站點數有限 局域網具有廣播特性, 可以從一個站點方便地訪問到整個網絡. 各個主機之間可以共享資源, 無論是局域網上的硬件資源還是局域網上的軟件資源 便于系統的擴展換和演化, 各個設備之間的位置可靈…

UVa11809

【題目描述】 傳送門 【題目分析】 終于把這道題做完了&#xff0c;之前一直連題意都看不懂。實在不行上網找了一下大佬的博客&#xff0c;看懂題意后自己寫&#xff0c;發現讀入很難處理&#xff0c;就又學習了一下大佬的讀入方法&#xff0c;用的是C里面的sstream&#xf…

數據鏈路層:基本概念

數據鏈路層的定義 對數據鏈路層有對上的網絡層接口. 對下提供物理層的接口. 定義合適的傳輸差錯率 對傳輸流進行管理, 以免快速的傳輸的數據被淹沒. 比如發送端發送信號太快, 接受方接受速度較慢, 此時數據鏈路層就需要提供一定的功能解決這個問題 物理層上傳輸的基本單元是…

C++的沉迷與愛戀

每年的 09/28 於我都是一個特殊的日子 -- 不只是因為教師節。今年很特殊地沒有普天同慶&#xff0c;那麼我就寫篇文章自己慶祝一下好了。我於今年七月發表了一本著作《多型與虛擬》和一本譯作《深度探索C物件模型》&#xff0c;獲得很大的回響。這些作品都不是針對 C 的完全初學…

Insertion Sort——打表找規律

【題目描述】 Insertion sort is a simple sorting algorithm that builds the final sorted array one item at an iteration.More precisely, insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. At each iteration…

數據鏈路層: 可靠性傳輸 六個協議

可靠性傳輸 1. 差錯控制 發送方將數據幀發送, 但是當發送方發送的是一個 1的時候此時接受方卻接受的是一個 0. (1)校驗 接收方如果幀校驗接受到的幀沒有問題, 則對發送方發送一個肯定性的確認, 當對這個數據幀進行校驗發現這個幀有問題的時候, 此時接受方一種是將這個數據幀…

c語言實現配置文件的讀寫

配置文件的格式如下&#xff1a; key1 value1 key2 value2 . . . 名值對以一個鏈接&#xff0c;一條記錄以換行符分割 頭文件&#xff1a; #include<stdio.h> #include<stdlib.h> #include <string.h> 函數原型&#xff1a; void trim(char *strIn, char *…

Educational Codeforces Round 73 (Rated for Div. 2)

A 很簡單的一個模擬&#xff0c;只要前面的數字有兩個以上就能合成后面的&#xff0c;我們進行一遍合成看能不能出現2048就可以了。 #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<iostream> #include&…

數據鏈路層: HDLC

一. 協議機 發送方和接收方. 同時有限狀態機把協議形式化為一個四元組 (S,M,I,T), 其中你S表示進程和信道可能進入的集合, M 表示數據幀的狀態, I 表示進程的初始狀態, T 表示兩兩狀態之間的轉化. 每個系統狀態可以分為發送狀態, 接受狀態和信道狀態. 把狀態用一個點進行表示,…

Miller_Rabin算法

為了測試一個大整數是不是素數&#xff0c;我們不能夠使用傳統的測試是否有因子的方法&#xff0c;因為那樣的時間復雜度至少也是O(n)O(n)O(n)&#xff0c;空間復雜度是O(n)O(n)O(n)&#xff08;使用線性篩數法&#xff09;&#xff0c;時間復雜度還好說&#xff0c;空間復雜度…

bob-tong 字符串函數之Strtok()函數

https://www.cnblogs.com/Bob-tong/p/6610806.html Strtok()函數詳解&#xff1a; 該函數包含在"string.h"頭文件中 函數原型&#xff1a; char* strtok (char* str,constchar* delimiters ); 函數功能&#xff1a; ??切割字符串&#xff0c;將str切分成一個個子…

數據鏈路層:SLIP(串型線路IP) PPP(點對點協議)

SLIP 沒有差錯控制, 傳輸時必須知道對方IP, 傳輸使用于低速業務 19.2k.應用非常受限 PPP協議 1. PPP協議功能 處理錯誤檢測 支持多協議(IP, IPX, DECnet 等) 連接時允許協商 IP 地址 允許身份驗證 2. PPP 的組成 串型鏈路上封裝數據報, 即支持異步鏈路也支持面向 比特…