測(cè)試工程師技術(shù)面問題匯總

協(xié)議類問題

Q:TCP協(xié)議和UDP協(xié)議的區(qū)別是什么?
A:TCP協(xié)議和UDP協(xié)議都是傳輸層兩個(gè)非常重要的協(xié)議,它們之間的區(qū)別主要體現(xiàn)在以下三點(diǎn)。
第一點(diǎn):TCP是面向連接的一個(gè)協(xié)議。就像我們打電話要先撥號(hào)進(jìn)行連接一樣;而UDP它是一個(gè)無連接的協(xié)議,在發(fā)送數(shù)據(jù)之前是不需要建立連接的。
第二點(diǎn):TCP是一個(gè)可靠的協(xié)議。它可以保證它的傳輸數(shù)據(jù)是無差錯(cuò)的,不會(huì)丟包,不會(huì)重復(fù),而且是按順序到達(dá)的。而UDP協(xié)議它是不可靠的協(xié)議。它是盡最大的努力去交付數(shù)據(jù),但是它的數(shù)據(jù)可能會(huì)有丟包,可能會(huì)有重復(fù),也可能會(huì)有差錯(cuò)。
第三點(diǎn):TCP基于以上的兩個(gè)特點(diǎn),所以它的傳輸效率會(huì)比較低,有些應(yīng)用比較注重它的傳輸可靠性,而對(duì)于速度沒那么大要求的話,就可以選擇TCP協(xié)議,比如說我們的http協(xié)議,F(xiàn)TP協(xié)議等。而UDP協(xié)議因?yàn)槭遣豢煽康?,所以它的速度?huì)非???,某些應(yīng)用比較注重速度,而不在乎一兩個(gè)丟包的情況下,選擇UDP協(xié)議來進(jìn)行傳輸,比如說IP電話,流媒體。

Q:說說TCP協(xié)議的4次揮手過程。
A:當(dāng)TCP協(xié)議完成數(shù)據(jù)發(fā)送之后,就會(huì)開始斷開這個(gè)鏈接,這個(gè)時(shí)候就需要經(jīng)歷TCP4次揮手的過程。
第一次揮手一般是客戶端向服務(wù)器發(fā)送的,用來申請(qǐng)斷開連接,這個(gè)報(bào)文中的一個(gè)標(biāo)志位FIN位標(biāo)記為1,我們一般也把它叫做FIN包。
第二次揮手是服務(wù)器回復(fù)給客戶端的,用來對(duì)它上一個(gè)斷開連接請(qǐng)求的報(bào)文進(jìn)行確認(rèn),這個(gè)報(bào)文中它的標(biāo)志位ACK位被標(biāo)記為1,我們一般稱為ACK報(bào)文。
第三次揮手也是服務(wù)器發(fā)給客戶端的,這個(gè)時(shí)候服務(wù)器的數(shù)據(jù)已經(jīng)發(fā)送完畢,它會(huì)發(fā)起一個(gè)請(qǐng)求斷開連接的報(bào)文,這個(gè)報(bào)文中的FIN位同樣被標(biāo)記為1,所以說它也是一個(gè)FIN包。
第四次揮手是客戶端發(fā)給服務(wù)器的,同來確認(rèn)上一個(gè)服務(wù)器斷開連接的請(qǐng)求,所以這是一個(gè)ACK報(bào)文。
以上就是TCP協(xié)議4次揮手的過程。

Q:常見的http請(qǐng)求方法有哪些?
A:1、get請(qǐng)求,主要用來獲取資源和數(shù)據(jù);
2、post請(qǐng)求,用來發(fā)送數(shù)據(jù)給服務(wù)器,也可以創(chuàng)建或者更新資源;
3、put請(qǐng)求,可以用來創(chuàng)建或者替換目標(biāo)資源;
4、patch請(qǐng)求,可以用來對(duì)資源進(jìn)行部分修改;
5、delete請(qǐng)求,用來刪除資源。

