目錄php
一.面試過程css
1.自動化崗位要求 2.面試流程,面試類型 3.溝通技巧,不一樣級別要求html
二.真實面試案例java
1.一個輸入框的面試題(有人拿到高級崗位,有人連初級都沒拿到,爲何)python
三.自我分析mysql
1.積累的知識決定了初入社會的崗位 2.什麼是好的簡歷 3.須要掌握的基本知識linux
四.技術基礎知識android
1.常見測試理論 2.python語言常見問題 3.python常問算法 4.linux基本命令 5.計算機網絡 6.操做系統 7.數據庫相關 8.fiddler抓包工具 9.android系統相關工具 10.adb相關問題 11.monkey相關問題ios
五.自動化工具程序員
1.Instrumentation 2.UIAutomator 3.Selendroid 4.Robotium 5.Appium 6.Selenium
六.自動化框架
1.Unittest框架 2.數據驅動DDT 3.行爲驅動Lettuce 4.關鍵字驅動Robot Framework 5.測試報告管理 6.郵件服務管理
七.接口自動化
1.postman 2.python requests
八.持續集成(概念) 九.服務端性能測試 十.兼容性測試 十一.調試
正文
一.招聘要求 二.面試過程(筆試-技術-性格-薪資) 三.面試類型 四.問題類型 五.注意事項 六.高效溝通 七.崗位級別
軟件的生命週期:定義規劃——需求分析——軟件設計——編碼——測試——維護
面試案例:一個輸入框的面試題(測試如下輸入框,你會測試哪些內容)
面試者A:左側頂部菜單——所有、圖片切換——右側頂部小工具——登錄功能——輸入框——底部連接
面試者B:確認題目:是僅測試輸入框,不考慮其餘內容嗎? 回覆:是的,僅測試輸入框
面試者B:大範圍的話測功能、兼容性、穩定性、性能、安全、接口、線上監控、自動化八方面;小範圍的話測功能、兼容性、安全三方面
若是時間容許,我想從各方面說一下考慮的內容:
關於功能:①常規:任意字符 ②很是規:有含義的字符串 ③邊界、空格、超長文本(±1個字符,如-1個字符並輸入中文)
關於兼容性:①用戶分佈:機型、分辨率 ②瀏覽器 ③頁面佈局、渲染,藉助firebug調試
關於穩定性:①壓力下,搜索是否正常返回 ②屢次輸入是否穩定
關於性能:①QPS-每秒處理請求數 ②點擊開始到徹底加載,平均耗時 ③加載頁面大小、資源(js、css)數量
關於安全性:js注入、sql注入(輸入框輸入js代碼)
關於接口:①接口正確性 ②異常數據的容錯狀況 ③非瀏覽器環境下(繞過頁面限制輸入)
關於線上監控:創建實時監控保障穩定性、下降影響
關於自動化:基於selenium實現UI自動化,用selenium調用工具模擬瀏覽器UA返回頁面,去作UI自動化。經過自動化能夠例行迴歸驗證,提升效率。
好比有自動化,能夠在因此瀏覽器/手機上去作功能驗證,過程當中同時截圖,再用python的圖像處理工具,對圖片與圖片之間進行對比,將異常圖像拿出
也能夠利用android使用APPium基於UIAutomator,ios使用WDA作自動化測試。
簡歷表現:
簡歷要表現出:技術能力、管理能力、學習能力、溝通能力、創新能力、團隊協做 不要寫別人對本身的評價,文案簡潔,概況說明突出重點,多用數據圖標
簡歷對比:
測試流程:
①需求溝通——制定測試方案——設計測試用例——準備測試環境——測試執行——bug處理——迴歸驗證——跟進上線
②測試文檔——產品、測試、開發評審——測試計劃——測試用例——測試評審——開發完成提測——冒煙測試——正式測試——bug處理——評估質量——測試報告——上線跟進
bug:
①bug分級:優先級、嚴重程度 ②bug分類:UI、系統、接口 ③bug狀態:新建、待修改、待驗證、已驗證、遺留、關閉
經常使用測試工具:
網絡調試工具:fiddler 頁面調試工具:Chrome Inspector、firebug web自動化工具:QTP、selenium 移動端工具:ADB、monkey、MonkeyRunner
移動端自動化框架:appium、robotium、uiautomator、selendroid 平臺知識:window、mac、android、linux 服務端壓力工具:loadrunner、Jmeter
數據庫:mysql可視化工具navicat
自我分析:SWOT分析 strength優點——weakness劣勢——Opportunity機會——Threat威脅
測試階段:
單元測試(開發)——集成測試(開發)——系統測試——驗收測試
測試流程:
需求溝通——制定測試方案——測試用例——測試環境——執行測試——bug處理——迴歸測試——跟進上線
測試計劃:
5W原則:what明確測什麼 why明確測試目標 when明確測試開始結束時間 how明確方案 where資料位置、路徑、bug位置
測試用例方法:
1.等價類(相同屬性集合,如0-9邏輯同樣,只需驗證一個) 2.邊界值(±1) 3.錯誤推斷 4.正交分析法(座標系,如手機橫座標和瀏覽器縱座標)
5.場景法(登錄成功、登錄失敗) 6.因果圖 7.斷定表
bug包含什麼:
①測試工程師、開發人員、bug日期 ②bug標題、bug正文、bug附件 ③優先級、嚴重程度 ④所屬板塊 ⑤bug狀態(新建、修復、遺留、關閉) ⑥bug處理記錄
如何分層自動化:
UI自動化測試:針對不常變頁面 接口自動化:週期短、變化頻繁 單頁測試(白盒)
B/S:瀏覽器與服務器 C/S客戶端與服務器
安全測試包括:
①用戶訪問認證 ②傳輸數據加密 ③安全防禦策略:安全日誌、入侵檢測 ④數據備份 ⑤防病毒 ⑥sql注入、js注入
測試報告包含:
①測試背景 ②測試範圍 ③測試環境 ④測試方法 ⑤結論 ⑥質量風險評估
alpha測試:開發環境下測試 beta測試:用戶真實環境下測試
bug類型:
①bug代碼編寫錯誤致使功能 ②defect缺陷,實現與需求不一樣 ③fault故障 ④error錯誤,邏輯語法錯誤,可能不影響用戶體驗
※※python※※
面向對象:OOP
包含:類、繼承、多態、實例、屬性、方法
進程、線程、協程:
進程【網線】:不共享數據(QQ與word) 線程【網線小細線】:執行程序最小單元(多個word) 協程:程序員調度,一個線程分多個「微線程」
如何使用python實現socket編程:
socket:套接字,應用程序經過套接字想網絡發出請求,應用程序經過套接字應答網絡請求,使主機間或者一臺計算機的進程間能夠通信
什麼是lambda函數
匿名函數,如:
tuple爲元組(不可改),list爲列表(可改)
range函數
返回一系列連續的整數,能夠生成一個列表對象,工做方式相似於分片
alist = range(2,101,2) print(alist) ——>2,4,6,8,10…… 100
re模塊match(只在字符串開始匹配)、search(掃描整個字符串)
python操做文件:(把大象放冰箱,打開,操做,關)
python算法:
經常使用算法:排序、冒泡、快排、堆排、二分查找
※※Linux※※
基礎:cd切換目錄 ls -l列出文件詳細信息 ls -a列出當前目錄文件 touch建立文件 mkdir建立目錄 echo建立帶內容文件 cat查內容 cp拷貝 mv移動 rm -r遞歸刪除 rm -f強制刪除 wc統計字節數 tree顯示目錄結構 grep查找 ln軟鏈接
網絡:curl文件傳輸 netstat網絡信息 telnet遠程主機
系統:ping連通 man查看幫助 kill殺死進程 top消耗最多進程信息 ps進程狀態
更多參考本博客linux命令隨筆
※※網絡※※
想象廣州——北京快遞過程
物理層(公路)——數據鏈路層(十字路口,馬路相連)——網絡層(選擇的路徑)——傳輸層(運輸車):TCP確保創建/慢,UDP直接發容易丟包/快——會話層(快遞員)
表示層(快遞包裹內容)數據內容——應用層(使用包裹):有http、https、smtp協議。
http中get與post區別:
功能:get——取東西(下載) post——提交(上傳)
傳輸方式:get——url+參數 post——放在body傳輸,安全
tcp與UDP:
tcp三次握手,四次揮手
socket創建鏈接:
①創建服務器監聽,socket,bind,listen ②客戶端發送請求,connect,send ③鏈接確認,accept,response
※※數據庫※※
建立庫:create database 數據庫名 show databases(查看數據庫)
建立表:create table 表名 show tables查看錶
操做數據:
插入 insert into 表名 values (內容);
查詢 select * from 表名 (where );
更新 updata 表名 set 字段=新值 where id=1;
刪除 drop table 表名;
※※fiddler※※
如何抓手機包
藉助局域網,設置代理轉發,將手機數據流轉發到fiddler 能夠去修改返回內容,去autoResponder設置
慢網速
Rules——Performance——simulate modem speeds fiddlerscript 默認1kb延遲300ms
過濾篩選 filters——hosts
1**成功接收 2**成功處理 3**重定向、跳轉 4**客戶端錯誤 5**服務器錯誤
請求報文是key-value形式,返回報文是json串。
※※Android※※
android四大組件:
activity程序與用戶交互窗口 service程序後臺完成操做 content provide數據統一訪問格式 broadcastreceiver應用間數據傳輸
ANR:
持續等待仍是強制關閉
常見五種佈局:
frame Layout 框架佈局 linear Layout 線性佈局 absolute Layout 絕對佈局 relative Layout 相對佈局 table Layout 表格佈局
※※ADB※※
重啓服務: adb kill-server adb start-server
安裝: adb -s 設備名 install (-r 覆蓋)路徑
卸載: adb -s 設備名 uninstall 包名
包名獲取: adb logcat | grep/findstr start(grep是mac、findstr是windows)
adb push 電腦\ 手機/ 電腦——>手機
adb pull 手機/ 電腦\ 手機——>電腦
靜默安裝:adb shell pm install -f 手機/
adb啓動app: adb shell am start -w -s 手機/ (-w等待 -s先強制中止)
adb中止app: adb shell am force-stop 手機/
查找已安裝包:
包含關鍵字:adb shell pm list package -f 關鍵字
第三方安裝:adb sehll pm list package -3 關鍵字
已安裝:adb shell pm list package -i 關鍵字
截屏:adb shell screencap 手機路徑/ 錄屏:adb shell screenrecord 手機路徑/
抓取logcat:adb logcat 後面能夠加 find str
獲取當前cpu: adb shell dumpsys cpuinfo/findstr 手機包(CPUinfo是mac,findstr是windows) 內存: adb shell dumpsys meminfo 手機包
※※Monkey※※
monkey向系統發送僞隨機的用戶事件流,實現對正在開發的應用程序進行壓力測試。
monkey進行壓力測試命令?☆☆☆
adb shell monkey -p 包名 事件數 如:adb shell monkey -p com.android.calculator2 100
如何重現crash、ANR過程?如何提取?
monkey是隨機執行的(僞隨機),添加參數 -s seed 只須要提供相同的seed值便可復現
adb shell monkey 【-v -v -v 詳細信息】-s 6789 -p 包名 事件數 >20200517.log -v能夠看參數 -v-v更加詳細 -v-v-v最詳細 而且導出到20200517.log日誌
如何設置monkey運行8小時
添加參數--throttle
adb shell monkey -s 6789 --throttle 300 -p 包名 事件數 ——> 300ms點擊一次,並填寫合適的事件數
在Crash、ANR後繼續執行?
填寫忽略參數crash參數:--ignore-crashes 忽略ANR參數:--ignore-timeouts
如adb shell monkey -s 6789 --throttle 300 --ignore-crashes --ignore-timeouts -p 包名 事件數
如何讓monkey指定事件
觸摸 --pct-touch 動做 --pct-motion 軌跡球事件 --pct-trackball 基本導航事件 --pct-nav 主要導航事件 --pct-majornav 系統導航事件 --pct-syskeys
※※鯉魚跳龍門第一招——自動化工具※※
一.Instrumentation java語言編寫
原理:經過直接調用被測app類實現自動化,要求與被測app在一個進程內
能夠測功能、activity生命週期、模擬數據庫操做測試和兼容性測試
何時使用??? 使用java Junit框架 進行白盒測試 使用mock技術模擬系統對象
二.UIautomator、UIAutomatorviewer 不依賴源碼
三.selendroid(基於Instrumentation)、robotium(基於Instrumentation) 依賴源碼
原理:selendroid是基於Instrumentation進行的封裝,指令經過http協議傳輸過來的
robotium也是基於Instrumentation進行封裝,實現android測試框架,封裝了一個solo類庫,提供自動化測試API,測試時也須要源碼。
四.Appium 跨語言☆☆☆ 開源移動端UI自動化框架
理念:①不需源碼②不限語言框架③接口統一,不需重複開發④開源
概念:c/s框架,核心是一個web服務器
session,客戶端初始化session與服務器交互
Desired capabilites,初始化時的鍵值對組合
Appium server,操做與驅動手機
appium client,支持多語言調用
環境:①Android SDK、JDK、Appium ②pycharm、python環境 ③庫:selenium(appium的父類)、appium-python-client
支持語言:java、python、JavaScript、php……
appium初始化配置內容:appPackage(app包)、appActivity(appActivity名稱)、automationName(自動化驅動類型selendroid/appium)
Appium測試native app原理:
Appium測試Hybrid app原理:(測試混合型app,如瀏覽器、某些app加載了h5頁面)
Appium測試ios app原理:
綜述:appium自動化框架,自己不能實現自動化測試過程,徹底是藉助於當前業界流行的自動化框架作的一次封裝。
Appium測試native app:
元素定位:①UIautomatorViewer☆☆☆ ②使用appium的Inspector
定位元素api:find_element_by_accessibility_id find_elements_by_accessibility_id
find_element_by_id find_elements_by_id
find_element_by_name find_elements_by_name
find_element_by_xpath find_elements_by_xpath //絕對路徑:/html/body/div/p 和相對路徑://div//p
find_element_by_class_name find_elements_by_class_name
補充:(ID選擇器# class類選擇器.)(webDriver整個頁面 webelement元素內部)
寫腳本規則:love規則
locate定位 operate操做 verify操做 exception異常處理
初始化注意事項:
①能夠不使用App包路徑(由於uiautomator不須要源碼) ②默認使用appium驅動
Appium測試Hybrid app:
元素定位:基於native部分:①UIautomatorViewer☆☆☆ ②使用appium的Inspector
基於webview部分:chrome瀏覽器的調試模式
定位元素api:find_element_by_id find_elements_by_id
find_element_by_name find_elements_by_name
find_element_by_xpath find_elements_by_xpath
find_element_by_link_text find_elements_by_link_text
find_element_by_tag_name find_elements_by_tag_name
find_element_by_class_name find_elements_by_class_name
寫腳本規則:S-love規則
native部分:locate定位 operate操做 verify操做 exception異常處理
webview部分:用selenium(appium父類) switch改變
初始化注意事項:
①明確指定驅動:selendroid ②selendroid模式基於Instrumentation實習的自動化框架,Instrumentation須要將app從新簽名,因此要明確指定app路徑
補充:selenium測試web頁面:
環境準備:工具:pycharm、chrome
包:selenium、python
webview:chrome driver(firefox drive/ie driver)
元素識別工具:firefox或者chrome的調試工具
定位方法:同上,例如用xpath:開發者選項——複製xpath——定位
Appium測試wap界面:
環境:
IDE:pycharm 寫代碼的地方
包:python、selenium、appium-python-client
工具:appium、chrome
元素識別:chrome開發者工具
腳本編寫:初始化時要指定browsername爲browser,其他自動化代碼與selenium相同
※※鯉魚跳龍門第二招——自動化測試框架※※
Unittest框架:
FestFixture 測試固定裝置(包含①setup初始化 ②Testcase測試用例 test_名 ③TearDown釋放資源)
FestCase
FestSuite 裝載測試用例 suite至關於啤酒箱,能夠裝不少啤酒(測試用例)
FestRunner 執行測試用例
DDT數據驅動:
黑盒(功能)、每行重複進行一中單元測試、使用多個輸入值測試API
效果:使用多個數據測試一條用例,表現爲多條用例 原理:經過python的裝飾器,裝飾每條用例
測試搜索功能:
①啓動appium,放後臺②準備手機③準備腳本 導入uittest(基於uittest) from appium import webdriver(使用appium下面瀏覽器驅動)
意義:代碼複用高,異常排查效率高,代碼可維護性高。
Lettuce框架-行爲驅動(BBD):
lettuce是基於python語言的行爲驅動測試框架。(晚上想喝酒涮火鍋,喝酒、涮火鍋就是像個行爲)
lettuce將測試用例與自動化測試代碼分離,像寫文本同樣清晰。
KDT-關鍵字驅動:
也稱爲表格驅動測試或者行爲驅動測試。 將建立測試程序的步驟氛圍規劃和實現兩個階段。 使不懂代碼的人能夠完成自動化測試過程。
Robot framework就是關鍵字驅動的一個自動化框架,就像lettuce實現了行爲驅動,使用unittest實現了單元測試。
如何收集測試報告:
如何管理測試報告:
藉助時間戳做爲報告名稱,防止同名覆蓋
測試郵件通知:
網易郵箱爲例,設置——SMTP——使用sendReport.py
※※鯉魚跳龍門第三招——接口自動化※※
一.fiddler工具
1.抓手機包:①pc設置端口號 ②手機wifi—高級設置—pc的ip+端口號 ③加載頁面下載證書
2.數據包包含:狀態碼、協議類型、request、Response(header、data)
3.如何設置autoResponde:①抓請求 ②製做數據 ③設置規則
4.fiddler發送get、post請求:①構造url(get/post) ②構造參數(get/post) ③構造數據(post)
5.慢網速:rules——performances——simulate Modem speeds 修改代碼配置速度。
6.抓https包:①fiddler相關設置 ②瀏覽器證書
請求報文格式是key-value形式,返回報文通常是json串。
二.postman
postman發get請求:
構造url——構造參數——構造數據
postman發post請求:
fiddler抓包獲取數據——body裏面form-data數據一致——pre-request script選globals.set——body裏參數化——參數化選csv文件
postman添加檢查點/斷言:
對返回值進行校驗 ①返回值檢查點 ②狀態碼檢查點
在Tests中添加
postman運行測試用例:
①建立collections ②運行collections ③手機collections結果
如何實現API框架:
用例層——testCases DDT
控制層——unittest TestReport Email
驅動層——python Requests庫
python Requests API發送get請求
python Requests API發送post請求
依賴第三方接口 :
用soapUI等工具調用第三方數據接口webservice,經過返回值看是否調用正常,也能夠利用mock工具模擬第三方數據返回,最大限度下降對第三方數據依賴。
※※鯉魚跳龍門第四招——持續集成※※
是指開發階段,對項目進行持續性 自動化編譯、測試,以達到控制代碼質量的手段 持續集成是一件軟件開發實踐
1.工具:jenkins☆☆☆ buildbot Travic CI ……
2.jenkins搭建:①下載jenkins.war ②命令行 java -jar jenkins.war ③瀏覽器打開 http://localhost:8080
3.須要哪些配置:系統集配置(命令行) 工程級配置
※※鯉魚跳龍門第五招——服務端測試工具※※
壓力工具:loadrunner付費 Jmeter免費 自主研發工具
關注指標:cpu 內存(虛存、實存) QPS(每秒請求數包括均值、峯值) 平均響應時間
服務器壓力測試方法:①.搭建服務器模塊,並啓動服務 ②.監控進程相關指標:內存、cpu ③.QPS(log)、平均響應時間 ④收集數據、分析曲線圖 ⑤分析結果得結論
※※鯉魚跳龍門第六招——兼容性測試※※
APP:
①系統(android、ios) 版本 ②分辨率 ③手機品牌 ④看產品用戶羣體 (top10)
wap:
①不一樣平臺 不一樣瀏覽器 ②分辨率 ③轉發到第三方平臺顯示
pc頁面:
①操做系統(平板、windows、mac) ②瀏覽器 ③分辨率 ④縮放、字體
中和、交叉測試 雲測平臺
※※鯉魚跳龍門第七招——調試※※
app調bug:
①網絡相關工具:fiddler、wareshark、charles ②adb、am、logcat ③雲平臺、bug復現
wap調bug:
①chrome調試工具、可設移動APP UA ②winre,web Inspector Remote
pc調bug:
①chrome調試工具 ②火狐的firebug