經(jīng)典測試工程師面試題(一)

經(jīng)典測試工程師面試題(二)
經(jīng)典測試工程師面試題(三)

背景

為了擴(kuò)展家里領(lǐng)導(dǎo)的測試知識水平和專業(yè)知識能力提升蝙昙,以及為以后更好的面試做基礎(chǔ)瓷们,特意從眾多測試相關(guān)題型整理出來塑径,其中的答案僅供參考葡盗。

白盒和黑盒的區(qū)別审磁,你是怎么運(yùn)用的酒来?

黑盒測試:已知產(chǎn)品的功能設(shè)計(jì)規(guī)格卢未,可以進(jìn)行測試證明每個(gè)實(shí)現(xiàn)了的功能是否符合要求。利用其檢查功能是否符合需求說明書堰汉,能夠正常使用辽社,
白盒測試:已知產(chǎn)品的內(nèi)部工作過程,可以進(jìn)行測試證明每種內(nèi)部操作是否符合設(shè)計(jì)規(guī)格要求翘鸭,所有內(nèi)部成分是否經(jīng)過檢查
利用其檢查程序模塊的內(nèi)部邏輯走向滴铅,主要覆蓋程序內(nèi)的邏輯。

如何設(shè)計(jì)測試用例就乓?什么樣子的測試用例是好用例汉匙?

掌握邊界值分析、等價(jià)類劃分生蚁、錯(cuò)誤推測等方法來設(shè)計(jì)測試用例
是一個(gè)完備的集合噩翠,它能夠覆蓋所有等價(jià)類以及各種邊界值;需要從軟件功能需求出發(fā)邦投,全面地伤锚,無遺漏地識別出測試需求;最好是代碼覆蓋測試也全面的測試

功能測試在 beta 版本對外的上線標(biāo)準(zhǔn)是什么志衣?

測試用例全部跑完并且bug都已經(jīng)關(guān)閉屯援,然后業(yè)務(wù)驗(yàn)收后可以上線

請描述下你公司的測試流程?

需求分析討論-確定測試策略-設(shè)計(jì)測試用例-測試用例評審-beta測試-uat測試-測試報(bào)告

請描述下bug的幾個(gè)要素念脯?

1.沒有實(shí)現(xiàn)需求說明書列出的功能
2.出現(xiàn)了需要說明書提到不應(yīng)出現(xiàn)的事情
3.實(shí)現(xiàn)了需求說明書未提到的功能
4.沒有實(shí)現(xiàn)說明書中沒有提到但應(yīng)該實(shí)現(xiàn)的功能
5.難于使用狞洋,運(yùn)轉(zhuǎn)速度很慢,用戶認(rèn)為沒有達(dá)到預(yù)期

請問你們公司是如何做接口測試的和二?

swagger 徘铝、 接口自動(dòng)化腳本

接口測試質(zhì)量評估標(biāo)準(zhǔn)是什么?

接口表現(xiàn)與接口文檔的一致性
請求參數(shù):必選和非必選惯吕、長度惕它、字符類型、為空废登、缺失淹魄、組合、重復(fù)
返回?cái)?shù)據(jù):正常和異常

請問你們公司是如何做性能測試的堡距?請講訴性能測試的相關(guān)指標(biāo)甲锡?

1.做性能需求分析兆蕉,挑選了用戶使用最頻繁的功能來做性能測試,比如:登陸缤沦,搜索虎韵,提交訂單,確定性能指標(biāo)缸废,比如:事務(wù)通過率為100%包蓝,90%的事務(wù)響應(yīng)時(shí)間不超過5秒,并發(fā)用戶為1000人企量,CPU和內(nèi)存的使用率為70%以下
2.性能測試計(jì)劃测萎,明確測試時(shí)間(通常在功能穩(wěn)定后,如第一輪測試后進(jìn)行)和測試環(huán)境和測試工具的選擇
3.編寫性能測試用例
4.搭建性能測試環(huán)境届巩,準(zhǔn)備好性能測試數(shù)據(jù)
5.通過性能測試用例硅瞧,編寫性能測試腳本
6.性能測試腳本進(jìn)行調(diào)優(yōu),設(shè)置檢查點(diǎn)恕汇、參數(shù)化腕唧、關(guān)聯(lián)、集合點(diǎn)拇勃、事務(wù)四苇,調(diào)整思考時(shí)間,刪除冗余的腳本等
7.設(shè)計(jì)性能測試場景方咆,使用nmon工具監(jiān)控服務(wù)器月腋,運(yùn)行測試場景
8.分析性能測試結(jié)果,如果有問題(性能瓶頸)瓣赂,收集相關(guān)的日志提單給開發(fā)修改
9.開發(fā)修改好后榆骚,回歸性能測試
10.編寫性能測試報(bào)告
相關(guān)指標(biāo):響應(yīng)時(shí)間、并發(fā)數(shù)煌集、吞吐率妓肢、資源利用率、TPS