Q:get 請(qǐng)求和 post 請(qǐng)求的區(qū)別?
A:1、GET在瀏覽器回退時(shí)是無害的,而POST會(huì)再次提交請(qǐng)求。
2、GET產(chǎn)生的URL地址可以被Bookmark,而POST不可以。
3、GET請(qǐng)求會(huì)被瀏覽器主動(dòng)cache,而POST不會(huì),除非手動(dòng)設(shè)置。
4、GET請(qǐng)求只能進(jìn)行url編碼,而POST支持多種編碼方式。
5、GET請(qǐng)求參數(shù)會(huì)被完整保留在瀏覽器歷史記錄里,而POST中的參數(shù)不會(huì)被保留。
6、GET請(qǐng)求在URL中傳送的參數(shù)是有長(zhǎng)度限制的,而POST么有。
7、對(duì)參數(shù)的數(shù)據(jù)類型,GET只接受ASCII字符,而POST沒有限制。
8、GET比POST更不安全,因?yàn)閰?shù)直接暴露在URL上,所以不能用來傳遞敏感信息。
9、GET參數(shù)通過URL傳遞,POST放在Request body中。

Q:常見的狀態(tài)碼有哪些?
A:1xx:指示信息–表示請(qǐng)求已接收,繼續(xù)處理。
2xx:成功–表示請(qǐng)求已被成功接收、理解、接受。
3xx:重定向–要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作。
4xx:客戶端錯(cuò)誤–請(qǐng)求有語法錯(cuò)誤或請(qǐng)求無法實(shí)現(xiàn)。
5xx:服務(wù)器端錯(cuò)誤–服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求。

Q:http和socket有什么區(qū)別?
A:http為短連接??蛻舳讼蚍?wù)器端發(fā)送請(qǐng)求的時(shí)候,必須要服務(wù)器端回送響應(yīng),請(qǐng)求結(jié)束之后再主動(dòng)將這個(gè)鏈接釋放掉。通常的做法是不需要任何數(shù)據(jù)的,每隔一段時(shí)間客戶端也得向服務(wù)器端發(fā)送一個(gè)保持連接的請(qǐng)求,這樣子就可以保證客戶端在服務(wù)器端上是一個(gè)上線的狀態(tài)。
socket為長(zhǎng)連接。通常情況下,socket連接也叫TCP連接,因此socket連接一旦建立,雙方開始互相發(fā)送數(shù)據(jù),直到雙方斷開連接。在實(shí)際應(yīng)用過程中間由于網(wǎng)絡(luò)節(jié)點(diǎn)過多,會(huì)被節(jié)點(diǎn)給斷開連接,因此我們要通過輪詢高速網(wǎng)絡(luò)讓這個(gè)節(jié)點(diǎn)處于活躍狀態(tài)。

Q:https協(xié)議比http協(xié)議安全是如何實(shí)現(xiàn)的?
A:https協(xié)議主要通過SSL協(xié)議來實(shí)現(xiàn)。它的安全性主要體現(xiàn)在以下幾點(diǎn):
1、它的數(shù)據(jù)是加密的SSL協(xié)議通過非對(duì)稱加密方式來實(shí)現(xiàn)密鑰的協(xié)商,在通過一個(gè)對(duì)稱加密的方式來實(shí)現(xiàn)數(shù)據(jù)的加密。
2、它可以進(jìn)行身份的驗(yàn)證,我們進(jìn)行數(shù)據(jù)交互的客戶端和服務(wù)器雙方都可以向CA機(jī)構(gòu)來申請(qǐng)證書,并且在ssl握手階段雙方去驗(yàn)證對(duì)方的證書,從而可以驗(yàn)證對(duì)方的身份,防止第三方進(jìn)行冒充。
3、它可以保證信息的完整性,每次發(fā)送的數(shù)據(jù)我們都會(huì)加上一個(gè)MAC摘要,并且簽名,當(dāng)發(fā)送的數(shù)據(jù)和接手的數(shù)據(jù)的摘要信息是一致的話,就表示這個(gè)信息沒有被第三方篡改過。

