起一個好名字,意味著賦予事物一個承載意義、期望與身份的符號,并借此為其未來的發(fā)展鋪設(shè)一條充滿可能性的道路。它不僅僅是一個稱呼,更是一種深遠(yuǎn)的祝福、一個無聲的預(yù)言、一個身份認(rèn)同的起點,其象征未來的意義體現(xiàn)在以下幾個方面: 1. 承載期望與愿景: 個人: 父母給孩子取名,往往寄托著對孩子未來的期望(如“志遠(yuǎn)”、“嘉慧”、“安然”)、對品德的期許(如“仁杰”、“守信”、“思齊”)、對人生狀態(tài)的祝愿(如“樂康”、“欣悅”、“安寧”)或?qū)易鍌鞒械难永m(xù)(如特定的字輩、紀(jì)念先祖)。 企業(yè)/品牌: 一個好的公司或品牌名稱,需要體現(xiàn)其核心價值(如“誠信”、“創(chuàng)新”)、市場定位(如“高端”、“親民”)、行業(yè)特性(如“迅捷”、“穩(wěn)健”)以及未來的發(fā)展藍(lán)圖(如“環(huán)球”、“未來”、“領(lǐng)航”)。 項目/活動: 名稱需要清晰傳達(dá)項目/活動的目標(biāo)(如“曙光計劃”、“春風(fēng)行動”)、核心理念(如“和諧共生”、“智慧未來”)以及想要實現(xiàn)的積極影響。 2. 塑造第一印象與身份認(rèn)同: 名字是“第一張名片”: 一個恰當(dāng)、響亮、富有內(nèi)涵的名字能迅速在他人心中建立積極的初步印象,激發(fā)好奇心和好感度。這為未來的互動和關(guān)系建立打下了基礎(chǔ)。 定義身份核心: 名字是個人、組織或事物最核心的身份標(biāo)識。它幫助確立“我是誰”、“我們代表什么”。一個強(qiáng)大的名字能強(qiáng)化內(nèi)部成員的歸屬感和自豪感,也幫助外界快速理解其本質(zhì)。 3. 蘊(yùn)含潛力與可能性: “名正則言順”: 一個寓意積極、方向明確的名字,仿佛為未來的發(fā)展指明了一個方向。它像一個無形的燈塔,引導(dǎo)著個體或組織朝著名字所蘊(yùn)含的美好愿景努力。 激發(fā)內(nèi)在動力: 一個充滿力量和希望的名字,本身就能對擁有者(人或組織)產(chǎn)生積極的暗示和心理激勵,鼓勵其努力去“配得上”這個名字所代表的品質(zhì)和未來。 4. 象征連接與傳承: 連接過去與未來: 名字常常承載著歷史(家族姓氏、文化典故)、當(dāng)下(時代特征、父母心境)和對未來的展望。它像一個紐帶,連接著起源和歸宿。 建立情感紐帶: 一個被用心賦予、飽含深情的名字,能建立起擁有者與命名者(如父母與孩子)之間深厚的情感聯(lián)系。這份情感是未來關(guān)系的重要基石。 傳承價值: 名字中蘊(yùn)含的價值觀(如勇敢、智慧、仁愛)或精神(如探索、堅韌、合作)是希望在未來得以延續(xù)和發(fā)揚(yáng)光大的。 5. 在市場中建立差異化與價值: 品牌資產(chǎn)的核心: 在商業(yè)領(lǐng)域,一個好的名字是品牌最核心的無形資產(chǎn)之一。它幫助在擁擠的市場中脫穎而出,建立獨特的品牌形象,承載品牌承諾,并最終影響消費者未來的購買決策和忠誠度。一個有遠(yuǎn)見的名字能為品牌未來的價值增長奠定基礎(chǔ)。 總結(jié)來說,“起一個好名字意味著什么,象征著未來”的核心在于: 意味著: 深思熟慮地注入期望、定義身份、賦予意義、建立連接、并期望其成為未來發(fā)展的重要助力。 象征著: 一個充滿希望的起點、一個有待實現(xiàn)的藍(lán)圖、一種無形的引導(dǎo)力量、以及一份承載著祝福與責(zé)任的傳承。 它是對未來潛力的一種具象化表達(dá)和積極召喚。 因此,起名絕非隨意之舉,而是一項面向未來的、充滿創(chuàng)造力和責(zé)任感的儀式。一個好的名字,如同一顆精心挑選的種子,蘊(yùn)含著破土而出、茁壯成長、最終綻放出美好未來的無限可能。它既是當(dāng)下的承諾,也是通往未來的第一聲回響。

不知道測試什么?這些是你需要知道的軟件測試類型和常識

有多少軟件測試類型呢?

我們作為測試人員了解很多種不同的軟件測試類型,例如功能測試(Functional Test)、非功能測試、自動測試、敏捷測試、以及它們的各種子類型. 盡管在我們的測試過程中會接觸很多種測試類型, 或者聽說過某些測試類型,但是很少人敢說精通所有的測試類型.

每個測試類型都有自己的特點、優(yōu)勢和劣勢。所以我寫這篇文章,科普一下我們今天最常用的測試類型.

不同的軟件測試類型

下面是軟件測試的通用類型列表

功能測試類型:

單元測試(Unit testing)

集成測試(Integration testing)

系統(tǒng)測試(System testing)

健全性測試(Sanity testing)

冒煙測試(Smoke testing)

接口測試(Interface testing)

回歸測試(Regression testing)

Beta/驗收測試(Beta/Acceptance testing)

非功能測試類型:

性能測試(Performance Testing)

負(fù)載測試(Load testing)

壓力測試(Stress testing)

容量測試(Volume testing)

安全測試(Security testing)

兼容性測試(Compatibility testing)