壓力測試和負(fù)載測試的區(qū)別

負(fù)載測試是模擬實(shí)際軟件系統(tǒng)所承受的負(fù)載條件的系統(tǒng)負(fù)荷苫纤,通過不斷加載(如逐漸增加模擬用戶的數(shù)量)或其它加載方式來觀察不同負(fù)載下系統(tǒng)的響應(yīng)時(shí)間和數(shù)據(jù)吞吐量碉钠、系統(tǒng)占用的資源(如CPU、內(nèi)存)等卷拘,以檢驗(yàn)系統(tǒng)的行為和特性喊废,以發(fā)現(xiàn)系統(tǒng)可能存在的性能瓶頸、內(nèi)存泄漏栗弟、不能實(shí)時(shí)同步等問題
壓力測試是在高負(fù)載情況下對系統(tǒng)的穩(wěn)定性進(jìn)行測試污筷。是在高負(fù)載(大數(shù)據(jù)量、大量并發(fā)用戶等)下的測試乍赫,觀察系統(tǒng)在峰值使用情況下的表現(xiàn)瓣蛀,從而發(fā)現(xiàn)系統(tǒng)的功能隱患
負(fù)載測試:多用戶陆蟆,用戶數(shù)漸增,持續(xù)同時(shí)發(fā)同一業(yè)務(wù)請求惋增,產(chǎn)出最大TPS
壓力測試:多用戶叠殷,資源使用飽和,持續(xù)同時(shí)發(fā)同一業(yè)務(wù)請求器腋,產(chǎn)出系統(tǒng)瓶頸或使用極限

服務(wù)器中一般要監(jiān)控哪些數(shù)據(jù)溪猿,如何監(jiān)控的,怎么從監(jiān)控?cái)?shù)據(jù)中發(fā)現(xiàn)問題纫塌?

基礎(chǔ)監(jiān)控和應(yīng)用監(jiān)控。
基礎(chǔ)監(jiān)控包括機(jī)器是否死機(jī)讲弄,cpu措左,內(nèi)存,磁盤使用率等避除;應(yīng)用監(jiān)控包括日志監(jiān)控怎披、端口監(jiān)控、進(jìn)程數(shù)監(jiān)控等瓶摆。

假設(shè)系統(tǒng)A調(diào)用系統(tǒng)B凉逛,我把B的接口都mock了,進(jìn)行性能測試群井,這樣有什么好處和壞處状飞?

好處:防止系統(tǒng)B出錯(cuò)引起測試錯(cuò)誤;不會(huì)因系統(tǒng)B的開發(fā)進(jìn)度影響測試书斜;mock后可以快速返回結(jié)果诬辈,提高測試效率
壞處:很多情況下無法完全模擬出服務(wù)器的所有可能的返回情況,另外荐吉,mock掉了關(guān)聯(lián)方之后焙糟,整個(gè)環(huán)境的連通性可能測試的不到位。

有一天早上打車高峰样屠,滴滴服務(wù)端掛了大概30分鐘穿撮,工程師搶修之后,馬上上線痪欲,之后又掛了悦穿,請問有哪些原因會(huì)造成這個(gè)情況?

服務(wù)器內(nèi)存不夠勤揩、服務(wù)器超出負(fù)載咧党、并發(fā)量太大、遇到惡意攻擊

如何看待自動(dòng)化和手動(dòng)測試陨亡?怎樣的一個(gè)比例才是健康的傍衡?

