天天看點

問題

零基礎測試開發考核體系:

Python知識:

1、字典排序使用到的函數具體是哪個?舉例說明

sorted()

2、字元串格式化使用到的關鍵字是哪個,舉例說明

format

3、清單中append()與insert()的差別是什麼?舉例說明

append():添加字元串到索引最後一位

insert():可指定位置

4、清單與元組的差別是什麼

元組是不可變的:不能增加,也不能把原有的删除

清單是可變的:可以增加,也可以把原有的删除

5、檢視一個對象的類型關鍵字是什麼?檢視對象的記憶體位址關鍵字是什麼

type()

id()

6、怎麼擷取字元串的索引資訊

1

2

3

str

=

'abc!'

for

index,item 

in

enumerate

(

str

):

print

(index,item)

7、舉例說明清單推導式的使用

list3

=

[xfor xin 

range

(

5

)]

print

(list3)

8、當元組隻有一個對象的時候,需要注意什麼?

最後加,

9、怎麼了解函數的傳回值?

(1)在一個函數裡,沒有關鍵字return時,傳回值是None

(2)在一個函數裡,有關鍵字return時,它的傳回值就是return後面的值

(3)函數的傳回值可以是函數形式

10、怎麼了解函數的動态參數

在函數參數、類型不确定的時候使用動态參數

11、字元串與清單之間的互相轉換

字元串→清單:.split(" ")

清單→字元串:" ".join()

12、字元串的替換使用到的方法是?

replace()

13、怎麼了解is,in,==

in:判斷的是兩個對象中一個對象是否包含另外一個對象

is:判斷的是兩個對象的記憶體位址

==:比較兩個對象的内容以及類型是否一緻

14、使用os庫編寫一個檔案的路徑拼接

4

base_dir

=

os.path.dirname(os.path.dirname(__file__))

f

=

open

(os.path.join(base_dir,

'函數/log.txt'

),

'r'

)

print

(f.read())

15、怎麼了解序列化與反序列化

序列化 :把python對象轉換為字元串的資料類型,(把 python的資料類型(字典、元組,清單),轉換為str資料類型的過程)

反序列化:就是把str的資料類型轉換為python對象的過程(把str資料類型轉換為python的資料類型(字典、元組,清單)的過程)

16、舉例說明檔案的a,w,r的模式

w:

5

6

def

fileW():

"""W模式,建立檔案,并把檔案寫進去"""

=

open

(

file

=

'a.sys'

, mode

=

'w'

)

a.write(

'nihao'

)

a.close()

fileW()

  運作結果:

問題

a:

def

fileA():

"""A模式,在原有基礎上添加内容"""

=

open

(

file

=

'a.sys'

, mode

=

'a'

,encoding

=

'utf-8'

)

a.write(

'buhao'

)

a.close()

fileA()

問題

 r:

7

8

9

10

def

readFile():

=

open

(

file

=

'a.sys'

, encoding

=

'utf-8'

)

# 讀取檔案

# print(a.read())

# 讀取檔案裡面的第行内容

# print(a.readline())

# 換行讀取檔案裡面的所有内容

for

item 

in

a.readlines():

print

(item.strip())

readFile()

問題

17、使用with上下文的模式來處理檔案

11

12

13

14

15

16

17

18

19

20

21

22

23

def

filew():

with 

open

(

'log.md'

'w'

) as f:

f.write(

'a'

)

# if __name__ == '__main__':

#     filew()

def

filea():

with 

open

(

'log.md'

'a'

, encoding

=

'utf-8'

) as f:

f.write(

'b'

)

# if __name__ == '__main__':

#   filea()

def

readFile():

with 

open

(

'log.md'

'r'

, encoding

=

'utf-8'

) as f:

print

(f.read())

if

__name__ 

=

=

'__main__'

:

readFile()

 運作結果:

問題

18、怎麼了解編碼與解碼

編碼:就是把str的資料類型轉為bytes的資料類型的過程,使用到的關鍵字是encode

解碼: 把bytes的資料類型轉為str的資料類型的過程,使用到的關鍵字是decode

19、使用datetime擷取目前的時間

import

datetime

import

time

print

(

'擷取目前時間:'

, datetime.datetime.now())

運作結果:

問題

20、使用time等待5秒的時間

import

time

time.sleep(5)

21、怎麼了解裝飾器

在很多程式都要修改一個内容時,使用裝飾器可以一次性解決

22、怎麼了解局部變量與全局變量

全局變量:在一個Python檔案裡面,定義的變量,可以把它了解為全局變量,在Python檔案中,全局變量的優先級是高于
局部變量的
局部變量:在一個Python檔案裡面的函數裡面,定義的變量,可以了解為局部變量,在函數内部,局部變量的優先級是高于
全局變量的
在函數内部使用全局變量的時候,可以使用關鍵字global來引用,global申明全局變量      

