常見自動化測試面試題


常見自動化測試面試題

 

轉載自:https://blog.csdn.net/qq_34671951/article/details/96425740?spm=1001.2014.3001.5501 作者:

寫在前面
公司要求招一名自動化測試,能力要求不高,1年左右自動化經驗+部分性能經驗即可,讓我出一份題,我就百度+公司項目遇到的問題,出了一份,出題整體思路是:接口自動化問題+性能問題+規划的ui、app自動化+整體質量體系建設等多方面考慮。下面是正題

崗位JD

| 1、【技術能力】能獨立完成產品線中自動化測試工作,根據測試任務,搭建軟件測試環境,編寫測試腳本,輸出報告;
2、【項目管理】熟練開發測試工具、測試腳本,及迭代優化測試框架,使用合理方式進行自動化管理項目;
3、【業務推動】對測試項目的結果負責,使用合理方式推動業務端測試的效率、開發質量;
4、【規范制定】 熟悉CI系統,完善准入/准出標准,持續提升測試效率;
5、【效率提升】根據業務特點,引入新的測試方法和工具,探索新技術。改進測試工具或測試方法,提高效率,培訓測試人員並支持技術難題解決 | |

|-1)3年以上測試工作經驗,1年以上自動化測試經驗或開發經驗;
2)至少熟悉一種腳本語言,如Shell、Python、java等;
3)至少熟悉一種測試框架,unittest、pytest、testng等;可獨立完成復雜邏輯的接口自動化測試;
4)熟悉appium、selenium可獨立完成android和ios的UI自動化測試;
5)熟悉jenkins、svn、git的搭建和使用;
6)熟悉常用性能測試工具的使用,並可進行分析調優:ab、jmeter、loadrunner、locust等,有分布式壓測經驗優先;
7)熟悉使用django開發框架,可完成web頁面和功能的開發(此條可放寬);
8)具備豐富的系統測試經驗,並且能夠進行系統級的原因定位與分析;
9)具備較強的計划、組織、協調、溝通及分析能力,優秀的職業素養和團隊協作精神、敬業精神,能承受工作壓力;
10)學習能力強,對技術有着特別的渴求,在關注的領域有着深入的研究,並不斷創新;具備較強的技術培訓能力和領導能力-|–|