安裝測試(Install testing)

恢復(fù)測試(Recovery testing)

可靠性測試(Reliability testing)

可用性測試(Usability testing)

一致性測試(Compliance testing)

本地化測試(Localization testing)

來看看這些測試類型的細(xì)節(jié)

0) A/B測試(A/B Testing)

不知道測試什么?這些是你需要知道的軟件測試類型和常識

顧名思義, A/B測試就是準(zhǔn)備兩個(A/B)或兩個以上的版本,讓不同的用戶來隨機(jī)訪問這些版本,收集各群組的用戶體驗數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù),最后分析、評估出最好版本,正式采用。如上圖,谷歌使用A/B測試來決定導(dǎo)航應(yīng)該是紅色還是藍(lán)色。

1) Alpha測試(Alpha Testing)

Alpha測試這是軟件工程中很常見的測試類型。它的目標(biāo)就是盡可能地在發(fā)布到市場或交付給用戶之前找出所有的問題和缺陷。

Alpha測試一般在開發(fā)的末段且在Beta測試之前進(jìn)行。在這個測試過程中可能會驅(qū)動開發(fā)者進(jìn)行一些小(minor)的設(shè)計變動. Alpha測試一般在開發(fā)者網(wǎng)站進(jìn)行,即只對開發(fā)者或內(nèi)部用戶開放,一般可以為此類測試創(chuàng)建內(nèi)部虛擬的用戶環(huán)境。

一般大型的軟件項目都有規(guī)范化的軟件版本周期:

不知道測試什么?這些是你需要知道的軟件測試類型和常識

Pre-alpha: 有時候軟件會在Alpha或Beta版本前先發(fā)布Pre-alpha版本, 相比Alpha和Beta,這是一個功能不完整的版本

Alpha: Alpha版本功能還沒完善,需要進(jìn)一步測試。Alpha版本通常會發(fā)送到開發(fā)軟件的組織或某群體中的軟件測試者進(jìn)行內(nèi)部測試。

Beta: 一般Beta版本會包含所有功能,但可能又有一些Bug,需要調(diào)試反饋。 Beta版本是軟件最早對外公開的軟件版本,由公眾(通常為公司外的第三方開發(fā)者和業(yè)余玩家)參與測試。

Release Candidate(rc): 發(fā)布候選版本,如果沒有出現(xiàn)問題則可發(fā)布成為正式的版本。這個版本包含完整且比較穩(wěn)定的功能

舉一個典型的例子, iOS13的發(fā)布計劃:

June 3: iOS 13 beta 1 and first look at WWDC 2019 # -> WWDC后就可以裝的,相當(dāng)于pre-alpha或Alpha階段吧

June 17: iOS 13 beta 2 launched for developers

June 24: iOS 13 public beta release date for adventurous testers # -> 公開Beta版本,相當(dāng)于上面說的Beta階段

July 3: iOS 13 developer beta 3 launch with some new features

July 8: iOS 13 public beta 2 release date

Early September 2019: iOS 13 Golden Master (final dev beta) # -> 九月初,該發(fā)最終Beta版本了,相當(dāng)于進(jìn)入RC階段了

Mid-September 2019: iOS 13 likely to launch with new 2019 iPhones # -> 正式版本

復(fù)制代碼

現(xiàn)在很多開源項目,已經(jīng)淡化了瀑布式的軟件版本周期,變成一種持續(xù)(Continuous)的、常態(tài)化的行為, 例如Firefox:

不知道測試什么?這些是你需要知道的軟件測試類型和常識

2) 驗收測試(Acceptance Testing)

驗收測試通常是部署軟件之前的最后一個測試操作, 也稱為交付測試, 由最終客戶執(zhí)行,他們會驗證端到端(end to end)的系統(tǒng)流程是否符合業(yè)務(wù)需求,以及功能是否是滿足最終用戶的需求。只有當(dāng)所有的特性和功能按照期望的運行,客戶才會接受軟件

這是測試的最后階段,在驗收測試之后,軟件將投入生產(chǎn)環(huán)境. 所以它也叫用戶驗收測試(UAT)

不知道測試什么?這些是你需要知道的軟件測試類型和常識

舉個例子,驗收測試就相當(dāng)于收快遞, 包裹是軟件、你就是客戶,是驗收方,如果貨物不符合你的要求,是要退貨的。

3) 臨時測試(Ad-hoc Testing)

Ad-hoc中文應(yīng)該理解為臨時的意思。顧名思義,這種測試是在臨時基礎(chǔ)上進(jìn)行的, 有時候也稱為隨機(jī)測試。即沒有參考測試用例、沒有針對該測試的任何計劃和文檔。Ad-hoc測試的目的就是通過執(zhí)行隨意的流程或任意的功能來找出應(yīng)用的缺陷和問題

Ad-hoc測試一種非正式的方法,可以由項目中的任何人執(zhí)行。盡管沒有測試用例很難識別缺陷,但是有些時候在Ad-hoc測試期間發(fā)現(xiàn)的缺陷可能無法使用現(xiàn)有的測試用例來識別, 也就是說它一般用來發(fā)現(xiàn)‘意外’的缺陷.

4) 可訪問性測試(Accessibility Testing)

可訪問性測試的目的是確定軟件或應(yīng)用程序是否可供殘疾人使用。殘疾是指聾人,色盲,智障人士,失明者,老年人和其他殘疾人群體。這里會執(zhí)行各種檢查,例如針對視覺殘疾的字體大小測試,針對色盲的顏色和對比度測試等等。

不同平臺、不同應(yīng)用類型對可訪問性支持情況不太一樣,比如iOS相比其他操作系統(tǒng)則更重視可訪問, 而國外比國內(nèi)更重視可訪問性。

