Privacy Policy Cookie Policy Terms and Conditions 软件测试 - Wikipedia

软件测试

维基百科,自由的百科全书

软件测试的经典定义是在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估的过程。

軟體測試描述一種用來促進鑑定軟體正確性、完整性、安全性、和品質的過程。據此,您可能會想,軟體測試永遠不可能完整的確立任意電腦軟體的正確性。然而,在可計算理論──計算機科學的一個支派──一個簡單的數學證明推斷出下列結果:不可能完全解決所謂『當機』(指任意電腦程式是否會進入 無限迴圈、或者罷工並產生輸出) 問題。換句話說,軟體測試是一種實際輸出與預期輸出間的稽核或者比較過程。

軟體測試有許多方法,但對複雜的產品執行有效測試不僅僅是研究過程,更是創造並嚴格遵守某些呆板步驟的大事。測試的其中一個定義:“為了評估而質疑產品的過程”──這裡的“質疑”是測試員試著對產品做的事,而產品以測試者腳本行為反應作為回答。雖然大部分測試的智力過程不外乎回顧、檢查,然而“測試”這個辭意味著產品動態分析──讓產品流暢運行。程式品質可能,而且通常會,隨系統不同而有差異;不過某些公認特性是共通的:可靠性、穩定性、輕便性、易於維護、以及實用性。請參照至 ISO 標準 ISO 9126 有更詳盡的說明。

目录

[编辑] 软件测试介绍

软件测试一度被认为是编程能力偏低的员工的工作,直到今天,仍然有许多公司把优秀的人才放在编码上,也有更多公司让优秀的人才进行设计,可是很少公司让优秀的人才进行测试工作。实际的软件工程实践证明,让对软件思想有深刻理解的工程师进行软件测试,可以大幅度的提高软件质量。

软件测试和其他工程中的测试有很大的不同。人们可以牙咬来测试黄金硬度、“真金不怕火炼”测试它的熔点,用化学方法测试它的纯度,可是我们没有很完善的指标来描述软件产品:比如通过率等等。

在一千个软件拷贝中,如果一个发现了错误,实际上就是这些拷贝都有错误。更重要的是其他工业产品都有“通过检测”这个概念,可是软件产品的测试的目的现在仍然是:尽可能多的找到软件中的错误,而不是证明软件的正确。

[编辑] 黑盒测试与白盒测试

軟件測試一般分为白盒测试和黑盒测試。

[编辑] 黑盒测试

包括功能测试、系统测试(极限值测试、数据驱动测试或基于规格说明的测试等)。测试者不了解程序的内部情况。由於這類测试是利用将测试数据输入软件,然后确认输出结果是否正确的方法来对软件进行测试的。这种测试不需要了解软件的内部构造,是从用户的角度对程序进行的测试,只知道程序的输入、输出和系统的功能就可以,因此被称为黑盒测试。

功能测试 按照测试软件的各个功能划分进行有条理的测试,在功能测试部分要保证测试项覆盖所有功能和

各种功能条件组合;

系统测试 对一个完整的软件以用户的角度来进行测试,系统测试和功能测试的区别是,系统测试利用的所

有测试数据和测试的方法都要模拟成和用户的实际使用环境完全一样,测试的软件也是经过系统集成以后的完 整软件系统,而不是在功能测试阶段利用的每个功能模块单独编译后生成的可执行程序。

极限值测试 对软件在各种特殊条件,特殊环境下能否正常运行和软件的性能进行测试。
特殊条件一般指的

是软件规定的最大值,最小值,以及在超过最大,小值条件下的测试。
特殊环境一般指的是软件运行的机器处 于CPU高负荷,或是网络高负荷状态下的测试,根据软件的不同,特殊环境也有过不同。

性能测试 通常是测试软件的内存,CPU,磁盘的占有量和程序的相应速度。根据软件的种类不同和运行的操作系统

不同性能测试的侧重点也不同。


黑盒测试可以类比为中医的“望闻问切”,黑盒测试工程师通过对系统实际输出与预期输出的比较,来测试系统功能是否正常。

[编辑] 白盒测试

白盒测试通常也被称为单元测试、结构测试、逻辑驱动测试或基于程序本身的测试。就是将一个软件系统分成不同的单元逐一测试,因为这种测试需要利用debug工具一步一 步的运行来进行调试,需要了解每个单元的内部代码的构造、算法等信息,因此成为白盒测试,这是从程序设计者的角度对程序进行的测试。