自動化測試面試題1:基礎篇
目的:驗證求職者是否在自動化測試崗位有實際應用於生產的工作經驗
1、使用什么測試框架做的上一個項目的自動化測試?說下怎么做的?對自動化的理解?
答:(junit、unittest、testng、 pytest ,優先python語言,用過pytest或unittest框架的;只會selenium能力較弱)
2、使用什么測試框架做的上一個項目的自動化測試?說下怎么做的?對自動化的理解?
答:最好能答出獨立負責且封裝頁面元素、斷言封裝、請求封裝、取參方式具體實現
3、GET與POST的區別?
(1)GET請求資源數據,POST向服務器傳遞需要處理的數據
(2)GET傳遞數據大小不超過2kb,POST沒有限制
(3)GET請求的參數會在Url上暴露顯示,POST請求參數在Requestbody里,所以相對GET來說,POST安全性較高
(4)GET 請求的靜態資源會被瀏覽器緩存,POST不會被緩存
(5)GET傳遞的數據類型是文本,POST是文本或者二進制
(6)GET請求被回退時是無害的,POST請求被回退是會被重新再執行一次
GET和POST的使用場景:
(1)在傳遞一些機密信息時必須要使用POST
(2)只是查詢獲取數據時可以用GET
(3)POST請求速率會比GET慢,因為GET請求產生一個TCP數據包;POST請求產生兩個TCP數據包
4、//*[contains(@text,“登錄”)] 是什么意思?
答:查包含登錄關鍵字的所有元素
5、自動化遇到用例fail掉如何排查故障?
答:看出錯log,如果能按層次說清楚排查失敗:手工查應用是否真的有bug, 確認不是bug,是不是新版本引入了新的變更,調試腳本看看自己的腳本是不是因為沒有等待元素出現后就操作了,是不是元素上面有其他元素出現這樣操作是不是操作了其他的元素上了
6、說說接口測試的流程和接口自動化流程,介紹一下request有哪些內容?
答:(1)流程:獲取接口文檔,依據文檔設計接口參數,獲取響應,解析響應,校驗結果,判斷測試是否通過。 (2)request 內容:1,封裝了get、post等;
2、以關鍵字參數的方式,封裝了各類請求參數,params、data、headers、token、cookie等;3,封裝了響應內容,status_code、json()、cookies、url等;
session會話對象,可以跨請求;
7、接口測試用例的編寫要點有哪些?
1)必填字段:請求參數必填項、可選項
2)合法性:輸入輸出合法、非法參數
3)邊界:請求參數邊界值等
4)容錯能力:大容量數據、頻繁請求、重復請求(如:訂單)、異常網絡等的處理
5)響應數據校驗:斷言、數據提取傳遞到下一級接口…
6)邏輯校驗:如兩個請求的接口有嚴格的先后順序,需要測試調轉順序的情況
7)性能:對接口模擬並發測試,逐步加壓,分析瓶頸點
8)安全性:構造惡意的字符請求,如:SQL注入、XSS、敏感信息、業務邏輯(如:跳過某些關鍵步驟;未經驗證操縱敏感數據)
8,postman的使用方式?高級用法?mock的應用場景和基礎用法?
答:A,基礎使用:入參出參校驗返回;
b,Environment–配置不同的環境參數,Globals即設置全局變量,Pre-request Script–配置使用環境變量或進行前置腳本處理;
c,團隊可以更好地並行工作,前后端人員只需要定義好接口文檔就可以開始並行工作,互不影響,只在最后的聯調階段往來密切,開啟TDD(Test-Driven Development)模式,即測試驅動開發;
9,你之前自動化測試的數據放哪?怎么使用?公共變量的管理方式?管理測試用例的手段?如何提高用例覆蓋率?接口測試關聯性接口實現方式?
答:測試數據存放總結:
1.對於賬號密碼,這種管全局的參數,可以用命令行參數,單獨抽出來,寫的配置文件里(如ini)
2.對於一些一次性消耗的數據,比如注冊,每次注冊不一樣的數,可以用隨機函數生成
3.對於一個接口有多組測試的參數,可以參數化,數據放yaml,text,json,excel都可以
4.對於可以反復使用的數據,比如訂單的各種狀態需要造數據的情況,可以放到數據庫,每次數據初始化,用完后再清理
5.對於郵箱配置的一些參數,可以用ini配置文件
6.對於全部是獨立的接口項目,可以用數據驅動方式,用excel/csv管理測試的接口數據
7.對於少量的靜態數據,比如一個接口的測試數據,也就2-3組,可以寫到py腳本的開頭,十年八年都不會變更的。
10,不可逆的操作,如何處理,比如刪除一個訂單這種接口如何測試?
此題考的是造數據的能力,接口的請求數據,很多都是需要依賴前面一個狀態的
比如工作流這種,流向不同的人狀態不一樣,操作權限不一樣,測試的時候,每種狀態都要測到,就需要自己會造數據了。
平常手工測試造數據,直接在數據庫改字段狀態。那么自動化也是一樣,造數據可以用python連數據庫了,做增刪改查的操作
測試用例前置操作,setUp做數據准備
后置操作,tearDown做數據清理
11、、說出5個以上 Linux 命令(注重考察性能測試監控常用命令?)
答:cd、ls、grep、mkdir、pwd、ping等等,重要是性能測試常用監控命令:netstat 、top 、Nmon 、dstat、ulimit、vmstat 、tcpdump、free 、lsof ,需回答上至少兩個。
12、介紹一下你在這個項目中是如何使用 Jenkins 的。
答:基本操作,比如定時構建執行代碼等。
13、舉例說明,Linux下命令行cURL的種常見用法和示例?
答:常用10種,這里舉出三種常用:A,獲取頁面內容:curl+get請求;curl https://www.baidu.com
B,把鏈接頁面的內容輸出到本地文件中:curl https://www.baidu.com > index.html
C,使用 -d 發送 POST 請求:curl -d “userName=tom&passwd=123456” http://www.example.com/login
14,jmeter上一個接口參數返回值做為下一個接口入參的實現方式有幾種,舉例?
答:正則表達式處理器、JSON Path Extractor
15、接口自動化中,遇到簽名、鑒權加密等,如何處理的,用到哪些方法?
答:比如MD5加密–hashlib內置庫,看怎么回答怎么具體問:開放性。
16、對pytest的理解程度?使用規范?參數化方法?說說常用裝飾器?
答:pytest是一個非常成熟的全功能的的Python測試框架,主要特點有以下幾點:
1,簡單靈活,容易上手,文檔豐富;
2,支持參數化,可以細粒度地控制要測試的測試用例;
3,能夠支持簡單的單元測試和復雜的功能測試,還可以用來做selenium/ appnium等自動化測試,接口自動化測試(pytest +請求);
4,pytest具有很多第三方插件,並且可以自定義擴展,比較好用的如pytest - selenium(集成selenium),pytest-HTML(完美的HTML測試報告生成),pytest-rerunfailures(失敗情況下重復執行),pytest -xdist(多CPU分發)等;
5,測試用例的跳躍和xfail處理;
使用規范:
測試文件名必須以“test_”開頭
測試類以Test開頭,並且不能帶有 init 方法
測試方法必須以“test_”開頭
除了有setup/teardown,還能更自由的定義fixture裝載測試用例
參數化方法:
pytest支持在多個完整測試參數化方法:
pytest.fixture(): 在fixture級別的function處參數化
@pytest.mark.parametrize:允許在function或class級別的參數化,為特定的測試函數或類提供了多個argument/fixture設置。
pytest_generate_tests:可以實現自己的自定義動態參數化方案或擴展。
17、舉例說明pytest.mark標記的使用?
答:1,無條件跳過測試pytest.mark.skip
2,有條件跳過測試pytest.mark.skipif
3,標記測試功能按預期失敗pytest.mark.xfail
4,將測試功能標記為使用給定的夾具名稱pytest.mark.usefixtures
5,向特定測試項添加警告過濾器,以便更好地控制應在測試,類甚至模塊級別捕獲哪些警告@pytest.mark.filterwarnings
6,自定義標記:標記指定標簽
18,自動化測試報告生成方式?如果是allure詳述?
答:@allure.severity(“critical”) # 優先級,包含blocker, critical, normal, minor, trivial 幾個不同的等級
@allure.feature(“測試模塊_demo1”) # 功能塊,feature功能分塊時比story大,即同時存在feature和story時,feature為父節點
@allure.story(“測試模塊_demo2”) # 功能塊,具有相同feature或story的用例將規整到相同模塊下,執行時可用於篩選
@allure.issue(“BUG號:123”) # 問題表識,關聯標識已有的問題,可為一個url鏈接地址
@allure.testcase(“用例名:測試字符串相等”) # 用例標識,關聯標識用例,可為一個url鏈接地址