接口測(cè)試類問題

Q:Jmeter參數(shù)化有哪幾種方法?
A:1、可以通過函數(shù)助手來實(shí)現(xiàn)參數(shù)化,比如說像_RandomString這種隨機(jī)函數(shù);
2、通過csv讀取文檔數(shù)據(jù),實(shí)現(xiàn)參數(shù)化;
3、通過配置元件,用戶定義變量來實(shí)現(xiàn)參數(shù)化;
4、通過前置處理器中的用戶參數(shù)也可以實(shí)現(xiàn)參數(shù)化。

Q:接口測(cè)試中content-type的常見類型有哪些?
A:第一種是application/json,這種類型適合提交一些復(fù)雜結(jié)構(gòu)的數(shù)據(jù),比如Restful風(fēng)格的接口。
第二種是application form格式的數(shù)據(jù),它是瀏覽器的原生表單形式。
第三種是text/xml格式,它是一種以http協(xié)議為傳輸協(xié)議,以xml為編碼方式的遠(yuǎn)程調(diào)用規(guī)范。一般來說它在webservice這種結(jié)構(gòu)里比較常見。
第四種是multipart form-data,需要在表單格式中上傳文件時(shí)就會(huì)使用到這種格式。

Q:接口測(cè)試的重點(diǎn)是什么?
A:我們需要關(guān)注一下接口的地址以及我們的參數(shù)都是正確的,還要關(guān)注一下接口的返回值,包括status、msg、還有code等值是正確的。我們還需要去查看數(shù)據(jù)庫里面的數(shù)據(jù),確保數(shù)據(jù)的正確性,特別是有錯(cuò)誤的時(shí)候,我們需要通過排查日志,以及去數(shù)據(jù)庫里查看數(shù)據(jù)來排查問題。

測(cè)試基礎(chǔ)類問題

Q:git和svn的區(qū)別是什么?
A:SVN和Git都是版本控制工具。相對(duì)來說,SVN它是一種集中管理,它所有的代碼都在一個(gè)服務(wù)器上面,而且它的主線和分支上面的url是不一樣的。Git的話是一種分布式管理,去中心化,服務(wù)器以及每一個(gè)開發(fā)都擁有一個(gè)本地管理倉庫,它的分支和主線的地址都是一樣的。

Q:云測(cè)平臺(tái)有哪些?
A:云測(cè)平臺(tái)提供了一個(gè)遠(yuǎn)程租賃真機(jī)的服務(wù)。一般來說云測(cè)平臺(tái)是通過自動(dòng)化框架來實(shí)現(xiàn)的真機(jī)上的腳本自動(dòng)化運(yùn)行的;或者是遠(yuǎn)程租賃真機(jī),然后人工測(cè)試;或者是真人真機(jī)進(jìn)行測(cè)試。
由于安卓端的設(shè)備種類比較多,所以云測(cè)平臺(tái)一般來說在安卓端的使用比較廣泛一些。現(xiàn)在國(guó)內(nèi)外都提供了非常多的云測(cè)平臺(tái),比如說國(guó)內(nèi)游testin,百度MTC,還有騰訊優(yōu)測(cè);國(guó)外有Pefecto和TestDroid等等。

Q:Web兼容性測(cè)試的工作內(nèi)容是什么?
A:主要從以下幾個(gè)方面來考慮:首先是瀏覽器,然后是操作系統(tǒng),還有分辨率以及網(wǎng)速等因素來考慮web兼容性測(cè)試。針對(duì)Web應(yīng)用,我們主要考慮瀏覽器的兼容性測(cè)試。而瀏覽器兼容性測(cè)試一般來說是伴隨著功能一起來做的,我們?cè)隍?yàn)證這個(gè)應(yīng)用的功能的同時(shí),需要同步檢查頁面的格式、字體,還有各種輸入框、下拉框、復(fù)選框、按鈕等等,它們的排版和顯示是否正常,不會(huì)出現(xiàn)重疊和錯(cuò)亂等現(xiàn)象。