23、Java的繼承與Python的繼承有什麼差別

Java的繼承是單繼承

Python的繼承是多繼承

24、如果子類重寫了父類的方法,那麼執行個體化子類後,調用重寫後的方法,調用的是子類的方法還是父類的方法

子類

Linux知識:

1、檢視程序的指令

ps -elf

2、檢視端口的指令

lsof -i

3、賦予檔案權限的關鍵字

chmod

4、r,w,x對應的數字是多少

r --> 4

w --> 2

x --> 1

5、給一個檔案給rwx權限

chomd 421 檔案名

6、git送出檔案的指令是什麼

git add 檔案名

git commit -m " "

7、git建立倉庫的指令是什麼

git init

8、檢視記憶體的指令

free

9、編輯檔案的步驟

步驟一:touch建立新的空白檔案

步驟二:vim 進入編輯檔案,添加文字

步驟三:Esc+:wq儲存檔案

10、檢視檔案前5行的指令

head -n 5

11、檢視檔案後10行的指令

tail -n 10

12、檔案檢視指令

cat 

13、平均負載怎麼檢視

uptime

API知識:

1、HTTP的完整請求流程

第一步:用戶端與服務端之間建立TCP的連接配接

第二步:用戶端向服務端發送request請求

第三步:服務端向用戶端response響應回複

第四步:關閉TCP連接配接

2、怎麼了解get和post請求

get:擷取資料

post:添加資料

3、在postman中寫斷言的地方為?

tests中

4、怎麼了解postman裡面的collections

collection集合: 在postman中能夠批量運作集合裡的測試用例 ;能夠解決集合中的業務關聯。

5、動态參數在postman裡面的解決思路,請使用步驟的方式描述出來

以添加删除書籍為例

步驟一:擷取用例的書籍ID

步驟二:将書籍ID 設定為變量

步驟三:删除書籍時調用這個變量

6、在postman中,怎麼調用變量

{{變量}}

7、接口斷言需要是那方面

(1)業務狀态碼

(2)協定狀态碼

(3)響應資料

8、怎麼了解協定狀态碼:404

請求資源并不存在

9、如果一個接口通路時400,排查思路時什麼?

(1)請求參數

(2)請求參數類型(例如int)

(3)特定類型(例如性别)

(4)請求頭(缺少)

10、怎麼了解同步通信

同步請求:用戶端向服務端發送請求,服務端必須做出響應

缺點:用戶端發送請求,服務端遲遲不作出回應  

           用戶端發送的請求為計算量大或邏輯存在問題,請求就會堵塞,後面就會積壓

11、怎麼了解異步通信

在異步的互動中,用戶端和服務端互相不需要關注對⽅的存在,隻需要關注對應的MQ的消息,用戶端與服務端的互動主要是會通過MQ的消息中間作為消息的傳遞來進⾏互動的。

12、怎麼了解cookie,session,token

cookie請求:用戶端發送登入請求,生成一個cookie憑證,服務端通過set-cookie把cookie再返給用戶端,用戶端再将請求頭cookie帶上傳回的憑證發送給服務端。

session請求:用戶端發送登入資訊登入成功後生成session ID,set-cookie将session ID給用戶端,請求頭cookie帶上session ID再給服務端。

token請求:本質上和session的原理差不多。使用者登入系統生成token,每次生成的token都是随機的字元串,

cookie存儲在用戶端session、token存儲在服務端

都用來驗證資訊正确性

13、請按步驟的方式描述session的請求流程

已請求登入為例:

第一步:用戶端發送登入請求資訊,服務端生成sessionID

第二步:服務端将sessionID傳回給用戶端

第三步:用戶端在cookie中帶上sessionID發送給服務端,服務端核對sessionID的真确性

14、如果發送請求,協定狀态碼傳回500的錯誤,怎麼解決?

代碼出錯,查代碼。

15、怎麼了解協定狀态碼和業務狀态碼

HTTP 狀态碼是 HTTP 協定的工程實作。如果伺服器端的實作不符合協定的規定,我們可以認為 伺服器的 HTTP 實作是錯誤的

業務狀态碼是服務端給出的關于業務描述的碼,用于用戶端明确得知本次請求的資源的狀态情況

測試基礎理論:

1、bug完整的生命周期

2、編寫測試用例的要素是什麼?

3、怎麼了解黑合測試,白盒測試

4、測試按階段劃分,主要分為那幾個階段

5、怎麼了解等價類和邊界值

6、請描述一個完整的測試流程

UI自動化測試:

1、常用的元素定位有那幾種方法,請舉例說明

class By(object):

ID="id"

XPATH="xpath"

LINK_TEXT="link text"

PARTIAL_LINK_TEXT="partial link text"

NAME="name"

TAG_NAME="tag name"

CLASS_NAME="class name"