自動(dòng)化適合做為回歸測試的主要方式深员,新上線的功能一般都是用手動(dòng)測試方式,一些極端和用戶習(xí)慣操作還是手動(dòng)測試比較方便蛙埂。盡可能線上穩(wěn)定的功能模塊都做成自動(dòng)化倦畅,提供效率

你們公司的自動(dòng)化投入產(chǎn)出比怎樣?效益怎樣绣的?

自動(dòng)化主要作為回歸測試叠赐,減少測試時(shí)間。UI自動(dòng)化么有弄屡江,基本找不到bug 芭概。

完整運(yùn)行一次自動(dòng)化用例需要多久時(shí)間?

主要跑的是業(yè)務(wù)流惩嘉,所以跑一次需要半個(gè)小時(shí)左右

什么是分層自動(dòng)化罢洲?

金字塔結(jié)構(gòu), 最底層UnitTest文黎,往上接口API/集成起來的service惹苗, 最上面UI自動(dòng)化

你的測試數(shù)據(jù)是怎么準(zhǔn)備的?

提前準(zhǔn)備好耸峭,在代碼里的yaml文件

測試腳本的維護(hù)成本是怎么樣的桩蓉?

業(yè)務(wù)不變的情況下,一般腳本都是不壞不動(dòng)的

請寫出冒泡排序劳闹。

#冒泡排序:n*n
def bubbleSort(array):
  maxindex = len(array)-1
  maxValue = array[maxindex]
  k=0
  while maxindex:
      for i in range(1,maxindex):
          if array[i-1]>array[i]:
              temp = array[i]
              array[i] = array[i-1]
              array[i-1] = temp
          k+=1
      maxindex -=1
  print(k)
  return array

1~9999數(shù)列中數(shù)字3出現(xiàn)的次數(shù)院究。用遞推方法解出。

def count_digit(number):
    return len(str(number))

def countThree(digit):
    if not isinstance(digit,int):
        raise TypeError('number is not int')
    # digit = len(str(number))
    if(digit <=0):
        return 0
    if(digit ==1):
        return 1
    return 10*countThree(digit-1) + 10 **(digit-1)

print(countThree(count_digit(9999)))

從一個(gè)數(shù)組中找出前4個(gè)最大的數(shù)玷或,用最優(yōu)解儡首。

#快速排序:最快的n*logN
def qiuckSort(list):
    if len(list)<2:
        return list
    mid = list[0]
    left = [i for i in list[1:] if i <= mid]
    right = [i for i in list[1:] if i > mid]
    finallyList = qiuckSort(left)+[mid] + qiuckSort(right)
    return finallyList
array = [3, 0, 1, 832,23,45, 5, 5, 6,46, 9, 56, 897]
print(qiuckSort(array)[-4:])

寫一段程序,刪除字符串a(chǎn)中包含的字符串b偏友,舉例 輸入a = "asdw",b = "sd" 返回 字符串 “aw”蔬胯,并且測試這個(gè)程序。

def delBString(a,b):
    if not isinstance(a,str):
        raise TypeError("a is not str")
    if not isinstance(b,str):
        raise TypeError("b is not str")
    if len(a) < len(b):
        raise Exception('a length must large to b length')
    result = []
    flag = False
    i=0
    la = len(a)
    lb = len(b)
    while i <la:
        j = 0
        while j < lb:
            if i+j < la and a[i+j] == b[j]:
                j += 1
            else :
                j += 1
                flag = False
                break
            flag = True
        if flag:
            i += lb
        else:
            result.append(a[i])
            i += 1
    return "".join(result)
測試用例:
class TestdelInnerStringFunctions():
    def setUp(self):
        pass
    def tearDown(self):
        pass
    def test_nomorl1(self):
        assert delBString('asdqwe','we') == 'asdq'
    def test_nomorl2(self):
        assert delBString('asdqwe','0') == 'asdqwe'
    def test_nomorl3(self):
        assert delBString('測試asdqwe','we') == '測試asdq'
    def test_nomorl4(self):
        assert delBString('測試asdqwe','測試') == 'asdqwe'
    def test_nomorl5(self):
        assert delBString('asdqwe','') == 'asdqwe'
    def test_nomorl6(self):
        with pytest.raises(TypeError):
            delBString('', 0)
    def test_nomorl7(self):
        with pytest.raises(TypeError):
            delBString(0, 'as')
    def test_nomorl8(self):
        with pytest.raises(TypeError):
            delBString(True)
    def test_nomorl9(self):
       with pytest.raises(Exception) as excinfo:
           delBString('acd','acde')
       assert "a length must large to b length" in str(excinfo.value)
       assert excinfo.type == Exception