場(chǎng)景類問題

Q:圖片加載不出來,定位思路是什么?
A:首先我們需要去收集用戶的各種信息,包括環(huán)境信息,瀏覽器信息,以及用戶的操作信息和網(wǎng)絡(luò)狀態(tài)等等,然后把收集到的用戶信息在測(cè)試環(huán)節(jié)中進(jìn)行復(fù)現(xiàn)。具體思路可以是:是否網(wǎng)絡(luò)不好?是否被某些工具屏蔽了圖片的顯示?是否瀏覽器不兼容?是否GIF圖片無插件的支持?如果這些都不是,那么我們可能需要通過查看服務(wù)器上的后端日志,提交給開發(fā),通過開發(fā)的協(xié)助去定位問題。

Q:在接口測(cè)試階段測(cè)過了所有功能,還需要進(jìn)行功能測(cè)試嗎?
A:需要測(cè)試的。接口測(cè)試是為了提前發(fā)現(xiàn)問題,而讓測(cè)試提前介入的一種測(cè)試。雖然在接口階段,我們會(huì)驗(yàn)證所有的功能,但是后端跟前端進(jìn)行集成的時(shí)候,依然可能會(huì)發(fā)現(xiàn)一些兼容性的問題。所以我們?cè)谧鱿到y(tǒng)測(cè)試的時(shí)候是需要去驗(yàn)證一遍功能的,但是在接口測(cè)試過程中,由于我們提前驗(yàn)證了所有的功能,因此在系統(tǒng)測(cè)試過程中進(jìn)行功能測(cè)試的時(shí)候bug會(huì)少很多,從而提高了測(cè)試效率。

Q:接到線上用戶報(bào)障時(shí),該如何解決?
A:首先,如果說是用戶已經(jīng)發(fā)現(xiàn)的問題,是一個(gè)現(xiàn)成問題的話,我們可以通過分析日志來分析這個(gè)用戶的問題;其次,如果這個(gè)問題不是一個(gè)現(xiàn)成的問題,那么我們可以去分析用戶的操作步驟以及環(huán)境配置,去模擬用戶的使用場(chǎng)景,在測(cè)試環(huán)境里復(fù)現(xiàn)這個(gè)問題。
一旦復(fù)現(xiàn)出來,就要把這個(gè)場(chǎng)景添加到用例里面去,以便后續(xù)的測(cè)試執(zhí)行和回歸,可以更加貼近用戶的使用場(chǎng)景。

Q:Linux下編輯文件的常用命令有哪些?
A:首先是比較常用的是vi或者是vim,可以直接對(duì)Linux下的文件進(jìn)行編輯并保存。第二個(gè)是sed命令,它是一種以“行”為單位,對(duì)Linux下面的文件進(jìn)行文本編輯的命令。第三種個(gè)是awk命令,它既可以以“行”為單位,又可以以“列”為單位進(jìn)行文本編輯,相對(duì)來說會(huì)強(qiáng)大一點(diǎn)。第四個(gè)是cut命令,它可以對(duì)文本進(jìn)行切割,同樣是以“行”為單位,對(duì)文本進(jìn)行處理。

Q:Linux如何查看日志?
A:一般在項(xiàng)目的服務(wù)器里面會(huì)有一個(gè)名為logs的目錄,這個(gè)目錄就是用來存放項(xiàng)目日志的,我們的項(xiàng)目日志文件一般都是以.log為后綴。
我們可以用tail -f命令來查看實(shí)時(shí)更新的日志,讓它在屏幕上面實(shí)時(shí)刷新出最新的當(dāng)前日志,還可以用Ctrl+c來終止日志輸出。
(這個(gè)問題我會(huì)出一篇詳細(xì)的文檔來說說使用Linux查看日志有哪些方法)


本文將持續(xù)更新~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容