2020-08-06 測試工程師(全棧技術(shù)進(jìn)階與實踐)

簡介

《測試工程師全棧技術(shù)進(jìn)階與實踐》是2020年4月人民郵電出版社出版的圖書拯腮,作者是茹炳晟.
本書系統(tǒng)地梳理軟件測試知識體系,深入講解自動化測試、移動應(yīng)用測試、性能測試和測試基礎(chǔ)架構(gòu)設(shè)計的核心原理轧钓。通過一系列行業(yè)實踐案例的講解,呈現(xiàn)一副包括GUI/API自動化測試锐膜、移動應(yīng)用測試毕箍、測試數(shù)據(jù)平臺、測試基礎(chǔ)架構(gòu)枣耀、性能/壓力測試霉晕、代碼級測試、測試新技術(shù)和大型網(wǎng)站架構(gòu)等在內(nèi)的軟件測試技術(shù)全景圖捞奕。

讀后筆記

 因個人對軟件測試了解的廣度不夠,通過這本書可以比較系統(tǒng)的拓展知識面拄轻。筆記主要分成2種方式: markdown 和xmind 

軟件測試的基礎(chǔ)知識

軟件測試工程師

  • 核心競爭力

  • 傳統(tǒng)測試工程師

  • 測試開發(fā)工程師

  • 掌握非測試知識

  • 迷你版的系統(tǒng)架構(gòu)師

  • 網(wǎng)絡(luò)架構(gòu)的核心知識

  • 容器技術(shù)

  • 云計算技術(shù)

  • DevOps思想

  • 前端開發(fā)技術(shù)

軟件測試

  • “好的”測試用例

  • 定義:一個完備的集合颅围,能夠覆蓋所有的等價類和邊界值的集合

  • 特征

  • 整體完備性

  • 等價類劃分的準(zhǔn)確性

  • 等價類集合的完備性

  • 設(shè)計方法

  • 等價類

  • 錯誤推測法, “探索式測試方法”

  • 經(jīng)驗

  • 具體實踐:建立常見缺陷知識庫恨搓,在用例設(shè)計過程中院促,使用缺陷知識庫作為檢查表(checklist),幫助優(yōu)化和補充測試用例的設(shè)計斧抱。

  • 自動化測試的原始驅(qū)動力和使用場景

  • 軟件開發(fā)各個階段的自動化測試

  • 單元測試的自動化技術(shù)

  • 代碼級集成測試的自動化技術(shù)

  • Web Service 測試的自動化技術(shù)

  • GUI測試的自動化技術(shù)

  • 測試覆蓋率

  • 需求覆蓋

  • 代碼覆蓋

  • 高效的撰寫軟件缺陷報告

  • 缺陷報告

  • 標(biāo)題常拓,概述,影響辉浦,環(huán)境配置弄抬,前置條件,重現(xiàn)步驟宪郊,期望結(jié)果和實際結(jié)果掂恕,優(yōu)先級和嚴(yán)重程度,變通方案

  • 根原因分析

  • 以始為終弛槐,做好軟件測試計劃

  • 測試范圍

  • 測試策略

  • 測試進(jìn)度

  • 測試風(fēng)險把控

  • 互聯(lián)網(wǎng)產(chǎn)品的測試策略設(shè)計(單元測試懊亡,API測試,GUI測試)

  • 背景:研發(fā)流程的不同決定了測試策略的不同

  • 傳統(tǒng)軟件測試策略:金字塔模型(重量級單元測試> API測試> GUIC測試)

  • 互聯(lián)網(wǎng)產(chǎn)品的測試策略:棱形模型(重量級 API測試乎串,輕量級GUI/單元測試)

GUI 自動化測試的精要

從 0 到1: GUI自動化測試初探

  • 例子:構(gòu)建一個Selenium自動化測試用例

  • Selenium的實現(xiàn)原理

效率為王:

  • 測試腳本和測試數(shù)據(jù)的解耦

  • 頁面對象模型

  • 更接近業(yè)務(wù)的抽象:讓自動化更好的描述業(yè)務(wù)

  • 測試數(shù)據(jù)

  • 基于API調(diào)用創(chuàng)建測試數(shù)據(jù)

  • 基于數(shù)據(jù)庫操作創(chuàng)建

  • 綜合運用API調(diào)用和數(shù)據(jù)庫操作創(chuàng)建

  • 實時創(chuàng)建

  • 事先創(chuàng)建

  • 實時和事先創(chuàng)建的互補

GUI測試還能這么“玩”

  • 自動生成頁面對象

  • 自動生成GUI測試數(shù)據(jù)

  • 無頭瀏覽器介紹

  • Headless chrome與Puppeteer的使用

精益求精

  • 提高GUI 測試穩(wěn)定性的關(guān)鍵技術(shù)

  • 非預(yù)計的彈出對話框

  • 被測試系統(tǒng)的A/B測試

  • 隨機的頁面延遲造成控件識別失敗

  • 測試報告

  • 早期的基于視頻的GUI測試報告

  • 開源GUI測試框架的測試報告實現(xiàn)思想

  • 全球化的GUI測試報告的創(chuàng)新設(shè)計

案例:大型全球化電商網(wǎng)站

  • 前端模塊的劃分

  • GUI自動化測試策略設(shè)計

  • 前端組件測試

  • 前端模塊的測試

  • 端到端的測試

  • GUI自動化測試腳本的管理

  • 如:前端模塊A(模塊級測試用例店枣,業(yè)務(wù)流程腳本,頁面對象)

移動應(yīng)用測試技術(shù)

種類

  • Web應(yīng)用

  • 原生應(yīng)用

  • 混合應(yīng)用

測試方法概論

  • Web應(yīng)用的測試

  • 原生應(yīng)用的測試

  • 混合應(yīng)用的測試

  • 移動應(yīng)用的測試難點

專項測試

  • 安裝,卸載

  • 特殊操作測試

  • 交互測試

  • 通知測試

  • 交叉事件測試

  • 兼容性測試

  • 流量測試

  • 耗電量測試

  • 弱網(wǎng)絡(luò)測試

  • 邊界測試

測試工具: Appium(最主要依賴java鸯两,Node,js闷旧,Xcode, Carthage甩卓,Android SDK鸠匀,adb)

  • Appium的實現(xiàn)原理(C/S架構(gòu))

    Appium客戶端通過多語言支持的第三方庫向服務(wù)端發(fā)起請求,基于Node.js的Appium服務(wù)端會接受客戶端的請求逾柿,接著和iOS或者Android平臺上的代理工具打交道缀棍,代理工具在運行過程中不斷接收請求,并根據(jù)WebDriver協(xié)議解析出要執(zhí)行的操作机错,最后調(diào)用iOS或者Android平臺的原生測試框架完成測試

  • 服務(wù)端

  • Mac和window版本

  • 客戶端:測試代碼運行端

  • 設(shè)備端

  • Appium Inspector的使用

  • 用途:協(xié)助對界面元素進(jìn)行定位的工具

企業(yè)級移動應(yīng)用測試框架的設(shè)計思想和實踐

  • 設(shè)計思想:面向?qū)ο?/p>

    重要部分:PageObject, MobileElement, WebDriver,Reporter, TestPlan和Flow

  • 實踐:接口對不同的平臺要統(tǒng)一封裝爬范;完善的日志(時間戳,類型弱匪,關(guān)鍵信息)青瀑;測試報告

移動應(yīng)用測試框架的實現(xiàn)和實踐

  • TestPlan層:提供Assertion和log等工具,用戶可以用這2個工具驗證測試和輸出日志萧诫, Reporter會在篩選測試的步驟斥难,驗證結(jié)果和日志分析后渲染測試報告

  • Element層:封裝各種不同的元素,供TestPlan調(diào)用

  • View層:封裝頁面對象帘饶,將一對端的石頭封裝成頁面哑诊,方便測試腳本的編寫。

  • BasicPage:isPageLoaded()及刻,pinch()镀裤,swipe(),waitForElement, captureSnapshot(),,,

搭建企業(yè)級移動測試私有云的實踐

  • Selenium Grid基本架構(gòu): hub+node

  • Open STF:基于nodejs編寫的遠(yuǎn)程管理android智能設(shè)備的工具

移動運用云測試服務(wù)介紹

  • Sauce Labs

  • Testin

  • MTC:mobile testing center

  • 百度提供:云測試,云調(diào)試缴饭,云眾測暑劝,線上監(jiān)控,測試工具和移動應(yīng)用質(zhì)量標(biāo)準(zhǔn)等服務(wù)

API自動化測試技術(shù)

從0到1:API測試初探

復(fù)雜場景的API測試

API自動化測試框架的技術(shù)演進(jìn)和創(chuàng)新

微服務(wù)模式下的API測試

  • 單體架構(gòu)

  • 微服務(wù)架構(gòu)

  • 微服務(wù)架構(gòu)下的挑戰(zhàn)測試

  • 基于消費者契約的API測試

  • 微服務(wù)的依賴解耦和模擬服務(wù)

代碼級軟件測試基礎(chǔ)和進(jìn)階

代碼級測試的基本理念和方法

常見方法

  • 靜態(tài)方法

  • 人工颗搂,自動

  • 動態(tài)測試方法

  • 人工担猛,自動

  • 靜態(tài)掃碼工具:Sonar

  • 單元測試框架TestNG

  • 基本用法

  • 高級用法

  • 代碼覆蓋率工具JaCoCo

性能測試

性能測試的基礎(chǔ)

  • 軟件性能和性能指標(biāo)

  • 終端用戶眼中的軟件性能

  • 系統(tǒng)運維人員眼中的軟件性能

  • 軟件設(shè)計開發(fā)人員眼中的軟件性能

  • 性能測試人員眼中的軟件性能

  • 指標(biāo)

  • 并發(fā)用戶數(shù)

  • 已上線:系統(tǒng)日志分析法獲取用戶行為

  • 未上線新系統(tǒng):行業(yè)中類似系統(tǒng)的統(tǒng)計信息建立用戶行為

  • 響應(yīng)時間:數(shù)據(jù)網(wǎng)絡(luò)傳輸時間+Web服務(wù)器處理時間+數(shù)據(jù)庫服務(wù)器處理時間

  • 前端響應(yīng)時間

  • 系統(tǒng)響應(yīng)時間

  • 系統(tǒng)吞吐量:軟件系統(tǒng)負(fù)載的承受能力的指標(biāo)

  • 常見的7種性能測試

  • 后端性能測試:CPU占用率,內(nèi)存使用率峭火,磁盤I/O和網(wǎng)絡(luò)I/O

  • 前端性能測試:減少HTTP請求次數(shù)毁习;減少DNS查詢次數(shù);避免頁面跳轉(zhuǎn)卖丸;使用內(nèi)容分發(fā)網(wǎng)絡(luò)纺且;通過Gzip壓縮傳輸文件

  • 代碼級性能測試

  • 壓力測試

  • 配置測試:宿主操作系統(tǒng),應(yīng)用服務(wù)器稍浆,數(shù)據(jù)庫载碌,java虛擬機猜嘱,網(wǎng)絡(luò)環(huán)境,嫁艇。朗伶。。步咪。论皆。

  • 并發(fā)測試

  • 可靠性測試

  • 4大應(yīng)用領(lǐng)域:能力驗證,能力規(guī)劃猾漫,性能調(diào)優(yōu)点晴,缺陷發(fā)現(xiàn)

性能測試實踐

  • 前端性能測試工具:WebPagetest

  • 實際中需要解決2個問題

  • 1.所有的操作都是基于界面,不利于CI/CD流水線

  • 解決方法:webpagetest API wrapper

  • 2.被測網(wǎng)站部署在公司的內(nèi)部網(wǎng)絡(luò)悯周,處于外網(wǎng)webpagetest無法完成測試

  • 解決方法:webpagetest私有化部署

  • 后端性能測試主流商業(yè)工具:LoadRunner

  • 對比jmeter:如何支持海量并發(fā)粒督,實現(xiàn)更好的負(fù)載控制

  • 全鏈路壓測

    基于真實的身材環(huán)境來模擬海量的并發(fā)用戶請求和數(shù)據(jù),對整個業(yè)務(wù)鏈路進(jìn)行壓力測試禽翼,試圖找到所以潛在性能瓶頸并持續(xù)優(yōu)化的實踐

  • 后端性能測試主流開源工具:JMeter

  • 測試案例與經(jīng)驗

  • 性能基準(zhǔn)測試

  • 同一事務(wù)的響應(yīng)時間變慢

  • 系統(tǒng)資源的占用率變大

  • 網(wǎng)絡(luò)帶寬的使用量變高

  • 穩(wěn)定性測試

    長時間的模擬被測系統(tǒng)的負(fù)載7*24

  • 系統(tǒng)資源的所以監(jiān)控指標(biāo)不存在“不可逆轉(zhuǎn)”的上升趨勢

  • 事務(wù)的響應(yīng)時間不存在逐漸變慢的趨勢

  • 事務(wù)的錯誤率不超過1%

  • 并發(fā)測試

  • 容量規(guī)劃測試

準(zhǔn)備測試數(shù)據(jù)

基本方法

  • 基于GUI操作生成測試數(shù)據(jù)

  • 通過API調(diào)用生成測試數(shù)據(jù)

  • 通過數(shù)據(jù)庫操作生成測試數(shù)據(jù)

  • 綜合運用API和數(shù)據(jù)庫生成測試數(shù)據(jù)

創(chuàng)建時機

  • 實時創(chuàng)建方法

  • 事先創(chuàng)建方法

  • 綜合運用實時和事先創(chuàng)建方法

統(tǒng)一數(shù)據(jù)測試平臺

軟件測試新技術(shù)

發(fā)揮人的潛能--探索性測試:即興發(fā)揮屠橄,快速實驗,隨時調(diào)整

  • 基于功能需求和非功能需求進(jìn)行擴展和延伸

測試先行-- TDD

  • 開發(fā)人員實現(xiàn)功能代碼前闰挡,先設(shè)計好測試用例的代碼锐墙,然后根據(jù)測試用例的代碼編寫產(chǎn)品的功能代碼,最終目的是讓開發(fā)前設(shè)計的測試用例代碼能夠順利執(zhí)行通過长酗;

  • 優(yōu)勢

  • 保證開發(fā)的功能一定是符合實際需求

  • 更加靈活的迭代方式

  • 保證系統(tǒng)的可擴展性

  • 更好的質(zhì)量保證

  • 測試用例即文檔

  • 實施過程

  • 對需要實現(xiàn)的新功能添加一批測試

  • 運行所有測試贮匕,看看新添加的測試是否失敗

  • 編寫實現(xiàn)軟件新功能的代碼

  • 再次運行所有的測試,看是否有測試失敗

  • 重構(gòu)代碼

  • 重復(fù)以上步驟直到所有的測試通過

  • 進(jìn)階

  • 1.控制TDD測試用例的粒度

  • 測試用例分解成更小的粒度任務(wù)列表花枫,考慮到用戶的使用場景,保證每一個任務(wù)列表都是最新的功能模塊

  • 2.保證代碼的整潔和高效

  • 3.通過重構(gòu)保證最新叫法代碼的優(yōu)雅和簡潔

打蛇打七寸--精準(zhǔn)測試

  • 借用一定的手段掏膏,通過輔助算法對傳統(tǒng)軟件測試過程進(jìn)行可視化劳翰,分析及優(yōu)化的過程,建立一套測試分析系統(tǒng)馒疹;

  • 傳統(tǒng)軟件測試的主要短板

  • 測試的維護(hù)成本日益升高

  • 測試過程低效

  • 缺乏有效的回歸用例選取機制

  • 測試結(jié)果可信度不高

  • 無論是白盒測試還是黑盒測試技術(shù)都有局限性

  • 核心思想

    1. 對傳統(tǒng)測試的補充
    1. 采用黑盒測試和白盒測試相結(jié)合的模式
    1. 數(shù)據(jù)可信度高
  • 系統(tǒng)自動錄入和管理佳簸,人工無法直接修改數(shù)據(jù)

  • 4.精準(zhǔn)測試的過程不直接面對產(chǎn)品代碼

  • 基于代碼覆蓋率的統(tǒng)計

  • 5.精準(zhǔn)測試與平臺無關(guān),多維度的測試分析算法系統(tǒng)

  • 具體方法

    1. 軟件精準(zhǔn)測試示波器
  • 2.測試用例和被測產(chǎn)品代碼的雙向追溯

  • 3.智能回歸測試用例選取算法

  • 4.測試用例聚類分析

安全第一--滲透測試

  • 定義

  • 專業(yè)人員模擬黑客颖变,從系統(tǒng)可能存在漏洞的位置進(jìn)行攻擊測試生均,在黑客入侵前,找到隱藏的安全漏洞腥刹,從而達(dá)到保護(hù)系統(tǒng)安全的目的马胧;

  • 常用方法

  • 針對性的測試

  • 外部測試

  • 內(nèi)部測試

  • 盲測

  • 雙盲測試

  • 步驟

    1. 規(guī)劃和偵查
    1. 安全掃描
    1. 獲取訪問權(quán)限
    1. 維持訪問權(quán)限
  • 5.入侵分析

  • 常用工具

  • Nmap

  • Aircrack-ng

  • sqlmap

  • Wifiphisher

  • AppScan

用機器設(shè)計測試用例 -- 基于模型的測試(Model-Based-Testing, MBT)

  • 原理:通過建立被測系統(tǒng)的設(shè)計模型衔峰,并結(jié)合不同的算法和策略來遍歷改模型佩脊,從而生成測試用例

  • 常見模型

  • 有限狀態(tài)機

  • 狀態(tài)圖

  • UML

  • 常見工具

  • BPM-X, fMBT, GraphWalker

人工智能在測試領(lǐng)域的應(yīng)用

  • 常見場景

  • 應(yīng)用TensorFlow通過軟件界面截圖尋找bug

  • 利用K近鄰算法協(xié)助失敗測試用例的分析

  • 利用模式識別算法來模糊定位GUI的元素

  • 利用路徑權(quán)重來自動生成測試用例

  • 工具

  • Appvance IQ, Applitool, MABL, TestAI

測試人員的互聯(lián)網(wǎng)架構(gòu)核心知識

必要性

  • 基于消息隊列的分布式系統(tǒng)測試設(shè)計蛙粘,清楚不同方案的優(yōu)勢和劣勢

  • 緩存的示例

  • 架構(gòu)知識的學(xué)習(xí)方法

大型網(wǎng)站的架構(gòu)介紹

  • 最簡單的網(wǎng)站架構(gòu)

  • 應(yīng)用和數(shù)據(jù)分離的網(wǎng)站架構(gòu)

  • 引入本地緩存和分布式緩存的網(wǎng)站架構(gòu)

  • 引入應(yīng)用服務(wù)器集群的網(wǎng)站架構(gòu)

  • 引入主從分離的數(shù)據(jù)庫

  • 引入CDN服務(wù)器和返廈代理服務(wù)器的網(wǎng)站架構(gòu)

  • 引入分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)的網(wǎng)站架構(gòu)

  • 基于業(yè)務(wù)拆分和消息隊列的網(wǎng)站架構(gòu)

  • 基于分布式服務(wù)的網(wǎng)站架構(gòu)

  • 微服務(wù)架構(gòu)

  • 下一代微服務(wù)架構(gòu)--服務(wù)網(wǎng)格

網(wǎng)站的高性能架構(gòu)設(shè)計

  • 前端的高性能架構(gòu)

  • 后端服務(wù)器的高性能架構(gòu)

網(wǎng)站的可收縮行架構(gòu)設(shè)計

  • 分層的可收縮性

  • 緩存集群的可收縮性

  • 數(shù)據(jù)庫的可收縮性

網(wǎng)站的可擴展性架構(gòu)

  • 事件驅(qū)動架構(gòu)與消息隊列

  • 引入消息隊列后的測試關(guān)注點


思維導(dǎo)圖方式如下:


測試工程師(全棧技術(shù)進(jìn)階與實踐).png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市威彰,隨后出現(xiàn)的幾起案子出牧,更是在濱河造成了極大的恐慌,老刑警劉巖歇盼,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舔痕,死亡現(xiàn)場離奇詭異,居然都是意外死亡豹缀,警方通過查閱死者的電腦和手機伯复,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耿眉,“玉大人边翼,你說我怎么就攤上這事∶簦” “怎么了组底?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長筐骇。 經(jīng)常有香客問我债鸡,道長,這世上最難降的妖魔是什么铛纬? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任厌均,我火速辦了婚禮,結(jié)果婚禮上告唆,老公的妹妹穿的比我還像新娘棺弊。我一直安慰自己,他們只是感情好擒悬,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布模她。 她就那樣靜靜地躺著,像睡著了一般懂牧。 火紅的嫁衣襯著肌膚如雪侈净。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天僧凤,我揣著相機與錄音畜侦,去河邊找鬼。 笑死躯保,一個胖子當(dāng)著我的面吹牛旋膳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吻氧,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼溺忧,長吁一口氣:“原來是場噩夢啊……” “哼咏连!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鲁森,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤祟滴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后歌溉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垄懂,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年痛垛,在試婚紗的時候發(fā)現(xiàn)自己被綠了草慧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡匙头,死狀恐怖漫谷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蹂析,我是刑警寧澤舔示,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站电抚,受9級特大地震影響惕稻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蝙叛,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一俺祠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧借帘,春花似錦蜘渣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至狰挡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間释涛,已是汗流浹背加叁。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留唇撬,地道東北人它匕。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像窖认,于是被迫代替她去往敵國和親豫柬。 傳聞我的和親對象是個殘疾皇子告希,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354