不知道測試什么?這些是你需要知道的軟件測試類型和常識

5) Beta測試(Beta Testing)

上文Alpha測試已經(jīng)提及Beta測試, Beta測試是一種正式的軟件測試類型,在將產(chǎn)品發(fā)布到市場或者實際最終用戶之前,由客戶在真實的應(yīng)用環(huán)境中執(zhí)行。

執(zhí)行Beta測試目的是確保軟件或產(chǎn)品中沒有重大故障,并且滿足最終用戶的業(yè)務(wù)需求。當(dāng)客戶接受軟件時,Beta測試才算通過。

通常,此類測試由最終用戶或其他人完成。這是在將應(yīng)用發(fā)布作為商業(yè)用途之前完成的最終測試。通常,發(fā)布的軟件或產(chǎn)品的Beta版本僅限于特定區(qū)域中的特定數(shù)量的用戶。 所以最終用戶實際使用軟件后會將一些問題反饋給公司。公司可以在全面發(fā)布之前采取必要的措施。

Beta測試在正式版本之前也可能會迭代進(jìn)行多次.

6) 后端測試(Back-end Testing)

前端應(yīng)用輸入的數(shù)據(jù),一般都會存儲在數(shù)據(jù)庫,所以針對數(shù)據(jù)庫的這類測試稱為數(shù)據(jù)庫測試或者后端測試. 市面有不同的數(shù)據(jù)庫,如SQL Server,MySQLOracle等。數(shù)據(jù)庫測試會涉及表結(jié)構(gòu),模式,存儲過程,數(shù)據(jù)結(jié)構(gòu)等。

后端測試一般不會涉及GUI,測試人員通過某些手段直接連接到數(shù)據(jù)庫,從而可以容易地運行一些數(shù)據(jù)庫請求來驗證數(shù)據(jù)。通過后端測試可以發(fā)現(xiàn)一些數(shù)據(jù)庫問題,比如數(shù)據(jù)丟失、死鎖、數(shù)據(jù)損壞。這些問題在系統(tǒng)投入生產(chǎn)環(huán)境之前進(jìn)行修復(fù)至關(guān)重要

7) 瀏覽器兼容測試(Browser Compatibility Testing)

不知道測試什么?這些是你需要知道的軟件測試類型和常識

這是兼容性測試的子類型,由測試團(tuán)隊執(zhí)行. 瀏覽器兼容測試主要針對Web應(yīng)用,用于確保軟件可以在不同瀏覽器或操作系統(tǒng)中運行; 或者驗證Web應(yīng)用程序是否支持在瀏覽器的所有版本上運行, 以確定應(yīng)用最終兼容的范圍.

瀏覽器兼容測試是前端開發(fā)者繞不開的坑。

我們有很多策略來應(yīng)對瀏覽器兼容性,比如漸進(jìn)增強(qiáng)或者優(yōu)雅降級, 還有制定瀏覽器兼容規(guī)范;

為了撫平瀏覽器之間的差異,我們會使用各種特性檢測工具(Modernizr), 還有各種polyfill(CSS Normaliz, polyfill/shim, css-autoprefixer);

當(dāng)然為了測試跨瀏覽器兼容性,還要一些輔助工具,例如BrowserStack, 對于我們這些小團(tuán)隊,只能下一堆Portable(Portable瀏覽器運行時相互隔離的, 所以不會存在配置文件等沖突問題) 瀏覽器,手工測試了。

8) 后向兼容測試(Backward Compatibility Testing)

向后兼容測試, 用于驗證新開發(fā)或更新的軟件是否能在舊版本的環(huán)境中運行。

比如向后兼容測試會檢查新版軟件是否可以正確地處理舊版本軟件創(chuàng)建的文件格式。例如新版的Office 2016是否可以打開2012創(chuàng)建的文件。

同理也可以檢查新版本是否可以兼容舊版本軟件創(chuàng)建的數(shù)據(jù)表、數(shù)據(jù)文件、數(shù)據(jù)結(jié)構(gòu)、配置文件。

任何軟件更新應(yīng)該在先前版本的基礎(chǔ)之上良好地運行

9) 黑盒測試(Black Box Testing)

不知道測試什么?這些是你需要知道的軟件測試類型和常識

黑盒測試不考慮軟件的內(nèi)部系統(tǒng)設(shè)計,它基于需求和功能進(jìn)行測試, 只關(guān)心系統(tǒng)的輸入/輸出以及功能流程。

換句話說黑盒測試從用戶的角度出發(fā)針對軟件界面、功能及外部結(jié)構(gòu)進(jìn)行測試,而不考慮程序內(nèi)部邏輯結(jié)構(gòu).

黑盒測試下面有很多子類,例如集成測試、系統(tǒng)測試、大部分非功能性測試

關(guān)于黑盒測試的優(yōu)缺點以及測試類型可以看這里

10) 邊界值測試(Boundary Value Testing)

邊界值測試, 測試應(yīng)用處于邊界條件(boundary level)的行為。很多邊界條件開發(fā)者是很難考慮周到的,所以才有一個專門的測試類型來驗證這種情況

邊界值測試檢查應(yīng)用處于邊界值時是否存在缺陷。邊界值測試通常用于測試不同范圍的數(shù)字, 每個范圍都有一個上下邊界,邊界測試則是針對這些邊界值進(jìn)行測試。

比如數(shù)字范圍為1-500, 那么邊界值測試會在這些值上進(jìn)行驗證: 0、1、2、499、500、501

11) 分支測試(Branch Testing)

這是白盒測試的子類型,在單元測試中實施. 顧名思義,分支測試表示測試要覆蓋程序代碼的各種條件分支, 避免遺漏缺陷。分支覆蓋是單元測試覆蓋率的一個指標(biāo)之一

