ones/測試工程師面試

首先是筆試部分:

1.編寫測試用例的方法

2.bug的元素(越多越好)

3.動態測試與靜態測試是什麼?

4.如何去測試一個登錄接口?

5.寫出linux查看80端口占用

6.寫出linux查看後臺的java程序

7.查詢一個學生表裏面所有成績高於80分的

8.list刪除重複元素

9.快速排序

技術面:

1.自我介紹

這個不用多說了吧

2.自動化的技術棧

簡單說了之前做過的接口自動化和UI自動化的技術方案,app的沒講

3.剛剛你提到了插件,能說下名字嗎?選用它的理由是什麼?

我說的是pytest-rerunfailures,簡單說了下生態背景,因爲更符合需求,列了另外一個插件做了下比較,然後作者維護得也更頻繁,描述了下它使用前景更好。

4.業餘有學習新技術嗎?通過什麼方式學習的?

按自己的講就好了

5.講講在性能測試中遇到的問題

我講的是一個由於第三服務導致的性能上不去的問題

6.性能測試的要關注哪些指標

我問了是指資源性能指標還是系統性能指標?面試官愣了兩秒,說就接口測試那個。我大概講了併發數、tps、qps、吞吐量、吞吐率、最大響應時間、90%響應時間,然後挑了兩個詳細講了下。

7.測試怎麼保證產品的質量

這個就很廣了,各憑高見了。我大概從流程、標準、測試左移、測試右移的講了下,個人覺得講的一般吧

8.講講jenkins做了什麼?jenkins能做什麼。。。

比如敏捷開發,版本迭代自動部署,無人值守性能測試,自動化,挑了自動部署的講

9.一個登錄接口,增加多一個防暴力破解的迭代

參考回答:增加一個防暴力破解的迭代,設計測試用例(登錄模塊)

10.爲什麼做測試?

11.離職的原因

12.期望薪資

13.還有什麼要問的

 

感受的話:工作內容比例的話,大概80-90%功能測試吧(我猜的),我問了面試官,說了會有一點UI自動化方面的。然後業務能力應該挺強的,技術的話也許是我沒機會見識到吧。(觀點無絕對)想提高業務能力的可以去,技術的話不建議吧。去面試時建議別去那上廁所,愉快的心情還是很重要的。

 

 

以下回答供參考:

1.編寫測試用例的方法

  • 等價類劃分法
  • 邊界值法
  • 因果圖法
  • 判定表法
  • 場景法
  • 狀態遷移法
  • 正交實驗法

2.bug的元素(越多越好)

bugID、項目、問題類型、主題(BUG名稱)、優先級、嚴重程度、模塊、經辦人、報告人、內部版本號、發現版本、解決版本、缺陷類型、復現概率、出現頻率、問題來源、(手機機型、手機系統版本)、bug狀態、bug描述、備註

3.動態測試與靜態測試是什麼?

靜態測試:一種不執行程序而進行程序測試的技術

檢查軟件中的描述與表示是否一隻,沒有衝突或歧義,它描述的是糾正軟件中的表示、描述與規格上的錯誤,因此是任何進一步測試的前提

動態測試:按照預期設計的數據和步驟運行被測程序,從而對被測程序進行測試的一種技術

通過分析軟件的運行行爲:包含軟件運行在受控的環境進行特定的輸入進入正式運行,與期望結構進行比較二判斷程序是否正確

4.如何去測試一個登錄接口?

  • 必填參數驗證(賬號、密碼等、以接口文檔爲主)
  • 選填參數驗證(是否記住密碼)
  • 請求輸入輸出合法性校驗(請求數據與返回數據是否都加密傳輸,狀態碼,數據格式是否符合接口文檔標準)
  • 請求響應校驗(狀態碼,返回數據,頁面等是否符合接口文檔預期)
  • 響應數據校驗(後臺登錄數據、用戶數據)
  • 邊界值參數驗證(賬號密碼等)
  • 異常、空值數據校驗(必填選填數據進行異常值,格式異常、空值等)
  • 容錯能力驗證(對接口頻繁請求,錯誤請求及重複登錄請求的處理及某些大容量數據)
  • 錯誤處理機制(對不合法請求,壞請求的處理時,響應的友好性,可讀性)
  • 接口間邏輯驗證,特別是涉及第三方授權登陸了服務,驗證機制,防暴力機制時
  • 壓力測試:通過併發用戶對接口施加壓力,逐點施壓,分析性能瓶頸
  • 安全測試:請求篡改,SQL注入、抓包重放、敏感信息、權限驗證、跳過某些驗證機制等

5.寫出linux查看80端口占用的進程

netstat -anp | grep 80

ps -aux | grep 80

lsof -i:80

6.寫出linux查看後臺的java程序

ps -A | grep java

ps -ef | grep java

7.查詢一個學生表裏面所有成績高於80分的

#如果chengji(成績字段)數據類型爲int等數字類型,可直接group by XX having XXX
select name from score group by name having chengji>=80;
    
#如果成績爲字符型varchar,上面的方法會出現錯誤,反向思維通過not in來找出符合標準的結果
select distinct(s1.name) from score s1 where s1.name not in (
    select distinct(s2.name) from score s2 where s2.chengji<80
);
# 優化下
select name from score group by name having name not in (
    select name from score where chengji<80
);

 

8.刪除列表內的重複元素

def deleteSameEle(arr):
    if type(arr).__name__ != 'list':
        print('傳入參數不爲list')
    return wrapper(arr)

def wrapper(arr):
    newArr = set(arr)
    return list(newArr)


if __name__ == '__main__':
    l = [5,4,7,4,3,4,85,11,2,45]
    print(deleteSame(l))

 

9.快速排序

def quickSort(arr):
    if type(arr).__name__ != 'list':
        print('傳入參數不對')
    l, r = 0, len(arr)-1
    wrapper(arr, l, r)

def wrapper(arr, l, r):
    if l < r:
        i, j = l, r
        temp = arr[i]
        while i < j:
            while i < j and arr[j] >= temp:
                j = j - 1
            if i < j:
                arr[i] = arr[j]
                i = i + 1
            while i < j and arr[i] <= temp:
                i = i + 1
            if i < j:
                arr[j] = arr[i]
                j = j - 1
        arr[i] = temp
        wrapper(arr, l, i - 1)
        wrapper(arr, i + 1, r)


if __name__ == '__main__':
    l = [5,4 ,7,41,77,43,9,8,2,81]
    quickSort(l)
    print(l)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章