CSS_SELECTOR="css selector"

2、單個元素定位與多個元素定位的差別是什麼?

單個元素定位:find_element      
多個元素定位:find_elements      

單個元素定位和多個元素定位的差別就是,單個元素定位傳回是單個元素,多個元素定位傳回的是包含多個元素的一個清單。

3、如果是iFrame的架構,如何來定位裡面的元素屬性的對象

或者id定位:

driver.switch_to.frame('login_frame')

使用索引:

driver.switch_to.frame(0)

4、怎麼了解頁面對象設計模式

在 UI 自動化測試中對頁面元素的處理引入面向對象思想。從測試用例中剝離頁面元素操作,并以頁面為機關的類将頁面元素上的定位方式及操作進行封裝。

5、怎麼了解顯式等待和隐式等待

顯示等待:顯式等待指定某個條件,然後設定最長等待時間。如果在這個時間還沒有找到元素,那麼便會抛出異常了。

隐式等待:等待時間完成即可(機關:秒)預設等待時間為0

6、在測試中遇到多視窗,具體怎麼解決,請描述具體的步驟和編寫具體的案例代碼

1、循環所有的視窗
2、判斷是否是目前視窗
3、如果不是,切換到新的視窗
4、在新的視窗進行操作
5、關閉新的視窗
6、切換到最開始視窗      

'''注冊網易郵箱超連結'''

driver

=

webdriver.Chrome()

driver.maximize_window()

driver.get(

'https://mail.163.com/'

)

oldwindow

=

driver.current_window_handle

driver.find_element_by_xpath(

'//*[@id="normalLoginTab"]/div[1]/div[2]/a[1]'

).click()

t.sleep(

3

)

allwindow

=

driver.window_handles

for

window 

in

allwindow:

if

oldwindow!

=

window:

driver.switch_to.window(window)

t.sleep(

3

)

driver.find_element_by_class_name(

'j-register'

).click()

t.sleep(

3

)

dtest

=

driver.find_element_by_xpath(

'/html/body/div[2]/div/div/div[2]/div[2]/div[1]/div[2]'

)

assert

dtest.text

=

=

'郵箱位址不能為空'

driver.switch_to.window(oldwindow)

t.sleep(

2

)

driver.quit()

發現BUG-->送出BUG-->指派BUG-->研發确認BUG-->研發去修複BUG-->回歸驗證BUG-->是否通過驗證-->關閉BUG

⽤例ID;

⽤例名稱;

測試⽬的;

測試級别;

參考資訊;

測試環境;

前提條件;

測試步驟;

預期結果;

設計⼈員。

黑盒測試:功能測試

白盒測試:

可以看見程式的内部的結構關系,是代碼級别測試,針對函數或者方法、邏輯準确性的測試。

這些測試就包含了針對程式判斷邏輯,判斷分⽀,判斷循環,程式流程⾛向的測試。

單元測試

內建測試

系統測試

驗收測試

等價類是對輸入資料 進行測試,分有效等價類和無效等價類 ,

如:年齡分數在0-100之間,有效等價類就是0-100之間的數字

無效等價類 就是,小于0,大于100的數字,

邊界值是對等價類的補充

問題

  單元測試架構:

1、unittest與pytest的架構

2、unittest的常用元件有哪些

TestCase:測試用例,測試用例裡面會有很多測試方法,是單元測試中最小次元的測試行為。

TestSuite:測試套件,是測試用例的集合。

TestFixure:測試固件,測試準備工作和收尾工作,打開和關閉浏覽器,連結和關閉資料庫,可有可無

TestRunner:測試運作器,運作測試用例。

TestReport:将測試結果呈現給使用者,生成測試報告。

問題

3、unittest中怎麼了解測試固件

 setUp() 方法用于初始化測試固件;而 tearDown() 方法用于銷毀測試固件

setUp() :最開始執行

tearDown():最後執行

4、怎麼了解setUp(),tearDown()與類測試固件的測試

局别:

setUp(),tearDown()每次都要執行
類測試固件隻執行一次      

5、在unittest測試架構中,加載所有的測試子產品使用到的方法是什麼?具體參數是什麼?

用到的方法:discover

具體參數:

路徑參數,測試檔案名      

6、在unittest中使用那個庫來生成對應的測試報告

HTMLTestRunner      

7、一個完整的測試用例包含哪些步驟

拿到測試需求 -> 分析需求(畫思維導圖) -> 編寫⽤例 -> 劃分⽤例優先級

8、怎麼了解參數化

解決的問題:

測試進行相同的步驟,隻是輸入的資料不同,其他操作都是一樣的,這樣需要寫很多測試用例,參數化可以解決這種問題,讓代碼更加簡潔。

9、一個完整的自動化測試用例包含哪些?

(1)測試準備

上一篇: 問題
下一篇: 問題