12) 比較測試(Comparison Testing)

比較測試,將產(chǎn)品的優(yōu)點和弱點與舊版本或者同類(競品)產(chǎn)品進(jìn)行比較.

比如類似王自如這種數(shù)碼測評欄目,評測一個手機(jī)或者其他數(shù)碼產(chǎn)品時,一般會橫向和友商產(chǎn)品進(jìn)行比較,有時候也會縱向和上一代產(chǎn)品比較.

還有一種比較典型的例子就是和行業(yè)的領(lǐng)導(dǎo)者比較,比如我們做IM的,會經(jīng)常和微信比較: '你這個應(yīng)用的啟動速度怎么比微信慢這么多?'

13) 兼容性測試(Compatibility Testing)

這是一個大類, 兼容性測試用于驗證應(yīng)用在不同環(huán)境、web服務(wù)器、硬件、網(wǎng)絡(luò)條件下的行為。兼容性測試確保軟件可以在不同的配置、不同的數(shù)據(jù)庫、不同的瀏覽器,以及它們不同的版本下運行。兼容性測試由測試團(tuán)隊實施

14) 組件測試(Component Testing)

組件測試(此組件非GUI組件, 取組合測試可能更好理解一點),一般也稱為模塊測試(Module Testing), 一般由開發(fā)者在完成單元測試后執(zhí)行。組件測試將多個功能組合起來作為單一的整體進(jìn)行測試,目的是發(fā)現(xiàn)多個功能在相互連接起來之后的缺陷。

組件測試可大可小,小到函數(shù)級別或者類級別的組合,大可以大到幾個單獨的頁面、模塊、子系統(tǒng)的組合。 舉一個前端例子,將多個頁面路由組合起來,測試它們的流程跳轉(zhuǎn),就屬于組件測試。

不知道測試什么?這些是你需要知道的軟件測試類型和常識

15) 端到端測試(End-to-End Testing)

端到端測試也是一種黑盒測試類型,類似于系統(tǒng)測試. 端到端測試在模擬的、完整的、真實應(yīng)用環(huán)境下模擬真實用戶對應(yīng)用進(jìn)行測試,比如應(yīng)用會和數(shù)據(jù)庫交互、會使用網(wǎng)絡(luò)通信、或者在適當(dāng)?shù)那闆r下和其他硬件、應(yīng)用、系統(tǒng)進(jìn)行交互. 端到端是指從一個端點到另一個端點的意思,所以端到端測試重點用于測試模塊和模塊之間的協(xié)調(diào)性。

當(dāng)應(yīng)用是分布式系統(tǒng)或者需要和其他外部系統(tǒng)協(xié)同時,端到端測試扮演著非常重要的角色, 它可以全面檢查以確保軟件在不同平臺和環(huán)境產(chǎn)品能準(zhǔn)確地交互。端到端測試有以下目的:

確保應(yīng)用可以和外部系統(tǒng)之間良好的協(xié)調(diào)。對于前端來說,是確保頁面和后端之間良好協(xié)調(diào)

檢查從源系統(tǒng)到目標(biāo)系統(tǒng)的所有系統(tǒng)流

從最終用戶角度驗證需求識別異構(gòu)環(huán)境中的問題

前端也有很多自動化的端到端測試工具,比如nightwatch,通過它們可以模擬用戶對頁面進(jìn)行操作,從而檢驗整個應(yīng)用流程是否正常和符合需求:

不知道測試什么?這些是你需要知道的軟件測試類型和常識

因為和系統(tǒng)測試很相似,所以它們也被經(jīng)常拿來比較

16) 等價劃分(Equivalence Partitioning)

等價劃分, 這是一種黑盒測試的測試技術(shù). 通過等價劃分,可以將所有的輸入數(shù)據(jù)合理地劃分為多個分組,我們只需在每個分組中取一個數(shù)據(jù)作為測試的輸入條件, 這樣可以實現(xiàn)用少量代表性的測試數(shù)據(jù)取得較好的測試結(jié)果.

所以說這個測試的目的: 是在不導(dǎo)致缺陷的前提下,移除指定分組中的重復(fù)的用例, 簡化測試的工作

不知道測試什么?這些是你需要知道的軟件測試類型和常識

比如一個程序應(yīng)用接受-10到+10之間的值,使用等價分區(qū)方法可以劃分為三個分組: 0、負(fù)值、正值. 接下來的測試只需從這個三個分組中取一個成員進(jìn)行測試, 而不需要-10到+10每個成員都測試一遍.

17) 實例測試(Example Testing)

It means real-time testing. Example testing includes the real-time scenario, it also involves the scenarios based on the experience of the testers.

實例測試意味著實時測試。實例測試包含了實時場景、另外還涉及基于測試人員經(jīng)驗的場景。

這里不是特別能理解這個測試類型,所以貼上原文。知道的告訴我呀

18) 探索測試(Exploratory Testing)

探索性測試有點類似于Ad-Hoc測試. 探索性測試是由測試團(tuán)隊進(jìn)行的非正式測試。此測試的目的是探索應(yīng)用并查找應(yīng)用中存在的缺陷。像探險一樣,在測試期間是有一定幾率發(fā)現(xiàn)的重大、甚至可能導(dǎo)致系統(tǒng)故障的缺陷.

在探索性測試期間,建議跟蹤記錄好測試的流程、以及開始該流程之前的活動記錄, 方便復(fù)現(xiàn)bug.

探索測試不需要任何文檔和測試用例.

19) 功能測試(Functional Testing)

功能測試是一個大類, 又稱為行為測試, 功能測試會忽略內(nèi)部實現(xiàn)而關(guān)注組件的輸出,目的是驗證是否符合需求,這是一種面向功能需求的黑盒測試類型。關(guān)于功能測試的細(xì)節(jié)請看這里

