協(xié)議類問題
Q:TCP協(xié)議和UDP協(xié)議的區(qū)別是什么钉赁?
A:TCP協(xié)議和UDP協(xié)議都是傳輸層兩個(gè)非常重要的協(xié)議,它們之間的區(qū)別主要體現(xiàn)在以下三點(diǎn)。
第一點(diǎn):TCP是面向連接的一個(gè)協(xié)議袋倔。就像我們打電話要先撥號進(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)用比較注重它的傳輸可靠性冈爹,而對于速度沒那么大要求的話,就可以選擇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ā)送的非区,用來申請斷開連接瓜挽,這個(gè)報(bào)文中的一個(gè)標(biāo)志位FIN位標(biāo)記為1,我們一般也把它叫做FIN包征绸。
第二次揮手是服務(wù)器回復(fù)給客戶端的久橙,用來對它上一個(gè)斷開連接請求的報(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è)請求斷開連接的報(bào)文吭敢,這個(gè)報(bào)文中的FIN位同樣被標(biāo)記為1碰凶,所以說它也是一個(gè)FIN包。
第四次揮手是客戶端發(fā)給服務(wù)器的鹿驼,同來確認(rèn)上一個(gè)服務(wù)器斷開連接的請求欲低,所以這是一個(gè)ACK報(bào)文。
以上就是TCP協(xié)議4次揮手的過程畜晰。
Q:常見的http請求方法有哪些砾莱?
A:1、get請求凄鼻,主要用來獲取資源和數(shù)據(jù)腊瑟;
2、post請求块蚌,用來發(fā)送數(shù)據(jù)給服務(wù)器闰非,也可以創(chuàng)建或者更新資源;
3峭范、put請求财松,可以用來創(chuàng)建或者替換目標(biāo)資源;
4纱控、patch請求辆毡,可以用來對資源進(jìn)行部分修改;
5甜害、delete請求舶掖,用來刪除資源。
Q:get 請求和 post 請求的區(qū)別尔店?
A:1眨攘、GET在瀏覽器回退時(shí)是無害的,而POST會(huì)再次提交請求闹获。
2期犬、GET產(chǎn)生的URL地址可以被Bookmark,而POST不可以避诽。
3、GET請求會(huì)被瀏覽器主動(dòng)cache璃谨,而POST不會(huì)沙庐,除非手動(dòng)設(shè)置鲤妥。
4、GET請求只能進(jìn)行url編碼拱雏,而POST支持多種編碼方式棉安。
5、GET請求參數(shù)會(huì)被完整保留在瀏覽器歷史記錄里铸抑,而POST中的參數(shù)不會(huì)被保留贡耽。
6、GET請求在URL中傳送的參數(shù)是有長度限制的鹊汛,而POST么有蒲赂。
7、對參數(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:指示信息–表示請求已接收,繼續(xù)處理痰催。
2xx:成功–表示請求已被成功接收兜辞、理解、接受夸溶。
3xx:重定向–要完成請求必須進(jìn)行更進(jìn)一步的操作逸吵。
4xx:客戶端錯(cuò)誤–請求有語法錯(cuò)誤或請求無法實(shí)現(xiàn)。
5xx:服務(wù)器端錯(cuò)誤–服務(wù)器未能實(shí)現(xiàn)合法的請求缝裁。
Q:http和socket有什么區(qū)別扫皱?
A:http為短連接捷绑『裕客戶端向服務(wù)器端發(fā)送請求的時(shí)候,必須要服務(wù)器端回送響應(yīng)粹污,請求結(jié)束之后再主動(dòng)將這個(gè)鏈接釋放掉段多。通常的做法是不需要任何數(shù)據(jù)的,每隔一段時(shí)間客戶端也得向服務(wù)器端發(fā)送一個(gè)保持連接的請求壮吩,這樣子就可以保證客戶端在服務(wù)器端上是一個(gè)上線的狀態(tài)进苍。
socket為長連接加缘。通常情況下,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é)議通過非對稱加密方式來實(shí)現(xiàn)密鑰的協(xié)商摆昧,在通過一個(gè)對稱加密的方式來實(shí)現(xiàn)數(shù)據(jù)的加密。
2蜒程、它可以進(jìn)行身份的驗(yàn)證绅你,我們進(jìn)行數(shù)據(jù)交互的客戶端和服務(wù)器雙方都可以向CA機(jī)構(gòu)來申請證書,并且在ssl握手階段雙方去驗(yàn)證對方的證書昭躺,從而可以驗(yàn)證對方的身份忌锯,防止第三方進(jìn)行冒充。
3领炫、它可以保證信息的完整性偶垮,每次發(fā)送的數(shù)據(jù)我們都會(huì)加上一個(gè)MAC摘要,并且簽名帝洪,當(dāng)發(fā)送的數(shù)據(jù)和接手的數(shù)據(jù)的摘要信息是一致的話似舵,就表示這個(gè)信息沒有被第三方篡改過。
接口測試類問題
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:接口測試中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:接口測試的重點(diǎn)是什么恨闪?
A:我們需要關(guān)注一下接口的地址以及我們的參數(shù)都是正確的放坏,還要關(guān)注一下接口的返回值,包括status钧敞、msg、還有code等值是正確的镜廉。我們還需要去查看數(shù)據(jù)庫里面的數(shù)據(jù)愚战,確保數(shù)據(jù)的正確性寂玲,特別是有錯(cuò)誤的時(shí)候拓哟,我們需要通過排查日志,以及去數(shù)據(jù)庫里查看數(shù)據(jù)來排查問題流纹。
測試基礎(chǔ)類問題
Q:git和svn的區(qū)別是什么捧颅?
A:SVN和Git都是版本控制工具较雕。相對來說亮蒋,SVN它是一種集中管理,它所有的代碼都在一個(gè)服務(wù)器上面贮尖,而且它的主線和分支上面的url是不一樣的湿硝。Git的話是一種分布式管理润努,去中心化,服務(wù)器以及每一個(gè)開發(fā)都擁有一個(gè)本地管理倉庫痢畜,它的分支和主線的地址都是一樣的丁稀。
Q:云測平臺有哪些?
A:云測平臺提供了一個(gè)遠(yuǎn)程租賃真機(jī)的服務(wù)线衫。一般來說云測平臺是通過自動(dòng)化框架來實(shí)現(xiàn)的真機(jī)上的腳本自動(dòng)化運(yùn)行的桶雀;或者是遠(yuǎn)程租賃真機(jī)唬复,然后人工測試敞咧;或者是真人真機(jī)進(jìn)行測試休建。
由于安卓端的設(shè)備種類比較多,所以云測平臺一般來說在安卓端的使用比較廣泛一些∫鹆遥現(xiàn)在國內(nèi)外都提供了非常多的云測平臺呜投,比如說國內(nèi)游testin仑荐,百度MTC纵东,還有騰訊優(yōu)測偎球;國外有Pefecto和TestDroid等等衰絮。
Q:Web兼容性測試的工作內(nèi)容是什么?
A:主要從以下幾個(gè)方面來考慮:首先是瀏覽器难裆,然后是操作系統(tǒng)褂痰,還有分辨率以及網(wǎng)速等因素來考慮web兼容性測試缩歪。針對Web應(yīng)用谍憔,我們主要考慮瀏覽器的兼容性測試习贫。而瀏覽器兼容性測試一般來說是伴隨著功能一起來做的,我們在驗(yàn)證這個(gè)應(yīng)用的功能的同時(shí)颤绕,需要同步檢查頁面的格式奥务、字體,還有各種輸入框氯葬、下拉框帚称、復(fù)選框憨攒、按鈕等等肝集,它們的排版和顯示是否正常,不會(huì)出現(xiàn)重疊和錯(cuò)亂等現(xiàn)象所刀。
場景類問題
Q:圖片加載不出來浮创,定位思路是什么砌函?
A:首先我們需要去收集用戶的各種信息斩披,包括環(huán)境信息溜族,瀏覽器信息,以及用戶的操作信息和網(wǎng)絡(luò)狀態(tài)等等垦沉,然后把收集到的用戶信息在測試環(huán)節(jié)中進(jìn)行復(fù)現(xiàn)煌抒。具體思路可以是:是否網(wǎng)絡(luò)不好?是否被某些工具屏蔽了圖片的顯示厕倍?是否瀏覽器不兼容寡壮?是否GIF圖片無插件的支持?如果這些都不是讹弯,那么我們可能需要通過查看服務(wù)器上的后端日志况既,提交給開發(fā),通過開發(fā)的協(xié)助去定位問題组民。
Q:在接口測試階段測過了所有功能,還需要進(jìn)行功能測試嗎?
A:需要測試的否纬。接口測試是為了提前發(fā)現(xiàn)問題,而讓測試提前介入的一種測試乏沸。雖然在接口階段蝶缀,我們會(huì)驗(yàn)證所有的功能,但是后端跟前端進(jìn)行集成的時(shí)候鳍悠,依然可能會(huì)發(fā)現(xiàn)一些兼容性的問題薯蝎。所以我們在做系統(tǒng)測試的時(shí)候是需要去驗(yàn)證一遍功能的,但是在接口測試過程中,由于我們提前驗(yàn)證了所有的功能却紧,因此在系統(tǒng)測試過程中進(jìn)行功能測試的時(shí)候bug會(huì)少很多巫俺,從而提高了測試效率舶沛。
Q:接到線上用戶報(bào)障時(shí),該如何解決?
A:首先瘤载,如果說是用戶已經(jīng)發(fā)現(xiàn)的問題,是一個(gè)現(xiàn)成問題的話,我們可以通過分析日志來分析這個(gè)用戶的問題;其次,如果這個(gè)問題不是一個(gè)現(xiàn)成的問題,那么我們可以去分析用戶的操作步驟以及環(huán)境配置,去模擬用戶的使用場景,在測試環(huán)境里復(fù)現(xiàn)這個(gè)問題。
一旦復(fù)現(xiàn)出來咪啡,就要把這個(gè)場景添加到用例里面去褒纲,以便后續(xù)的測試執(zhí)行和回歸彻秆,可以更加貼近用戶的使用場景。
Q:Linux下編輯文件的常用命令有哪些蔫耽?
A:首先是比較常用的是vi或者是vim慰枕,可以直接對Linux下的文件進(jìn)行編輯并保存具帮。第二個(gè)是sed命令掘猿,它是一種以“行”為單位稠通,對Linux下面的文件進(jìn)行文本編輯的命令。第三種個(gè)是awk命令,它既可以以“行”為單位,又可以以“列”為單位進(jìn)行文本編輯筏餐,相對來說會(huì)強(qiáng)大一點(diǎn)。第四個(gè)是cut命令,它可以對文本進(jìn)行切割律想,同樣是以“行”為單位瞻佛,對文本進(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ù)更新~~