寫一個(gè)方法位他,把字符串轉(zhuǎn)為數(shù)字氛濒,比如 str="1234",變成 int 1234鹅髓。并且測試這個(gè)程序舞竿。

def StrToInt(a):
    res ,mult,flag = 0,1,1
    if not isinstance(a,str):
        raise TypeError("a is not str")
    if a[0] =='-' or a[0] == '+':
        if a[0] == '-':
            flag = -1
        a = a[1:]
    for i in range(len(a)-1,-1,-1):
        if '9' >=a[i] >= '0':
            res +=(ord(a[i]) -48) * mult
            mult = mult *10
        else :
            return 0
    return res * flag

def test_strToInt2(self):
    with pytest.raises(TypeError):
        StrToInt(34)
測試用例:
def test_strToInt3(self):
    assert StrToInt('測試賽') == 0

def test_strToInt4(self):
    assert StrToInt('+2147689') == 2147689

def test_strToInt5(self):
    assert StrToInt('45') == 45

def test_strToInt6(self):
    assert StrToInt('1a33') == 0

def test_strToInt7(self):
    assert StrToInt('-5') == -5

什么是面向?qū)ο缶幊蹋?/h3>

面向?qū)ο缶幊?就是把具有共性的事務(wù)抽象成屬性和方法來進(jìn)行編程

Thread 類中的start() 和 run() 方法有什么區(qū)別?

start()方法可以用來啟動(dòng)線程窿冯,調(diào)用該方法骗奖,會(huì)創(chuàng)建一個(gè)新的線程,然后內(nèi)部執(zhí)行run()方法;不能多次調(diào)用执桌,否則會(huì)拋異常
直接調(diào)用run()方法鄙皇,不會(huì)創(chuàng)建新的線程;可以進(jìn)行多次調(diào)用

說下左連接和右連接

比如有兩張表 A仰挣,B伴逸。左連接是把符合條件的所有A表的內(nèi)容列出來,B表如果沒有內(nèi)容匹配用NULL代替膘壶。
右連接是符合條件的所有B表的內(nèi)容列出來错蝴,A表如果沒有內(nèi)容匹配用NULL代替

介紹下什么是索引

索引是由表或者視圖中的一列或多列生成的鍵,可以加快在表或者視圖中檢索行的速度

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末颓芭,一起剝皮案震驚了整個(gè)濱河市顷锰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亡问,老刑警劉巖馍惹,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡悼吱,警方通過查閱死者的電腦和手機(jī)慎框,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門后添,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遇西,你說我怎么就攤上這事×惶矗” “怎么了洲敢?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵压彭,是天一觀的道長。 經(jīng)常有香客問我渗常,道長,這世上最難降的妖魔是什么皱碘? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任询一,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘健蕊。我一直安慰自己菱阵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布绊诲。 她就那樣靜靜地躺著送粱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掂之。 梳的紋絲不亂的頭發(fā)上抗俄,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音世舰,去河邊找鬼动雹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛跟压,可吹牛的內(nèi)容都是我干的胰蝠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼震蒋,長吁一口氣:“原來是場噩夢啊……” “哼茸塞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起查剖,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钾虐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后笋庄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體效扫,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡停巷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年顷链,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了橙困。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犬性。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吝羞,死狀恐怖工坊,靈堂內(nèi)的尸體忽然破棺而出棚唆,到底是詐尸還是另有隱情生巡,我是刑警寧澤籍嘹,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布闪盔,位于F島的核電站,受9級特大地震影響辱士,放射性物質(zhì)發(fā)生泄漏泪掀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一颂碘、第九天 我趴在偏房一處隱蔽的房頂上張望异赫。 院中可真熱鬧椅挣,春花似錦、人聲如沸塔拳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽靠抑。三九已至,卻和暖如春颂碧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背载城。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工诉瓦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人睬澡。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓煞聪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親米绕。 傳聞我的和親對象是個(gè)殘疾皇子栅干,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355