19、什么是冒泡排序,手寫一個冒泡排序?
答:冒泡排序(Bubble Sort)也是一種簡單直觀的排序算法。它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因為越小的元素會經由交換慢慢"浮"到數列的頂端。

自動化測試面試題2:細節篇之語言:python基礎
目的:驗證求職者自動化崗位的開發、腳本語言的基礎以及熟悉程度
1、super 是干嘛用的?在 Python2 和 Python3 使用,有什么區別?為什么要使用 super?請舉例說明。
答:super 用於繼承父類的方法、屬性。super 是新式類中才有的,所以 Python2 中使用時,要在類名的參數中寫 Object。Python3 默認是新式類,不用寫,直接可用。使用 super 可以提高代碼的復用性、可維護性。修改代碼時,只需修改一處。
2、L = [1, 2, 3, 11, 2, 5, 3, 2, 5, 3],用一行代碼得出 [11, 1, 2, 3, 5]
答:list(set(L))
3、列表和字典有什么區別?
答:一般都是問列表和元組有什么不同。 (1)獲取元素的方式不同。列表通過索引值獲取,字典通過鍵獲取。 (2)數據結構和算法不同。字典是 hash 算法,搜索的速度特別快。 (3)占用的內存不同。
4,json和字典dict的區別?
答:json是一種輕量級的數據交換格式
dict是python中的數據類型(python里面的基礎數據類型有:int、str、 float、list、bool、tuple、dict、set這幾種類型,里面沒json這種數據類型,json本質上字符串,按照key:value鍵值對格式的字符串;在json中空值是用Null表示,在dict中空值是用None表示)
主要區別:json的key只能是字符串,python的dict可以是任何可hash對象(hashtable type);
json的key可以是有序、重復的;dict的key不可以重復。
json的value只能是字符串、浮點數、布爾值或者null,或者它們構成的數組或者對象。
json任意key存在默認值undefined,dict默認沒有默認值;
json訪問方式可以是[],也可以是.,遍歷方式分in、of;dict的value僅可以下標訪問。
json的字符串強制雙引號,dict字符串可以單引號、雙引號;
dict可以嵌套tuple,json里只有數組。
json:true、false、null
python:True、False、None
json中文必須是unicode編碼,如"\u6211".
json的類型是字符串,字典的類型是字典。
5,python深拷貝和淺拷貝的概念和區別?
答:淺拷貝:拷貝最外層容器
深拷貝:拷貝的最外層容器,還拷貝容器中的元素
對於不可變元素,使用淺拷貝
6、python單行注釋和多行注釋分別用什么?
答:單行注釋用# 多行注釋用""" “”"
7,Python垃圾回收機制?
答:1,回收計數引用為0的對象,釋放其占用空間
2、循環垃圾回收器。釋放循環引用對象
8,如何安裝第三方模塊?以及用過哪些第三方模塊?
答:使用官方推薦的setuptools的包管理工具,easy – install和pip、requests模塊
9、進程、線程有什么區別?什么情況下用進程?什么情況下用線程?
答:(1)區別:
① 地址空間和其它資源(如打開文件):進程之間相互獨立,同一進程的各線程之間共享。某進程內的線程在其它進程不可見。② 通信:進程間通信 IPC,線程間可以直接讀寫進程數據段(如全局變量)來進行通信——需要進程同步和互斥手段的輔助,以保證數據的一致性。③ 調度和切換:線程上下文切換比進程上下文切換要快得多。④ 在多線程操作系統中,進程不是一個可執行的實體。(2)使用場景:同時操作一個對象的時候,比如操作的是一個全局變量,我用線程,因為全局變量是所有線程共享的。
10,談談你對面向對象的理解?
體現在三個方面: 封裝、繼承、多態
繼承有兩種方式:
1、將同一類的方法封裝到類中
2、將數據封裝到對象中
繼承:子類擁有父類的所有方法和屬性,
好處:抽取重復代碼,減少代碼冗余。
壞處:耦合性太強。
多態:對於不同的類可以有同名的方法,同名的方法應用到不同的類可以有不同行為。

