【已解決】面試測試崗位遇到的幾個未解決的問題
本來可以問面試官的,面的太差,不想開口啦,哈哈哈哈
1. api介面中的冪等性有什麼解決方案?
冪等性三個字平常倒是聽說過,但只浮於表面聽過而已,是什麼意思,不清楚;
百度給出但解釋是:
抄用一段數學上的定義:f(f(x)) = f(x)。x被函式f作用一次和作用無限次的結果是一樣的。冪等性應用在軟體系統中,我把它簡單定義為:某個函式或者某個介面使用相同引數呼叫一次或者無限次,其造成的後果是一樣的,在實際應用中一般針對於介面進行冪等性設計。舉個栗子,在系統中,呼叫方A呼叫系統B的介面進行使用者的扣費操作時,由於網路不穩定,A重試了N次該請求,那麼不管B是否接收到多少次請求,都應該保證只會扣除該使用者一次費用。
列舉三種改進方式:
1、 悲觀鎖,select for update,整個執行過程中鎖定該訂單對應的記錄。 2、樂觀鎖,affectrows = db.update("update payorder set state='已支付' where orderid=$orderid and state='未支付' "),如果affectrows=1,執行充值,否則返回已處理。 3、定義notifylog表,orderid為unique key或者primary key,執行前,先insert,若insert成功則執行充值,否則返回已處理。 以上簡單例子用以說明冪等性常用應用實現,在SOA化系統中,可能很多原子功能都被拆分到不同的程序裡,如charge充值這個函式,可能在另一個程序中,那麼整個業務的鏈路就會更長,可能回撥成功了,但是充值失敗。同理,只要充值介面保證冪等性,對於已經回撥過但是充值結果未返回的請求,回撥接收程式,應當重複發起充值請求。更深入更復雜的應用場景,在資料一致性中再細講。2. api介面中返回資訊是很複雜的json格式,有些順序可能有誤,有可能是一層包一層的順序錯誤,要如何檢查驗證,最好能自動化?
回頭試試jmeter能否處理,乾脆一步到位點,將json物件每一個contains做個判斷,只有完全符合,才bellshell斷言成功。
目前限於想法,能否實現再說;
更新20180620:以下隨筆中提到的json提取器或者json斷言,可以解決。主要原理,就是定位json中一層層元素,元素位置即元素層級不正確,會有定位不到的問題,也就會斷言失敗了
3. 效能測試中,如何檢視伺服器的資源情況?如果是4核或者8核,如何具體看每核的資源使用情況?
vmstat -2 每隔2秒輸出伺服器cpu/記憶體等資訊
free
top
uptime
終於明白了,是我理解有問題,有的是VM linux伺服器,有的是physical。
而cat /proc/cpuinfo出來的processerid 是指總共的core核心數。
所有一般命令,比如top ,之後敲一下1,所顯示的cpu0~cpun就是總共的核心數。
附贈一個簡單的指令碼,持續列印top 命令到home 目錄下
top -b -d 5 > ~/cpu_result
grep Cpu cpu_result | awk "{print NR,\$5,\$2,\$3,\$7,\$8}" | sed "s|\%\([a-z]\)\([a-z]\)\,||g"
統計連結數,分別在windows中和linux下
C:\Users\jasqia.AP>netstat -ano | find "10.215.70.172:443" | find "ESTABLISHED" /c
50
C:\Users\jasqia.AP>netstat -ano | find "10.215.70.172:443" | find "TIME_WAIT" /c
2233
[[email protected] apache-tomcat-7.0.42]$ netstat -ano | grep 10.201.10.13 | grep ESTABLISHED | wc -l
302
[[email protected] apache-tomcat-7.0.42]$ netstat -ano | grep 10.201.10.13 | grep TIME_WAIT | wc -l
144
如何判斷當前主機是物理機還是虛擬機器?
windows中
C:\Users\jasqia.AP>Systeminfo | find "System Model"
System Model: OptiPlex 3020
物理機
mesg | grep -i virtual
DMI: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 09/21/2015
hpet0: at MMIO 0xfed00000 (virtual 0xffffffffff5fe000), IRQs 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Vendor: VMware Model: Virtual disk Rev: 1.0
虛擬機器