功能測試是相對非功能測試而言的, 功能測試需要關(guān)心功能或者業(yè)務(wù),需要業(yè)務(wù)耦合程度高;而非功能測試則是通用的,比如壓力測試、負(fù)載測試,這些測試都有通用的工具來支持,不需要或很少定制化操作.

20) GUI測試(Graphical User Interface (GUI) Testing)

GUI測試的目的是根據(jù)業(yè)務(wù)需求驗證GUI。在詳細(xì)設(shè)計文檔和GUI模型(UI設(shè)計文檔)中一般會提到應(yīng)用期望的GUI.

常見的GUI測試包括測試屏幕上顯示的按鈕和輸入字段的大小、表格中所有文本、表格或內(nèi)容的對齊規(guī)則等等. 如果團(tuán)隊有UI設(shè)計規(guī)范,還會驗證是否符合設(shè)計規(guī)范

21) 大猩猩測試(Gorilla Testing)

大猩猩測試是由測試人員執(zhí)行的測試類型,有時也由開發(fā)人員執(zhí)行。在大猩猩測試中,對模塊中的一個模塊或功能進(jìn)行了徹底和嚴(yán)格的測試。原文沒有說出大猩猩測試的精髓,大猩猩測試會對一個功能或模塊進(jìn)行重復(fù)‘上百次’的測試, 人類根本受不了這樣子的測試方式,所以大猩猩測試的另一個別名是‘令人沮喪的測試(Frustrating Testing)’

這種測試的目的是檢查應(yīng)用程序的穩(wěn)健性(robustness)

22) 樂觀路線測試(Happy Path Testing)

樂觀路線測試的目標(biāo)是在正常流程上成功測試應(yīng)用。它不會考慮各種負(fù)面或異常情況。重點只關(guān)注于驗證應(yīng)用在有效和合法輸入的條件下生成期望的輸出. 比如銀行付款,只考慮賬戶有錢的正常狀態(tài)

23) 增量集成測試(Incremental Integration Testing)

增量集成測試是一種自下而上的測試方法,即在添加新功能時立即集成應(yīng)用程序進(jìn)行連續(xù)測試。應(yīng)用程序功能和模塊應(yīng)該足夠獨立,以便單獨測試。這通常由程序員或測試人員完成。

24) 安裝卸載測試(Install/Uninstall Testing)

不知道測試什么?這些是你需要知道的軟件測試類型和常識

安裝和卸載測試是在不同硬件或軟件環(huán)境下的不同操作系統(tǒng)上的進(jìn)行完整/部分的安裝、升級、卸載、回滾等測試. 常用于桌面端應(yīng)用

25) 集成測試(Integration Testing)

集成測試是指將所有模塊集成之后,驗證合并后的功能. 模塊通常是代碼模塊、單個應(yīng)用、網(wǎng)絡(luò)上的客戶端和服務(wù)器應(yīng)用等等。

不知道測試什么?這些是你需要知道的軟件測試類型和常識

集成測試一般在單元測試之后,所以單元測試是集成測試的基礎(chǔ),沒有進(jìn)行單元測試的集成測試是不靠譜的。所以最簡單的形式是:'把兩個已經(jīng)測試過的單元組合成一個組件,測試它們之間的接口'。也就是說集成測試在單元測試的基礎(chǔ)之上,將單元測試中獨立的單元合并起來,驗證它們的協(xié)調(diào)性, 合并后的組件又是一個新的‘單元’,這樣逐步合并測試,最終形成完整的應(yīng)用程序。

這種類型的測試常用于B/S軟件和分布式系統(tǒng)。

26) 負(fù)載測試(Load Testing)

它是一種非功能性測試,負(fù)載測試的目的是檢查系統(tǒng)可以承受多少負(fù)載而不會降低性能, 或者說確定最大工作負(fù)載是多少。

負(fù)載測試有助于查找特定負(fù)載下系統(tǒng)的最大容量以及導(dǎo)致軟件性能下降的任何原因??梢允褂?span id="lvtb1rv" class="candidate-entity-word" data-gid="16941392">JMeter,LoadRunner,WebLoad,Silk執(zhí)行程序等工具執(zhí)行負(fù)載測試。

不知道測試什么?這些是你需要知道的軟件測試類型和常識

負(fù)載測試經(jīng)常和性能測試、壓力測試、穩(wěn)定性測試等聯(lián)系在一起。如上圖(來源于淘寶性能白皮書). 其中TPS(Transation Per Second)指的是每秒鐘系統(tǒng)可以處理的交易或事務(wù)的數(shù)量; Server Resource指的是系統(tǒng)資源占有.

性能測試. 主要位于a-b之間. 在系統(tǒng)設(shè)計初期就會規(guī)劃一個預(yù)期目標(biāo), 比如給定資源Ax,a點就是性能期望值。也就是說在給定固定資源Ax的情況下,如果TPS可以達(dá)到a點甚至更高,就說明系統(tǒng)性能達(dá)到或者好于預(yù)期. 通過性能測試可以驗證系統(tǒng)的處理能力有沒有達(dá)到預(yù)期

負(fù)載測試. 位于b-c之間。對系統(tǒng)不斷增加并發(fā)請求,直到系統(tǒng)的某項或者多項指標(biāo)達(dá)到安全的臨界值,如上圖中的c,這個c就是所謂的最大負(fù)載量。后面再增加請求壓力,系統(tǒng)的處理能力不但不能提高,返回會下降. 通過壓力測試可以得出系統(tǒng)最大的安全負(fù)載值

壓力測試. 位于c-d之間。在超過安全負(fù)載的情況下,繼續(xù)對系統(tǒng)增加壓力,直到達(dá)到崩潰點, 即上圖的d. 通過壓力測試可以得出系統(tǒng)的最大承受能力

穩(wěn)定性測試. 位于a-d之間。在a、b、c、d不同的點(代表特定的硬件、軟件和網(wǎng)絡(luò)環(huán)境),讓系統(tǒng)運行一段較長的時間,檢測系統(tǒng)在不同條件下的系統(tǒng)運行的穩(wěn)定性。

另外也推薦閱讀<<大型網(wǎng)站技術(shù)架構(gòu)>>這本書

27) 猴子測試(Monkey Testing)

猴子測試是由測試人員進(jìn)行的,即把自己當(dāng)成猴子,在沒有任何知識背景或者理解應(yīng)用前提下,隨意輸入和操作。

猴子測試的目標(biāo)是通過提供隨機(jī)輸入值/數(shù)據(jù)來檢查應(yīng)用程序或系統(tǒng)是否崩潰。 猴子是隨機(jī)執(zhí)行的,沒有測試用例, 也沒有必要了解系統(tǒng)的全部功能

28) 變異測試(Mutation Testing)

變異測試(或者說可變性測試)是一種白盒測試,這是一種和單元測試反著來的測試類型。

不知道測試什么?這些是你需要知道的軟件測試類型和常識

通常單元測試的思路是通過測試用例來驗證代碼是否有效可靠,而變異測試是反過來. 它首先更改其中一個程序的源代碼,再跑單元測試,如果單元測試通過則可能說明測試用例沒有效果,或者測試用例沒有覆蓋到這處代碼變異.

所以說變異測試可以反過來驗證你的測試用例是否有效, 還有可以幫助我們找出一些無法被當(dāng)前測試所防止的潛在錯誤.

29) 悲觀測試(Negative Testing)

悲觀測試和樂觀路線測試相反, 它要求測試者要具有“打破”常規(guī)的態(tài)度,考慮各種異常情況, 使用各種邪惡的、不懷好意、不合法的操作來測試系統(tǒng)。悲觀測試會使用不正確的數(shù)據(jù)、無效數(shù)據(jù)或輸入來進(jìn)行驗證。它驗證系統(tǒng)是否可以識別異常情況,并按預(yù)期運行。

30) 非功能測試(Non-Functional Testing)

每個大型的組織都有一個獨立的團(tuán)隊,通常稱為非功能測試(NFT)團(tuán)隊或性能團(tuán)隊。

非功能性測試涉及測試非功能性需求,如負(fù)載測試、壓力測試、安全性、容量,恢復(fù)測試等等. NFT測試的目標(biāo)是確保軟件或應(yīng)用程序的響應(yīng)時間是否滿足業(yè)務(wù)需求。

例如加載任何頁面或系統(tǒng)都不應(yīng)該花費太多時間,并且在負(fù)載峰值期間應(yīng)該維持良好運行狀態(tài)。

31) 性能測試(Performance Testing)

這個術(shù)語通常與“壓力”和“負(fù)載”測試互換使用。性能測試用于檢查系統(tǒng)是否滿足性能要求。它會使用不同的性能和負(fù)載工具來執(zhí)行此測試。

性能測試這個范圍比較大,廣義上的性能測試包括了上文提到的負(fù)載測試、壓力測試、穩(wěn)定性測試、容量測試等等。狹義的性能測試則是指在特定資源條件下,測試系統(tǒng)能否達(dá)到期望值, 也就是基線測試(Baseline Test).

總結(jié)一下性能測試的類型:

基線測試(Baseline Test): 在給定的資源下,測試最佳的性能,用作后續(xù)測量的參考‘基線’。注意基線測試和基準(zhǔn)測試是有區(qū)別的, 這么理解,基準(zhǔn)是你想達(dá)到的,比如100短跑世界紀(jì)錄,基線是你的成績。

負(fù)載測試(Load Test): 在預(yù)期峰值的生產(chǎn)負(fù)載下測量系統(tǒng)的性能。上文負(fù)載測試已經(jīng)大概介紹了

穩(wěn)定性測試(Endurance Test): 在指定負(fù)載下,長時間測量系統(tǒng)的穩(wěn)定性

壓力測試(Stress Test): 測試極端條件下的系統(tǒng)性能

32) 恢復(fù)測試(Recovery Testing)

恢復(fù)測試用于驗證應(yīng)用或系統(tǒng)中崩潰或災(zāi)難中恢復(fù)的程度. 確定系統(tǒng)是否能夠在災(zāi)難發(fā)生后繼續(xù)運行。

比如應(yīng)用通過網(wǎng)絡(luò)電纜接收數(shù)據(jù),突然斷開了網(wǎng)絡(luò)電纜的連接, 過一段時間,再插上網(wǎng)線, 系統(tǒng)應(yīng)該開始恢復(fù)由于網(wǎng)絡(luò)電纜拔出而丟失連接的數(shù)據(jù)

33) 回歸測試(Regression Testing)

在修改任意模塊或者功能后,將應(yīng)用作為一個整體進(jìn)行測試,稱為回歸測試。回歸測試的目的就是驗證在軟件原有的功能變動后是否保持完整性.

有觀點認(rèn)為回歸測試就是回歸測試是指重復(fù)執(zhí)行以前的全部或部分相同的測試工作, 其實不是不無道理。而且因為局部修改而牽一發(fā)動全身的意外在平時開發(fā)中并不少見,這種意外性就是回歸測試的存在的目的.

因為在回歸測試中很難覆蓋所有系統(tǒng),通常最好使用自動化測試工具進(jìn)行這些類測試。比如每次修改完代碼,跑單元測試來確保不影響確保其他軟件單元。

在前端中組件快照測試(Snapshot Testing)和一些CSS UI測試,都是屬于回歸測試類型,它們的原理都是和上一次測試生成的結(jié)果進(jìn)行比對,以確保沒有意外的修改:

不知道測試什么?這些是你需要知道的軟件測試類型和常識

34) 基于風(fēng)險的測試(Risk-Based Testing (RBT))

在基于風(fēng)險的測試中,功能或需求將根據(jù)其優(yōu)先級進(jìn)行測試?;陲L(fēng)險的測試會優(yōu)先測試高度關(guān)鍵的功能,因為這些功能對業(yè)務(wù)影響最大或者故障概率非常高. 而優(yōu)先級由業(yè)務(wù)需求決定,因此一旦為所有功能設(shè)置了優(yōu)先級,則應(yīng)該首先執(zhí)行高優(yōu)先級功能或測試用例,然后再執(zhí)行低優(yōu)先級功能。 低優(yōu)先級功能可以在時間充裕時測試,或者不測試。

基于風(fēng)險的測試應(yīng)該在‘不夠時間來測試整個應(yīng)用,但是又要按時交付軟件’的情況下執(zhí)行,通常還需要客戶和高級管理層的討論和批準(zhǔn)之后才進(jìn)行

35) 完整性測試(Sanity Testing)

完整性測試用于確定一個新的軟件版本是否可以開始進(jìn)行正式的測試,如果一個應(yīng)該在一開始使用時就崩潰,那么就說明系統(tǒng)還不夠穩(wěn)定,沒有必要進(jìn)行下一步測試。這種情況應(yīng)該打回給開發(fā),以免浪費時間

以我們公司為例:

不知道測試什么?這些是你需要知道的軟件測試類型和常識

在軟件設(shè)計階段,測試團(tuán)隊就會為編寫冒煙測試用例;

開發(fā)團(tuán)隊在提交版本給測試之前會自己跑一下冒煙用例, 確保沒有重大故障;

將版本提交給測試團(tuán)隊后,測試團(tuán)隊就會先跑一下完整性測試,檢查一下有沒有重大的,影響測試進(jìn)程的bug,如果有則退回開發(fā)

如果通過了完整性測試, 則進(jìn)行冒煙測試,如果冒煙測試沒有通過也會立即打回開發(fā)。

順利通過完整性測試和冒煙測試之后才會進(jìn)入正式測試階段。

這么做的目的之一就是為了降低測試團(tuán)隊的工作負(fù)擔(dān),因為他們要對接多個開發(fā)團(tuán)隊的測試任務(wù)。

36) 安全測試(Security Testing)

不知道測試什么?這些是你需要知道的軟件測試類型和常識

安全也是一個龐大的學(xué)科,而且知識每天都在更新,所以安全測試一般由特殊的安全團(tuán)隊執(zhí)行,他們以各種黑客手段對系統(tǒng)進(jìn)行滲透測試。

安全測試旨在確保應(yīng)用或網(wǎng)站免受內(nèi)部和外部威脅的侵害。這個測試包括預(yù)防惡意程序、病毒; 檢驗授權(quán)和身份驗證過程的安全性。

它還會檢查軟件對任何黑客攻擊和惡意程序的反應(yīng)方式,以及在遭到黑客攻擊后如何維護(hù)軟件以保護(hù)數(shù)據(jù)安全

37) 冒煙測試(Smoke Testing)

冒煙測試,每當(dāng)開發(fā)團(tuán)隊提交新的構(gòu)建時,軟件測試團(tuán)隊就會先驗證構(gòu)建, 并確保不存在重大問題, 如果存在重大問題會直接打回開發(fā)團(tuán)隊.

如何通俗地理解冒煙測試呢?這個屬于來源于硬件行業(yè),對一個硬件或硬件組件進(jìn)行更改或修復(fù)后,直接給設(shè)備加電。如果沒有冒煙,則該組件就通過了測試。舉個例子,給三星Note7加電,如果沒爆炸,就說明通過了‘冒煙測試’(感覺當(dāng)手機(jī)測試者不容易,容易有生命危險)?

測試團(tuán)隊在確保構(gòu)建穩(wěn)定后才會進(jìn)一步執(zhí)行詳細(xì)的測試。 冒煙檢查會檢查構(gòu)建中是否存在中斷缺陷(stopper defect, 即影響繼續(xù)測試的缺陷),這將阻止測試團(tuán)隊進(jìn)一步詳細(xì)測試。 即如果測試人員發(fā)現(xiàn)主要功能不能工作,他們會拒絕這次構(gòu)建,并退回給開發(fā)團(tuán)隊。

冒煙測試一般在回歸測試或其他詳細(xì)測試之前進(jìn)行

38) 靜態(tài)測試(Static Testing)

不知道測試什么?這些是你需要知道的軟件測試類型和常識

靜態(tài)測試有點類似于代碼Review,在不執(zhí)行任何代碼的情況下執(zhí)行(也就是不運行應(yīng)用),它涉及對可交付成果審查(inspection)、review和演練(walkthrough). 比如檢查代碼語法、命名約定、項目組織。

靜態(tài)測試不僅適用于代碼, 也適用于測試用例、測試計劃和設(shè)計文檔. 如果在靜態(tài)測試階段發(fā)現(xiàn)缺陷,可以將缺陷成本降到最低。比如在設(shè)計階段就發(fā)現(xiàn)問題,相比到開發(fā)階段甚至到生產(chǎn)環(huán)境出現(xiàn)問題要好解決

舉前端的例子,靜態(tài)測試可能包括:

使用Lint工具對程序進(jìn)行規(guī)范檢查,相關(guān)的工具有ESLint、TSLint、Stylint等, 甚至Typescript這些類型檢查器也可以歸到這個范疇

代碼Review。有一些問題是無法通過Lint工具覆蓋的,比如代碼邏輯、異常捕獲、項目組織、內(nèi)存泄露等等,這些需要人工進(jìn)行走查Review

檢查代碼是否與設(shè)計一致,是否符合軟件需求、概要和詳細(xì)設(shè)計,這不僅可以看出代碼問題,也可以反過來更早發(fā)現(xiàn)需求或設(shè)計是否正確。

39) 壓力測試(Stress Testing)

通過壓力測試,模擬系統(tǒng)受到超出其規(guī)格的壓力時失敗的方式和時間, 找出系統(tǒng)的崩潰點. 這個測試在高負(fù)載情況下執(zhí)行的,例如存取超過容量限制的數(shù)據(jù)、執(zhí)行復(fù)雜的數(shù)據(jù)庫查詢、連續(xù)暴力輸入到系統(tǒng)或加載到數(shù)據(jù)庫。

40) 系統(tǒng)測試(System Testing)

系統(tǒng)測試在完整的集成系統(tǒng)上進(jìn)行測試,也就是說系統(tǒng)測試一般在集成測試之后進(jìn)行,集成測試之后系統(tǒng)成為了一個整體,系統(tǒng)測試在這個基礎(chǔ)上、在真實的運行環(huán)境中驗證系統(tǒng)是否符合業(yè)務(wù)需求。 這是一種黑盒型測試,基于總體需求規(guī)范,涵蓋系統(tǒng)的所有組合部分。

系統(tǒng)測試其實不是一個具體的測試技術(shù),而是一個測試階段。 這個階段會進(jìn)行很多種測試,一般公司的測試團(tuán)隊的工作就集中在這一塊。 一般包含:

功能測試: 即上面講的,從系統(tǒng)的整體上測試是否符合業(yè)務(wù)需求

各種非功能測試:例如恢復(fù)測試、性能測試、壓力測試、安全測試等等。

歸納一下系統(tǒng)測試的目的:

確保應(yīng)用作為一個整體可以良好地運行.

確保應(yīng)用符合業(yè)務(wù)需求

確保應(yīng)用在真實的環(huán)境可以良好地運行。比如進(jìn)行一些非功能測試,驗證系統(tǒng)的健壯性

其實系統(tǒng)測試和上文說的端到端測試很像,它們要求系統(tǒng)作為一個整體進(jìn)行測試??梢院唵握归_對比一下

不知道測試什么?這些是你需要知道的軟件測試類型和常識

41) 單元測試(Unit Testing)

不知道測試什么?這些是你需要知道的軟件測試類型和常識

測試獨立的軟件單元或模塊稱為單元測試。它通常由開發(fā)者完成,而不是由測試人員完成,因為它需要詳細(xì)了解內(nèi)部程序設(shè)計和代碼。

單元測試是和我們開發(fā)者最密切相關(guān)的測試類型。它的測試對象是軟件單元。軟件單元可以是一個函數(shù)/方法、一個類或者一個GUI組件等。

這是一種白盒測試,所以要求由開發(fā)者自己進(jìn)行,因為只有開發(fā)者才知道單元的內(nèi)部實現(xiàn)。單元測試一般會使用測試覆蓋率來驗證單元測試的完成度.

前端常見的單元測試工具有Jest、Mocha、Jasmine等等. 下面是典型的BDD風(fēng)格的單元測試組織:

不知道測試什么?這些是你需要知道的軟件測試類型和常識

42) 可用性測試(Usability Testing)

可用性測試用于檢測應(yīng)用的用戶友好程度(User-friendliness). 它會驗證新用戶受可以輕松理解應(yīng)用流程,如果用戶陷入麻煩,測試人員要記錄好并提供幫助??梢哉J(rèn)為可用性測試是在檢查系統(tǒng)的導(dǎo)航性(navigation)

43) 漏洞測試(Vulnerability Testing)

漏洞測試,涉及識別軟件、硬件和網(wǎng)絡(luò)中的漏洞。如果漏洞容易受到攻擊,或者容易受到病毒和蠕蟲感染,黑客或惡意程序就可以控制系統(tǒng)。

因此有必要在投入生產(chǎn)環(huán)境之前檢查這些系統(tǒng)是否存在漏洞。

44) 容量測試(Volume Testing)

容量測試是由性能測試團(tuán)隊執(zhí)行的一種非功能測試。容量測試會檢查應(yīng)用程序遇到大量的數(shù)據(jù)時的系統(tǒng)行為和響應(yīng)時間。這種大量數(shù)據(jù)可能會影響系統(tǒng)的性能和處理時間的速度。

45) 白盒測試(White Box Testing)

白盒測試, 它也被稱為玻璃盒測試、結(jié)構(gòu)測試、邏輯驅(qū)動測試或基于代碼的測試, 基于應(yīng)用程序代碼的內(nèi)部邏輯。即測試人員應(yīng)該知道內(nèi)部軟件和代碼是如何工作的, 對所有的邏輯路徑進(jìn)行覆蓋測試。上面提到的單元測試和靜態(tài)測試就是典型的白盒測試, 基本上白盒測試可以等價于單元測試

邏輯路徑包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋等等.

總結(jié)

不知道測試什么?這些是你需要知道的軟件測試類型和常識

關(guān)于軟件測試還有其他疑問,或是想要免費領(lǐng)取測試學(xué)習(xí)資料、工具、面試寶典、面試技巧等資料,都可私信留言。

關(guān)注軟件測試鄭老師,你將學(xué)到更多專業(yè)技術(shù)、軟件測試干貨和更多職場技能。

本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 673862431@qq.com 舉報,一經(jīng)查實,本站將立刻刪除。
如若轉(zhuǎn)載,請注明出處:http://www.51zclw.cn/archives/15338