自動化測試面試題3:細節篇之selenium
目的:驗證求職者在自動化測試崗位的selenium工具的熟悉程度
1、selenium中如何判斷元素是否存在?
答:isElementPresent
2、selenium中hidden或者是display = none的元素是否可以定位到?
答:a、可以:定位是可以定位到的,但是不能操作,可以判斷元素is_displayed()
想點擊的話,可以用js去掉dispalay=none的屬性;b、不能:可以寫JavaScript將標簽中的hidden先改為0,再定位元素。兩個答案都算對,說明出原因即可。
3、selenium中如何保證操作元素的成功率?也就是說如何保證我點擊的元素一定是可以點擊的?
答:添加元素智能等待時間 driver.implicitly_wait(30)
添加強制等待時間(比如python中寫 sleep)
try 方式進行 id,name,clas,x path, css selector 不同方式進行定位,如果第一種失敗可以自動嘗試第二種
4、如何提高selenium腳本的執行速度?
答:1.少用sleep,盡量不用implicitly_wait
2.多用顯式等待方法
3.弄個性能好的電腦具體?(看個人思路)
5、用例在運行過程中經常會出現不穩定的情況,也就是說這次可以通過,下次就沒辦法通過了,如何去提升用例的穩定性?
答:
6、你的自動化用例的執行策略是什么?
答:自動化測試與軟件開發本質上是一樣的,利用自動化測試工具,經過測試需求分析,設計出自動化測
試用例,從而搭建自動化測試的框架,設計與編寫自動化腳本,驗證測試腳本的正確性,最終完成自
動化測試測試腳本(即主要功能為測試的應用軟件)並輸出測試結果
7、什么是持續集成?
答:持續集成是一種軟件開發實踐,即團隊開發成員經常集成它們的工作,通過每個成員每天至少集成一次,也就意味着每天可能會發生多次集成。
每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡早地發現集成錯誤。
8、自動化測試的時候是不是需要連接數據庫做數據校驗?
答:一般來說1、 UI自動化不需要(很少需要);2、接口測試會需要:從數據庫層面來進行數據校驗可以更方便驗證系統的數據處理方面是否正確;
9、有幾種元素常用定位方式,分別是?你最偏愛哪一種,為什么?
答:8種:id、name、class name、tag name、link text、partial link text、xpath、css selector 偏愛哪一種?答:xpath、css幾乎所有的元素都可以定位到,但是它們的短處在於頁面上更改了元素后位置很容易改變,且xpath語法長,定位慢,還不穩定;css語法簡潔,定位快,瑕不掩瑜,所以首先使用的還是id或者name、css等。
10、如何去定位頁面上動態加載的元素?
答:1,觸發動態加載元素的事件,直至動態元素出現,進行定位
2,WebDriverWait()方法循環去查詢是否元素加載出來了
11、如何去定位屬性動態變化的元素?
答:xpath或者css通過同級、父級、子級進行定位
點擊鏈接以后,selenium是否需要自動等待該頁面加載完畢?
答:需要
12、webdriver client的原理是什么?
答:Selenium RC的原理是當瀏覽器啟動時,向其中注入Javascript,從而使這些JS來驅動瀏覽器中的AUT
(Application Under Test),而Selenium Webdriver是通過調用瀏覽器原生的自動化API直接驅動瀏覽器
13、什么是page object設計模式?
答:簡單來說,就是把頁面作為對象,在使用中傳遞頁面對象,來使用頁面對象中相應的成員或者方法,能更好的體現面向對象語言(比如java或者python)的面向對象和封裝特性。
14、什么是斷言(assert),常用斷言方法,UI自動化中斷言方式?
答:斷言的英文是assertion,斷言檢查的英文是assertion checking。
斷言是指定一個程序必須已經存在的狀態的一個邏輯表達式,或者一組程序變量在程序執行期間的某個點上必須滿足的條件
UI自動化中斷言方式:定位頁面當前頁面或跳轉頁面中元素唯一的一個或多個元素判斷是否存在,即可。
15、你覺得自動化測試最大的缺陷是什么?
答:不穩定、可靠性、不易維護、成本與收益
16、什么是分層測試?
答:行業里面提的一般是金字塔的分層模型:UI測試、集成/接口測試、單元測試
17、列舉出你熟悉的自動化工具,並說明其實現原理
18、高質量的自動化腳本應該具有什么特性?

自動化測試面試題4:細節篇之性能篇
目的:驗證求職者在性能測試方面熟悉程度
1,基礎概念:HPS、TPS、QPS、RPS、RT、並發用戶數概念?簡要介紹?
HPS(Hits Per Second):每秒點擊次數,單位是次/秒。
TPS(Transaction per Second):系統每秒處理事務數,簡稱TPS, 每秒事務數, 是衡量系統性能的一個非常重要的指標。
QPS(Query per Second):系統每秒處理查詢次數,單位是次/秒。對於互聯網業務中,如果某些業務有且僅有一個請求連接,那么TPS=QPS=HPS,一般情況下用TPS來衡量整個業務流程,用QPS來衡量接口查詢次數,用HPS來表示對服務器點擊請求
RPS 即每秒請求數(Request Per Second),通常用來描述施壓引擎實際發出的壓力大小。PS:並發數過低時可能達不到預期的 RPS,並發數過高時可能壓力過大壓垮服務器
並發用戶數:簡稱VU ,指的是現實系統中操作業務的用戶,在性能測試工具中,一般稱為虛擬用戶數(Virutal User),注意並發用戶數跟注冊用戶數、在線用戶數有很大差別的,並發用戶數一定會對服務器產生壓力的,而在線用戶數只是 ”掛” 在系統上,對服務器不產生壓力,注冊用戶數一般指的是數據庫中存在的用戶數。
響應時間:簡稱RT,指的是業務從客戶端發起到客戶端接受的時間。
2,壓測工具?你主要看哪些指標?
答:jmeter:
Label:每個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這里顯示的就是 Name 屬性的值
#Samples:表示你這次測試中一共發出了多少個請求,如果模擬10個用戶,每個用戶迭代10次,那么這里顯示100
Average:平均響應時間——默認情況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,也可以以Transaction 為單位顯示平均響應時間
Median:中位數,也就是 50% 用戶的響應時間
90% Line:90% 用戶的響應時間
Note:關於 50% 和 90% 並發用戶數的含義,請參考下文
http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html
Min:最小響應時間
Max:最大響應時間
Error%:本次測試中出現錯誤的請求的數量/請求的總數
Throughput:吞吐量——默認情況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數
KB/Sec:每秒從服務器端接收到的數據量,相當於LoadRunner中的Throughput/Sec
3,性能測試中TPS上不去的幾種原因淺析?
TPS(Transaction Per Second):每秒事務數,指服務器在單位時間內(秒)可以處理的事務數量,一般以request/second為單位。
a、網絡帶寬 在壓力測試中,有時候要模擬大量的用戶請求,如果單位時間內傳遞的數據包過大,超過了帶寬的傳輸能力,那么就會造成網絡資源競爭,間接導致服務端接收到的請求數達不到服務端的處理能力上限。
b、連接池
可用的連接數太少,造成請求等待。連接池一般分為服務器連接池(比如Tomcat)和數據庫連接池(或者理解為最大允許連接數也行)。
c、垃圾回收機制
從常見的應用服務器來說,比如Tomcat,因為java的的堆棧內存是動態分配,具體的回收機制是基於算法,如果新生代的Eden和Survivor區頻繁的進行Minor GC,老年代的full GC也回收較頻繁,那么對TPS也是有一定影響的,因為垃圾回收其本身就會占用一定的資源。
d、數據庫配置
高並發情況下,如果請求數據需要寫入數據庫,且需要寫入多個表的時候,如果數據庫的最大連接數不夠,或者寫入數據的SQL沒有索引沒有綁定變量,抑或沒有主從分離、讀寫分離等,就會導致數據庫事務處理過慢,影響到TPS。
e、通信連接機制
串行、並行、長連接、管道連接等,不同的連接情況,也間接的會對TPS造成影響。
f、硬件資源
包括CPU(配置、使用率等)、內存(占用率等)、磁盤(I/O、頁交換等)。
g、壓力機
比如jmeter,單機負載能力有限,如果需要模擬的用戶請求數超過其負載極限,也會間接影響TPS(這個時候就需要進行分布式壓測來解決其單機負載的問題)。
h、壓測腳本
還是以jemter舉個例子,之前工作中同事遇到的,進行階梯式加壓測試,最大的模擬請求數超過了設置的線程數,導致線程不足。
提到這個原因,想表達意思是:有時候測試腳本參數配置等原因,也會影響測試結果。
i、業務邏輯
業務解耦度較低,較為復雜,整個事務處理線被拉長導致的問題。
j、系統架構
比如是否有緩存服務,緩存服務器配置,緩存命中率、緩存穿透以及緩存過期等,都會影響到測試結果。
4,性能測試工具了解幾個?壓測結果區別?
A,ab,是apache自帶的壓力測試工具
B,Jmeter 基於Java的壓力測試工具
c,Locust是一個Python編寫的分布式的性能測試工具
5,性能測試策略?
做性能測試需要一套標准化流程及測試策略。在做負載測試的時候,傳統方式一般都是按照梯度施壓的方式去加用戶數,避免在沒有預估的情況下,一次加幾萬個用戶,導致交易失敗率非常高,響應時間非常長,已經超過了使用者忍受范圍內;較為適合互聯網分布式架構的方式,是用TPS模式(吞吐量模式)+設置起始和目標最大量級,然后根據系統表現靈活的手工實時調速,效率更高,服務端吞吐能力的衡量一步到位。

6,性能測試場景設置思路?
無論並發模式還是TPS模式,場景就是一個壓測模型,壓測模型中有串行的事務(如添加購物車+購物車下單+付款)也有並行的接口(在不同串聯鏈路中的壓測API),最終組成一個復雜或者簡單的場景。然后根據新業務上線的目標、或者日常峰值的等比例目標、或者重大業務活動的預估支撐能力去設置每個API的目標能力(TPS是一步到位的按照吞吐能力設置的,推薦TPS模式,比如前面提到的添加購物車+購物車下單+付款這種流程就是一個漏斗模型,TPS設置為逐漸變小的模型即可),當然也可以在初期的測試中更謹慎一點,將目標量級設置得整體低一點,當最終能力達到之后建議可以調整原定目標量級到120%或者150%,驗證限流准入/高可用基礎設施的抗壓能力。目標量級即當前壓測場景中這個壓測API的施壓上限。而起步量級可以從5%或者10%開始,過程中視業務指標數據和被壓測端的整體負載臨時調整。

7,對服務器性能測試的看法?
針對服務器端的性能,以TPS為主來衡量系統的性能,並發用戶數為輔來衡量系統的性能,如果必須要用並發用戶數來衡量的話,需要一個前提,那就是交易在多長時間內完成,因為在系統負載不高的情況下,將思考時間(思考時間的值等於交易響應時間)加到串聯鏈路(場景)中,並發用戶數基本可以增加一倍,因此用並發用戶數來衡量系統的性能沒太大的意義。同樣的,如果系統間的吞吐能力差別很大,那么同樣的並發下TPS差距也會很大

8,系統的性能決定的要素?跟並發用戶數的關系?
由TPS決定,跟並發用戶數沒有多大關系。
系統的最大TPS是一定的(在一個范圍內),但並發用戶數不一定,可以調整。
建議性能測試的時候,不要設置過長的思考時間,以最壞的情況下對服務器施壓。

下面是我自己的群,大家一起討論學習,現在人不多,來了就是元老哦哈哈,失效的時候聯系我
————————————————
版權聲明:本文為CSDN博主「蛋糕不加蛋」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_34671951/article/details/96425740


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM