① 如何進行Web服務的性能測試
貼一篇我們內部的文章:
隨著瀏覽器功能的不斷完善,用戶量不斷的攀升,涉及到web服務的功能在不斷的增加,對於我們測試來說,我們不僅要保證服務端功能的正確性,也要驗證服務端程序的性能是否符合要求。那麼性能測試都要做些什麼呢?我們該怎樣進行性能測試呢?
性能測試一般會圍繞以下這些問題而進行:
1. 什麼情況下需要做性能測試?
2. 什麼時候做性能測試?
3. 做性能測試需要准備哪些內容?
4. 什麼樣的性能指標是符合要求的?
5. 性能測試需要收集的數據有哪些?
6. 怎樣收集這些數據?
7. 如何分析收集到的數據?
8. 如何給出性能測試報告?
性能測試的執行過程及要做的事兒主要包含以下內容:
1. 測試評估階段
在這個階段,我們要評估被測的產品是否要進行性能測試,並且對目前的伺服器環境進行粗估,服務的性能是否滿足條件。
首先要明確只要涉及到准備上線的服務端產品,就需要進行性能測試。其次如果產品需求中明確提到了性能指標,那也必須要做性能測試。
測試人員在進行性能測試前,需要根據當前的收集到的各種信息,預先做性能的評估,收集的內容主要包括帶寬、請求包大小、並發用戶數和當前web服務的帶寬等
2. 測試准備階段
在這個階段,我們要了解以下內容:
a. 伺服器的架構是什麼樣的,例如:web伺服器是什麼?是如何配置的?資料庫用的是什麼?服務用的是什麼語言編寫的?;
b. 服務端功能的內部邏輯實現;
c. 服務端與資料庫是如何交互的,例如:資料庫的表結構是什麼樣的?服務端功能是怎樣操作資料庫的?
d. 服務端與客戶端之間是如何進行交互的,即介面定義;
通過收集以上信息,測試人員整理出伺服器端各模塊之間的交互圖,客戶端與服務端之間的交互圖以及服務端內部功能邏輯實現的流程圖。
e. 該服務上線後的用戶量預估是多少,如果無法評估出用戶量,那麼可以通過設計測試執行的場景得出這個值;
f. 上線要部署到多少台機器上,每台機器的負載均衡是如何設計的,每台機器的配置什麼樣的,網路環境是什麼樣的。
g. 了解測試環境與線上環境的不同,例如網路環境、硬體配置等
h. 制定測試執行的策略,是需要驗證需求中的指標能否達到,還是評估系統的最大處理能力。
i. 溝通上線的指標
通過收集以上信息,確定性能測試用例該如何設計,如何設計性能測試用例執行的場景,以及上線指標的評估。
3. 測試設計階段
根據測試人員通過之前整理的交互圖和流程圖,設計相應的性能測試用例。性能測試用例主要分為預期目標用戶測試,用戶並發測試,疲勞強度與大數量測試,網路性能測試,伺服器性能測試,具體編寫的測試用例要更具實際情況進行裁減。
用例編寫的步驟大致分為:
a. 通過腳本模擬單一用戶是如何使用這個web服務的。這里模擬的可以是用戶使用web服務的某一個動作或某幾個動作,某一個功能或幾個功能,也可以是使用web服務的整個過程。
b. 根據客戶端的實際情況和伺服器端的策略,通過將腳本中可變的數據進行參數化,來模擬多個用戶的操作。
c. 驗證參數化後腳本功能的正確性。
d. 添加檢查點
e. 設計腳本執行的策略,如每個功能的執行次數,各個功能的執行順序等
4. 測試執行階段
根據客戶端的產品行為設計web服務的測試執行場景及測試執行的過程,即測試執行期間發生的事兒。通過監控程序收集web服務的性能數據和web服務所在系統的性能數據。
在測試執行過程中,還要不斷的關注以下內容:
a. web服務的連接速度如何?
b. 每秒的點擊數如何?
c. Web服務能允許多少個用戶同時在線?
d. 如果超過了這個數量,會出現什麼現象?
e. Web服務能否處理大量用戶對同一個頁面的請求?
f. 如果web服務崩潰,是否會自動恢復?
g. 系統能否同一時間響應大量用戶的請求?
h. 打壓機的系統負載狀態。
5. 測試分析階段
將收集到的數據製成圖表,查看各指標的性能變化曲線,結合之前確定的上線指標,對各項數據進行分析,已確定是否繼續對web服務進行測試,結果是否達到了期望值。
6. 測試驗證階段
在開發針對發現的性能問題進行修復後,要再執行性能測試的用例對問題進行驗證。這里需要關注的是開發在解決問題的同時可能無意中修改了某些功能,所以在驗證性能的同時,也要關注原有功能是否受到了影響。
想看原文或者有測試其他相關的問題可以關注下 搜狗測試 微信公眾號,我們上面有不少關於性能測試分享~
② 軟體測試面試題:WEB+網路|介面測試|性能測試|自動化測試
1. http代碼表,常考題目
404:找不到資源
500:伺服器內部錯誤,無法完成請求。
501:伺服器不支持請求的功能,無法完成請求。
502:充當網關或代理的伺服器,從遠端伺服器接收到了一個無效的請求。
301:永久移動。請求的資源已被永久的移動到新URI,返回信息會包括新的URI,瀏覽器會自動定向到新URI,今後任何新的請求都應使用新的URI代替。
302:臨時移動。與301類似。但資源只是臨時被移動,客戶端應繼續使用原有URI。
200:成功。
2. TCP/IP四層網路模型
鏈路層、網路層、傳輸層、應用層。
3. TCP/UDP區別?
TCP: 可靠傳輸協議,需要三次握手連接,有確認重傳機制,特點是可靠、准確、有擁塞控制,缺點就是比較慢,傳輸量比較小,適用於升級、下載;一句話:TCP是可靠的傳輸。
UDP: 不可靠傳輸協議,面向非連接的協議,優點是傳輸量大、速度快,缺點是已丟失、沒有擁塞控制,適用於直播、視頻等。一句話:UDP是不可靠的傳輸。
4. html css js運行的先後順序是什麼?
界面載入的時候先載入html在載入css最後載入js
5. session和cookie的區別是什麼
1. session存放在伺服器端用來校驗客戶端的身份
2. cookie存放在客戶端,每次從客戶端往伺服器發請求時,將cookie帶到伺服器端,用來校驗客戶端的身份
1. 怎麼用JMeter測試介面?
如果使用JMeter進行介面測試:
1) 測試前了解需求,根據介面規格說明書梳理業務;
2) 接下來設計用例,分析介面的入參和出參,分清楚有哪些有效輸入和無效輸入,設計用例(原則:用最少的用例覆蓋所有有效輸入,針對每一個無效的輸入設計一個測試用例,如果有錯誤碼沒有覆蓋到,還要對每個未覆蓋的錯誤碼分別設計一個用例);
3) 准備測試數據,比如:測試所需的賬號、密碼、key 等信息;
4) 打開JMeter,創建一個線程組,根據介面類型,填寫好對應的介面地址和請求方式等;
5) 參數化配置,添加配置元件CSV Data Set Config,定義變數,並准備CSV格式的數據,變數的引用用${變數名}的格式;
6) 添加斷言來判斷測試結果的正確性,用得最多的是響應斷言;
7) 添加監聽器,比如查看結果樹,對測試結果進行監聽;
8) 運行測試用例;
9) 查看監聽器結果,來判斷用例的執行是成功還是失敗,針對失敗的用例,分析其失敗原因;
10) 針對測試中發現的問題,給開發提單,直到問題最終解決。
11) 最後輸出測試報告。
2. 怎麼用Postman測試介面?
如果使用Postman測試介面:
其中1,2,3點相同,工具使用方面則比JMeter跟簡單,工具的主要的步驟是添加對應的請求、填寫主機URL及入參、添加測試套、運行測試套、分析結果出報告。
3. 在JMeter上如何把上一個請求的結果作為下一個請求的參數?
使用正則表達式提取器提取上一個請求的響應中的信息,保存一個引用名稱比如abc,在下一個請求的參數中,用${abc}的格式來引用提取的結果。
常用的正則表達式格式:(.+?),其中.表示匹配任意字元串,+表示只匹配一次,?表示匹配到就停下來。
一般是我們功能測試完成最後兩三天時間測試性能。
1、先是分析需求計算出並發數,TPS,響應時間和 CPU,內存,硬碟和網路IO這些指標。
2、制定測試方案,主要包括環境,計劃和具體測試那些場景(如可靠性,並發,負載,壓力測試等)
3、根據場景用Badboy錄制腳本,導出為JMeter工具支持的腳本。
4、用JMeter工具打開腳本,進行腳本調試,加一些斷言,監聽器,參數化等。
5、接下來執行性能測試,然後主要收集監聽器和收集伺服器CPU,內存,硬碟和網路IO等分析是否滿足需求,如果滿足就輸出性能測試報告。
6、如果指標不能滿足,反饋給開發進行調優。調優後繼續測試,一直到滿足需求後最終輸出測試報告。
1. Python怎麼定義一個函數?
你可以定義一個由自己想要功能的函數,以下是簡單的規則:
1) 函數代碼塊以def關鍵詞開頭,後接函數標識符名稱和圓括弧()。
2) 任何傳入參數和自變數必須放在圓括弧中間。圓括弧之間可以用於定義參數。
3) 函數的第一行語句可以選擇性地使用文檔字元串—用於存放函數說明。
4) 函數內容以冒號起始,並且縮進
5) return[表達式]結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當於返回None
2 Python切片
3. Python上用過什麼庫/模塊?
webdriver:定位和操作元素
time:設置等待時間
ActionChains:動作鏈,完成滑鼠的相關操作
Keys:鍵盤的相關操作
WebDriverWait:設置顯式等待
Expect_Conditions:針對單個元素,設置顯式等待的場景
PIL:截圖
Select:下拉選擇框的操作
unittest python:自帶的單元測試框架
HTMLTestRunner:運行腳本,生成報告
ddt:實現數據驅動測試,行為和數據分離
4. 你做過自動化測試嗎?
我在上一份工作中,公司去年下半年也開始規劃做Web 自動化,採用Python作為開發語言,通過Selenium WebDriver定位和操作頁面元素,自動化框架用的是unittest。我主要負責寫測試腳本。
假設一個測試團隊有5個人:1資深(測試經理)+2~3個中級(自動化+手動)+1 個初級(手動)
5. 使用什麼工具進行的自動化測試
使用的工具是Selenium(Web自動化工具)
6. 用的什麼編程語言
用的Python
7. Selenium 用的是哪個版本的的?Python用的是哪個版本的?
用的是selenium 3.11.0和Python2.7.10
8. Selenium的工作原理?
1)對html元素定位
2)模擬對第一步定位到的元素進行點擊、輸入、選擇等操作一句話:定位元素,操作元素。
9. 元素定位方法有哪些?
要點:8種定位方法
1) 根據元素的屬性值定位,比如 id、name、class、標簽名、鏈接文字和部分鏈接文字;
2) 根據CSS選擇器定位;
3) 根據 XPath 定位;
10. 子頁面里的元素怎麼定位?
先切換到框架里,然後再定位,用switch_to_frame函數根據子頁面id或name,切換到子頁面;定位完了如果要再定位主頁面的元素,要用switch_to_default_content 函數先返回主頁面。
11. 怎麼定位alert彈窗?或者這樣問:怎麼處理JS原生窗口?
要點:主要涉及點擊彈窗確認按鈕、強行關閉彈窗、獲取彈窗中的文字等操作。
1) 點擊彈窗的確定按鈕,用如下函數:
driver.switch_to_alert().accept()
2) 強行關閉,點擊右上角的叉叉,用如下函數:
driver.switch_to_alert().dismiss()
3) 獲取彈窗里的文字,用如下函數:
driver.switch_to_alert().text
12. 怎麼運行自動化用例並生成測試報告?
以unittest為例,我通常的做法是把用例載入到測試套中,做成一個腳本,在命令窗口下運行腳本,報告的生成用第三方模塊HTML TestRunner來生成。
13. 怎麼定位/操作圖片中的驗證碼?
用tesseract OCR引擎處理圖片中的驗證碼,步驟:
(1)對整個屏幕截屏,保存成png格式的圖片;
(2)在截取的圖片中定位驗證碼圖片的位置坐標;
(3)根據坐標對驗證碼截圖;
(4)在圖片中提取驗證碼,輸入到輸入框。
③ 各位大蝦,QTP適合什麼樣的測試用例,我的測試用例是WEB版的,主要是看頁面曲線對不對等的,知道QTP能測試
不過我可以給你個思路。
首先我要測試時要知道我們具體要測試什麼?這就是測試目標的分析,通過一些文檔,也與程序員的溝通把webservice中需要測試的功能點都列出來。
webservice是什麼?Web Service是一個應用組件,它邏輯性的為其他應用程序提供數據與服務.
例如使用QTP來測試webservice中數據提供的一些功能,webservice中根據程序員的設計,有一些取數據的介面,這些介面可以在webservice頁面直接調用並返回,一般返回xml格式的類型。我就可以用QTP來錄制這個過程,使用檢查點來檢查一般是xml檢查點。
具體的實現推薦你去個論壇。加入論壇的QTP群,學習氛圍很好,有問題發出來一定有人回你的。
④ 設計WEB測試用例用什麼模板比較好
目前,我所在的公司在web測試方面,還是沿用著excel形式,在規定的格式下進行用例的編寫。手動測試的話,我感覺這些工具都是次要的,主要還是要把測試思路整理清楚,不僅要寫的人自己可以看得懂,而且也要讓別人可以看懂你寫的意思。
查看原帖>>
⑤ web的功能測試怎樣測試
首先,查找需求說明、網站設計等相關文檔,分析測試需求。
制定測試計劃,確定測試范圍和測試策略,一般包括以下幾個部分:功能性測試;界面測試;性能測試;資料庫測試;安全性測試;兼容性測試
設計測試用例:
功能性測試可以包括,但不限於以下幾個方面:
鏈接測試。鏈接是否正確跳轉,是否存在空頁面和無效頁面,是否有不正確的出錯信息返回。
提交功能的測試。
多媒體元素是否可以正確載入和顯示。
多語言支持是否能夠正確顯示選擇的語言等。
界面測試可以包括但不限於一下幾個方面:
頁面是否風格統一,美觀
頁面布局是否合理,重點內容和熱點內容是否突出
控制項是否正常使用
對於必須但未安裝的控制項,是否提供自動下載並安裝的功能
文字檢查
性能測試一般從以下三個方面考慮:
壓力測試;負載測試;強度測試
資料庫測試要具體決定是否需要開展。資料庫一般需要考慮連結性,對數據的存取操作,數據內容的驗證等方面。
安全性測試:
基本的登錄功能的檢查
是否存在溢出錯誤,導致系統崩潰或者許可權泄露
相關開發語言的常見安全性問題檢查,例如SQL注入等
如果需要高級的安全性測試,確定獲得專業安全公司的幫助,外包測試,或者獲取支持
兼容性測試,根據需求說明的內容,確定支持的平台組合:
瀏覽器的兼容性;
操作系統的兼容性;
軟體平台的兼容性;
資料庫的兼容性
開展測試,並記錄缺陷。合理的安排調整測試進度,提前獲取測試所需的資源,建立管理體系(例如,需求變更、風險、配置、測試文檔、缺陷報告、人力資源等內容)。
定期評審,對測試進行評估和總結,調整測試的內容。
敲黑板!重點:推薦大家使用自動化測試工具TestWriter(測功能、測兼容性、測回歸的零編碼自動化測試工具 ),吼吼~
⑥ web測試用例怎麼編寫
不是很明白樓主的意思
我想你是希望能在web進行一些調試,並能顯示調試信息吧
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<META NAME="Generator" CONTENT="EditPlus">
<SCRIPT LANGUAGE="VBScript">
'調試專用
Dim DebugID
Sub Debug(byval Msg)
dim sHtml
DebugID=DebugID+1
sHtml="<TABLE ID=TDebug border=1 CELLSPACING=0 CELLPADDING=0 BorderColor=#FF6600 style='PADDING:4,4,4,4;BORDER-COLLAPSE:collapse' bgcolor=#FFCC99 width='100%' align='center'><TR><TD><b>Debug(" & DebugID & "):</b><br>"
sHtml=sHtml & Msg & "</TD></TR></TABLE>"
document.Write sHtml
End Sub
</SCRIPT>>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="VBScript">
Call Debug(Time)
</SCRIPT>
</BODY>
</HTML>
⑦ web測試有哪些方面
第一,分析產品結構,明確性能測試的需求,包括並發、極限、配置和指標等方面的性能要求,必要時基於LOAD測試的相同測略需同時考慮穩定性測試的需求。
第一,分析應用場景和用戶數據,細分用戶行為和相關的數據流,確定測試點或測試介面,列示系統介面的可能瓶頸,一般是先主幹介面再支線介面,並完成初步的測試用例設計。
第三,依據性能測試需求和確定的測試點進行測試組網設計,並明確不同組網方案的重要程度或優先順序作為取捨評估的依據,必要時在前期產品設計中提出支持性能測試的可測試性設計方案和對測試工具的需求。
第四,完成性能測試用例設計、分類選擇和依據用戶行為分析設計測試規程,並准備好測試用例將用到的測試數據。
第五,確定採用的測試工具。
第六,進行初驗測試,以主幹介面的可用性為主,根據測試結果分析性能瓶頸,通過迭代保證基本的指標等測試的環境。
第七,迭代進行全面的性能測試,完成計劃中的性能測試用例的執行。
第八,完成性能測試評估報告。
在進行性能測試的時候,我們需要知道一些有效的性能指標,下面我們來列出一些主要的性能指標:
一是,通用指標(指Web應用伺服器、資料庫伺服器必需測試項):
*ProcessorTime:指伺服器CPU佔用率,一般平均達到70%時,服務就接近飽和;
*Memory Available Mbyte:可用內存數,如果測試時發現內存有變化情況也要注意,如果是內存泄露則比較嚴重;
*Physicsdisk Time :物理磁碟讀寫時間情況。
二是,Web伺服器指標:
*Avg Rps:平均每秒鍾響應次數=總請求時間/秒數;
*Avg time to last byte per terstion(mstes):平均每秒業務角本的迭代次數;*Successful Rounds:成功的請求;
*Failed Rounds:失敗的請求;
*Successful Hits:成功的點擊次數;
*Failed Hits:失敗的點擊次數;
*Hits Per Second:每秒點擊次數;
*Successful Hits Per Second:每秒成功的點擊次數;
*Failed Hits Per Second:每秒失敗的點擊次數;
*Attempted Connections:嘗試鏈接數。
三是,資料庫伺服器指標:
*User 0 Connections :用戶連接數,也就是資料庫的連接數量;
*Number of deadlocks:資料庫死鎖;
*Butter Cache hit:資料庫Cache的命中情況)。
可用性測試:1導航測試(Web應用系統的層次一旦決定,就要著手測試用戶導航功能,讓最終用戶參與這種測試,效果將更加明顯。)2圖形測試3內容測試3整體界面測試4客戶端兼容性測試(1平台測試2瀏覽器測試)5安全性測試(測試重點:(1)現在的Web應用系統基本採用先注冊,後登陸的方式。因此,必須測試有效和無效的用戶名和密碼,要注意到是否大小寫敏感,可以試多少次的限制,是否可以不登陸而直接瀏覽某個頁面等。(2)Web應用系統是否有超時的限制,也就是說,用戶登陸後在一定時間內(例如15分鍾)沒有點擊任何頁面,是否需要重新登陸才能正常使用。(3)為了保證Web應用系統的安全性,日誌文件是至關重要的。需要測試相關信息是否寫進了日誌文件、是否可追蹤。(4)當使用了安全套接字時,還要測試加密是否正確,檢查信息的完整性。(5)伺服器端的腳本常常構成安全漏洞,這些漏洞又常常被黑客利用。所以,還要測試沒有經過授權,就不能在伺服器端放置和編輯腳本的問題。 )