測試基本概念
測試用例設(shè)計白皮書--測試用例基本概念
測試用例設(shè)計白皮書--等價類劃分方法
測試用例設(shè)計白皮書--邊界值分析方法
測試用例設(shè)計白皮書--錯誤推測方法
測試用例設(shè)計白皮書--因果圖方法
測試用例設(shè)計白皮書--判定表驅(qū)動分析方法
測試用例設(shè)計白皮書--正交實驗設(shè)計方法
測試用例設(shè)計白皮書--功能圖分析方法
測試用例設(shè)計白皮書--場景設(shè)計方發(fā)
測試用例設(shè)計白皮書--測試用例設(shè)計綜合策略
白盒測試技術(shù)-方法與實踐篇
測試者出的APP測試面試題
http://www.reibang.com/p/d133539b7b5c
給你一個模塊次伶,比如注冊模塊,你會怎么樣設(shè)計與執(zhí)行測試贫母?
參考答案:數(shù)據(jù)——》從哪里來(入口)——》到哪里去(出口)——》數(shù)據(jù)庫(檢驗數(shù)據(jù)的正確性)
一些測試題
百度首頁的測試
http://www.cnblogs.com/tomato0906/articles/4622422.html
http://www.bdqn.cn/news/201309/11459.shtml
三角形測試:等價類劃分
設(shè)計功能和界面測試用例一
http://blog.163.com/pengjintaogz@126/blog/static/162299068201031442428744/
設(shè)計功能和界面測試用例二
http://blog.163.com/pengjintaogz@126/blog/static/162299068201031442428894/
測試的分類
軟件測試分類:
- 1.按結(jié)構(gòu)與內(nèi)部實現(xiàn):
http://www.lmwlove.com/ac/id1105
黑盒測試:關(guān)心的是輸入與輸出卓舵。
白盒測試:可以訪問程序代碼,并且通過檢查代碼來協(xié)助測試信夫,測試員根據(jù)代碼檢查結(jié)果判斷什么樣的數(shù)據(jù)輸入可能導(dǎo)致bug的產(chǎn)生奸攻,并根據(jù)此調(diào)整測試程序稍算。
灰盒測試:介于白盒測試與黑盒測試之間鸣奔。 - 2.按是否執(zhí)行程序分:
靜態(tài)測試:測試不運行的部分——知識檢查與審閱墨技。
動態(tài)測試:運行與使用。 - 3.按過程分:
A.單元測試:集中對用源代碼實現(xiàn)的每一個程序單元進行測試挎狸,檢查各個程序模塊是否正確地實現(xiàn)了規(guī)定的功能扣汪。
B.集成測試:把已測試過的模塊組裝起來,主要對與設(shè)計相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)造進行測試
C.確認(rèn)測試:檢查已實現(xiàn)的軟件是否滿足了需求規(guī)格說明中確定了的各種需求锨匆,以及軟件配置是否完全崭别、正確
D.系統(tǒng)測試:把已經(jīng)經(jīng)過確認(rèn)的軟件納入實際運行環(huán)境中,與其它系統(tǒng)成份組合在一起進行測試
E.驗收測試:用戶對軟件產(chǎn)品投入實際應(yīng)用以前進行的最后一次質(zhì)量檢驗活 - 4.按測試類型分:
- A.功能測試
- B.性能測試:
http://www.cnblogs.com/fnng/archive/2012/06/09/2543274.html
負(fù)載測試
這種方法是對一個系統(tǒng)持續(xù)不段的加壓恐锣,看你在什么時候已經(jīng)超出“我的要求”或系統(tǒng)崩潰
壓力測試(強度測試)
這種測試是讓系統(tǒng)處在很大強度的壓力之下茅主,看系統(tǒng)是否穩(wěn)定,哪里會出問題土榴。
并發(fā)測試
這種測試關(guān)注點是多個用戶同時(并發(fā))對一個模塊或操作進行加壓暗膜。
配置測試
這種測試關(guān)注點是“微調(diào)”,通過對軟硬件的不段調(diào)整鞭衩,找出這他們的最佳狀態(tài),使系統(tǒng)達到一個最強的狀態(tài)娃善。
****可靠性測試****
這種測試的關(guān)注點是“穩(wěn)定”论衍,不需要給系統(tǒng)太大的壓力,只要系統(tǒng)能夠長期處于一個穩(wěn)定的狀態(tài)聚磺。 - C.安全測試
- D.易用性測試
- E.兼容性測試
服務(wù)器壓力測試
-
吞吐率和壓力測試
普遍使用“壓力測試”的方法坯台,通過模擬足夠多數(shù)目的并發(fā)用戶,分別持續(xù)發(fā)送一定的HTTP請求瘫寝,并統(tǒng)計測試持續(xù)的總時間蜒蕾,計算出基于這種“壓力”下的吞吐率,即為一個平均計算值
1焕阿、 并發(fā)用戶數(shù)
并發(fā)用戶數(shù)就是指在某一時刻同時向服務(wù)器發(fā)送請求的用戶總數(shù)咪啡。
假如100個用戶同時向服務(wù)器分別進行10次請求,與1個用戶向服務(wù)器連續(xù)進行1000次請求暮屡。兩個的效果一樣么撤摸?
一個用戶向服務(wù)器連續(xù)進行1000次請求的過程中,任何時刻服務(wù)器的網(wǎng)卡接受緩存區(qū)中只有來自該用戶的1個請求,而100個用戶同時向服務(wù)器分別進行10次請求的過程中准夷,服務(wù)器網(wǎng)卡接收緩沖區(qū)中最多有100個等待處理的請求钥飞,顯然這時候服務(wù)器的壓力更大。
-
思路:
服務(wù)器端I/O多路復(fù)用衫嵌,epoll
客戶端多進程或者多線程模擬多個客戶登陸
粗略列一列读宙,大致可以從以下幾個層面考慮吧:
1.功能方面,是否能按指定條件查到正確楔绞、完整的結(jié)果结闸,具體:
1.1錄入條件為可查到結(jié)果的正常關(guān)鍵字、詞墓律、語句膀估,檢索到的內(nèi)容、鏈接正確性耻讽;1.2錄入條件為不可查到結(jié)果的關(guān)鍵字察纯、詞、語句针肥;
1.3錄入條件為一些特殊的內(nèi)容饼记,如空、特殊符慰枕、標(biāo)點符具则、極限值等,可引入等價類劃分的方法等具帮;
2.性能方面博肋,可利用測試工具或各種測試手段考慮功能在各方面的表現(xiàn),具體:
2.1壓力測試:在不同發(fā)用戶數(shù)壓力下的表現(xiàn)(評價指標(biāo)如響應(yīng)時間等)
2.2負(fù)載測試:看極限能承載多大的用戶量同時正常使用
2.3穩(wěn)定性測試:常規(guī)壓力下能保持多久持續(xù)穩(wěn)定運行
2.4內(nèi)存測試:有無內(nèi)存泄漏現(xiàn)象
3.易用性方面蜂厅,交互界面的設(shè)計是否便于匪凡、易于使用,具體:
3.1依據(jù)不同的查詢結(jié)果會有相關(guān)的人性化提示掘猿,查不到時告知病游?查到時統(tǒng)計條數(shù)并告知?有疑似輸入條件錯誤時提示可能正確的輸入項等等處理稠通;
3.2查詢出的結(jié)果羅列有序衬衬,如按點擊率或其他排序規(guī)則,確保每次查詢出的結(jié)果位置按規(guī)則列示方便定位改橘,顯示字體滋尉、字號、色彩便于識別等等唧龄;
3.3標(biāo)題查詢兼砖、全文檢索奸远、模糊查詢、容錯查詢讽挟、多關(guān)鍵字組織查詢(空格間格開)等實用的檢索方式是否正常懒叛?
3.4有否快照等快捷查看方式等人性化設(shè)計?
4.兼容性方面耽梅,跨平臺薛窥、多語言等多樣性環(huán)境組合情況下測試使用的正常性,具體:
4.1WINDOWS/LINUX/UNIX等各類操作系統(tǒng)下及各版本條件下的應(yīng)用
4.2IE/FIREFOX/GOOGLE/360/QQ等各類瀏覽器下及各版本條件下的應(yīng)用
4.3SQL/ORACLE/DB2/MYSQL等各類數(shù)據(jù)庫存儲情況下的兼容性測試
4.4簡體中文眼姐、繁體中文诅迷、英文等各類語種軟件平臺下的兼容性測試
4.5IPHONE/IPAD、安卓等各類移動應(yīng)用平臺下的兼容性測試
4.6與各相關(guān)的監(jiān)控程序的兼容性測試众旗,如殺毒罢杉、監(jiān)控、防火墻等工具同時使用
5.安全性方面贡歧,往往容易被忽視的環(huán)節(jié)滩租,具體:
5.1被刪除、加密利朵、授權(quán)的數(shù)據(jù)律想,不允許被查出來的,是否有安全控制設(shè)計绍弟;
5.2錄入一些數(shù)據(jù)庫查詢的保留字符技即,如單引號、%等等樟遣,造成查詢SQL拼接出的語句產(chǎn)生漏洞而叼,如可以查出所有數(shù)據(jù)等等,這方面要有一些黑客攻擊的思想并引入一些工具和技術(shù)豹悬,如爬網(wǎng)等澈歉。
5.3通過白盒測試技術(shù),檢查一下在程序設(shè)計上是否存在安全方面的隱患屿衅;
5.4對涉及國家安全、法律禁止的內(nèi)容是否進行了相關(guān)的過濾和控制莹弊;
6.異常性測試涤久,各種破壞性的操作的影響測試,具體:
6.1查詢過程中斷網(wǎng)忍弛、關(guān)機
6.2查詢過程中強行中斷關(guān)閉頁面
6.3查詢過程中強行殺死相關(guān)進程等
持續(xù)集成Continuos Integration
- CI的優(yōu)點
-
減少風(fēng)險
缺陷的檢測和修復(fù)變得更快响迂,讓尋找和修改bug的工作變簡單(只修改系統(tǒng)一小部分,無需看太多代碼细疚。由于提交后就可以得到反饋蔗彤,記憶很新鮮,可以進行差異調(diào)試。)同時過早的引入集成然遏,使我們能更好的審視各個模塊的接口是否滿足要求贫途,減少項目中的假定。 -
減少重復(fù)過程
由于CI將大量的工作給自動化了待侵,那么可以讓人們有時間做更多的需要動腦筋的丢早、更高價值的工作。而且通過對重要過程自動化秧倾,克服了項目中某些成員對實現(xiàn)改進的抵制怨酝,有利于持續(xù)集成的推進。這樣就形成了一個良性循環(huán)那先。 -
在任何時間农猬、任何地點生成可部署的軟件
對于客戶來說,可以部署的軟件是最實際的資產(chǎn)售淡。而CI則可以輕松做到這一點斤葱。 -
增強項目的可見性
通過對CI服務(wù)器的監(jiān)控,可以隨時了解項目的趨勢勋又。CI上的紅色或綠色表示了當(dāng)前項目的健康程度去扣。每一個功能的交付都經(jīng)歷了單元測試或集成測試的考驗。
對開發(fā)團隊的軟件產(chǎn)品建立起更強大的產(chǎn)品信心
“持續(xù)”:我想對CI里“持續(xù)”的理解可以從兩方面來談数初,首先是持續(xù)地集成產(chǎn)品肌稻,盡早地發(fā)現(xiàn)問題;其次蹲嚣,也可以把這里的持續(xù)理解為持續(xù)改進递瑰,正如前面說的,CI里包括很多的實踐隙畜,我們不可能一下子引入全部抖部,這就要求我們有持續(xù)改進的sense,持續(xù)地引入新的實踐(比如加入代碼審查等)议惰、持續(xù)地加入新的case慎颗、持續(xù)地完善CI和process,在改進的同時言询,CI又很好地保證了已有部分的長期有效俯萎,不過像猴子摘西瓜那樣,缺少歷史的積淀运杭。
部署
通過了第二輪測試夫啊,當(dāng)前代碼就是一個可以直接部署的版本(artifact)。將這個版本的所有文件打包(tar filename.tar *)存檔辆憔,發(fā)到生產(chǎn)服務(wù)器撇眯。
生產(chǎn)服務(wù)器將打包文件报嵌,解包成本地的一個目錄,再將運行路徑的符號鏈接(symlink)指向這個目錄熊榛,然后重新啟動應(yīng)用锚国。這方面的部署工具有Ansible,Chef来候,Puppet等跷叉。
回滾
一旦當(dāng)前版本發(fā)生問題,就要回滾到上一個版本的構(gòu)建結(jié)果营搅。最簡單的做法就是修改一下符號鏈接云挟,指向上一個版本的目錄。
持續(xù)集成(CI)园欣、自動化構(gòu)建和自動化測試--初探
持續(xù)集成
軟件測試模型
X模型的左邊描述的是針對單獨程序片段所進行的相互分離的編碼和測試,此后將進行頻繁的交接休蟹,通過集成最終成為可執(zhí)行的程序沸枯,然后再對這些可執(zhí)行程序進行測試。
己通過集成測試的成品可以進行封裝并提交給用戶赂弓,也可以作為更大規(guī)模和范圍內(nèi)集成的一部分绑榴。多根并行的曲線表示變更可以在各個部分發(fā)生。
由圖中可見盈魁,X模型還定位了探索性測試翔怎,這是不進行事先計劃的特殊類型的測試,這一方式往往能幫助有經(jīng)驗的測試人
軟件測試模型的v模型杨耙、w模型赤套、h模型、x模型總結(jié)
敏捷開發(fā)與瀑布模型
對比:http://www.cnblogs.com/zh2000g/archive/2010/02/22/1671286.html
瀑布模型開發(fā):
嚴(yán)格把軟件項目的開發(fā)分隔成各個開發(fā)階段:需求分析珊膜,要件定義容握,基本設(shè)計,詳細(xì)設(shè)計车柠,編碼剔氏,單體測試,結(jié)合測試竹祷,系統(tǒng)測試等介蛉。
使用里程碑的方式,嚴(yán)格定義了各開發(fā)階段的輸入和輸出溶褪。如果達不到要求的輸出,下一階段的工作就不展開践险。
敏捷開發(fā):
核心是迭代猿妈。
因為最終目標(biāo)是讓客戶滿意吹菱,所以能夠主動接受需求變更,這就使設(shè)計出來的軟件有靈活性彭则,可擴展性鳍刷。
關(guān)于工具(java)
Jenkins是一個開源的持續(xù)集成工具,應(yīng)用Jenkins搭建持續(xù)集成環(huán)境俯抖,可以進行自動構(gòu)建输瓜、自動編譯和部署,非常方便芬萍。
在服務(wù)器比較少的情況下尤揣,Jenkins的優(yōu)勢并不明顯,但是隨著項目發(fā)展柬祠,服務(wù)器數(shù)量的增加北戏,Jenkins的優(yōu)勢就會凸顯出來,可以很好的提高效率漫蛔,減少很多人工操作嗜愈。
現(xiàn)在很多公司的Java項目開發(fā)都是使用Git或者SVN管理代碼,Maven管理多模塊和項目依賴(很多jar包)莽龟,所以今天嘗試學(xué)習(xí)如何使用Jenkins搭建Github與Maven下的自動構(gòu)建和部署蠕嫁。