[编辑] Alpha, Beta和Gamma测试

在软件开发过程中,在将软件发布到最终用户之前,通常需要经历一个通过测试对发布软件进行确认的阶段。这个阶段通常被称为Alpha阶段,该阶段中进行的测试也就相应地被称为Alpha测试

在Alpha测试的开始阶段,开发人员使用白盒测试技术对软件进行测试。随后,一个专门的测试团队使用黑盒测试和灰盒测试的技术对其进行测试。

当Alpha阶段完成后,开发过程进入到Beta阶段。在Beta阶段,用于Beta测试的产品被发放到一部分受控制的公司外部人员手中,通过这部分受控制的外部人员的测试和反馈,Beta阶段可以尽量发现产品中存在的缺陷和错误。在某些情况下,Beta版本可能被发放到范围更广的外部人员手中(例如,通过网站下载或是其他方式面向公众发放)。

Beta阶段的测试被称为Beta测试,Beta测试主要使用黑盒测试技术。当然,在Beta阶段,测试人员仍然可以使用白盒测试技术对产品继续进行测试,但我们一般不认为这些测试是Beta测试的一部分。简单来说,我们认为Beta测试就是由一部分受控制的客户进行的黑盒测试。

Gamma测试是一个很少被提及的非正式测试阶段,该测试阶段对应的是对“存在缺陷”产品的测试。考虑到任何产品都可以被称为“存在缺陷”的产品(测试只能发现产品中存在的问题,不能说明产品不存在问题),因此这个概念存在一定的不确定。

对Alpha和Beta测试常见的一个认识误区是“Beta测试=黑盒测试”。实际上,Alpha和Beta测试对应在软件产品发布之前的Alpha和Beta阶段,而白盒、黑盒和灰盒测试技术是从技术和方法层面对测试的描述,不应该将这两部分概念混淆。


[编辑] 系统测试

回归测试指在软件维护阶段,为了检测代码修改而引入的错误所进行的测试活动。回归测试是软件维护阶段的重要工作,有研究表明,回归测试带来的耗费占软件生命周期的1/3总费用以上。 与普通的测试不同,在回归测试过程开始的时候,测试者有一个完整的测试用例集可供使用,因此,如何根据代码的修改情况对已有测试用例集进行有效的复用是回归测试研究的重要方向,此外,回归测试的研究方向还涉及自动化工具,面向对象回归测试,测试用例优先级,回归测试用例补充生成等。

[编辑] 测试用例、测试脚本和测试场景

[编辑] 测试过程示例

[编辑] 参见

[编辑] 软件测试活动

[编辑] 代碼覆蓋率

代碼覆蓋率原本是種白箱測試活動。目標軟體通過特殊選項或者函式館編譯並且/或者執行在特殊環境──程式裡每個函式都被映射回原始碼裡函式起點──下。這個過程允許開發員與品管員檢視系統中在正常情況下極少或從未被讀寫的部分 (例如:例外處理之類) 並且幫助測試員確認最重要的情況 (函式點) 都被測過了。

測試員可檢視代碼覆蓋率測試結果來設計測試個案、相對應的輸入或者設定組以增加重要函式的代碼覆蓋率。兩種測試員常用的代碼覆蓋率形式:陳述式覆蓋率(或稱行覆蓋率) 以及路徑覆蓋率 (或稱邊覆蓋率)。行覆蓋率回報到測試完成時,執行過哪些行,或者記憶體大小。邊覆蓋率回報到測試完成時,哪些分支、或者程式決定點被執行過。正如覆蓋率的“率”字所言,這兩個都以百分比為單位。

通常代碼覆蓋率的工具與函式館要求的效能、記憶體、或者其他資源開銷不為正常的軟體營運接受。因此它們通常只存在實驗室裡。又,你可能會想到軟體裡的許多類無法一一通過這些代碼覆蓋率測試,雖然代碼覆蓋程度可通過分析但不是直接測試。

有些瑕疵也會受這些工具的影響。個別來說某些竟態條件 (race condition) 或者類似的對即時 (real time) 敏感度高的操作幾乎不可能在代碼覆蓋率測試環境下偵知;相反的這類的瑕疵只會帶來更多的測試碼開銷。

[编辑] 参考

  • 郑人杰,《-{计算机}-软件测试技术》,清华大学出版社
THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu