[ 收藏 ] [ 简体中文 ]  
臺灣貨到付款、ATM、超商、信用卡PAYPAL付款,4-7個工作日送達,999元臺幣免運費   在線留言 商品價格為新臺幣 
首頁 電影 連續劇 音樂 圖書 女裝 男裝 童裝 內衣 百貨家居 包包 女鞋 男鞋 童鞋 計算機周邊

商品搜索

 类 别:
 关键字:
    

商品分类

  • 新类目

     管理
     投资理财
     经济
     社会科学
  • 高效自動化測試平臺:設計與開發實戰(博文視點出品)
    該商品所屬分類:圖書 -> 電子工業出版社
    【市場價】
    1169-1696
    【優惠價】
    731-1060
    【作者】 徐德晨茹炳晟 
    【所屬類別】 電子工業出版社 
    【出版社】電子工業出版社 
    【ISBN】9787121390425
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    出版社:電子工業出版社
    ISBN:9787121390425
    版次:1

    商品編碼:12675047
    品牌:電子工業出版社
    包裝:平裝

    開本:16開
    出版時間:2020-06-01
    用紙:膠版紙

    頁數:452
    字數:632800

    作者:徐德晨,茹炳晟

        
        
    "

    產品特色

    /

    編輯推薦

    適讀人群 :軟件企業測試開發人員,對軟件測試感興趣的愛好者,軟件開發從業人員。

    ★ 這是一本自動化測試平臺搭建及優化的實戰指南

    ★ 讀者將掌握高效測試平臺的核心設計思想:面向對像、模塊化設計、可擴展的彈性設計、測試設備的驅動設計、與CI/CD的結合

    ★ 了解數據驅動測試、事件驅動測試等測試腳本的設計模式

    ★ 學會自動生成的實現、第三方工具的封裝以及平臺的部署

    ★ 解讀真實的大型電商案例

    ★ 獲取微服務、中臺等前沿技術與自動化測試結合的方法和實戰經驗


    內容簡介

    本書從軟件自動化測試的發展歷史和趨勢出發,總結了當前軟件自動化測試的需求和挑戰,比如:

    1. 測試對像功能復雜化,被測對像的功能越來越多,越來越全面。

    2. 迭代快速化,軟件從設計到交付的時間周期越來越短。

    3. 測試環境規模不斷增加,被測試對像的繫統規模越來越龐大。

    在此基礎上,本書以實戰的方法,深入淺出地分析和介紹了一種模塊化平臺的設計方案來應對這些挑戰,逐一介紹了每個模塊的設計思路。這種自動化測試平臺具有良好的測試用例的復用能力和功能的擴展能力,並且對於測試工程師用戶來說有比較低的學習成本,能快速對測試用例開發進行上手。同時,該平臺的設計能夠很好的解決部署和執行問題,在CI/CD並且融入了數據驅動,事件驅動等先進的設計思想和理念。

    本書還結合了當下軟件企業比較重視的CI/CD流程,雲端部署等熱門話題, 介紹了如何將自動化測試平臺集成到CI/CD的工作流程以及如何將測試平臺進行雲部署的轉變。最後介紹了幾個大型企業的經典案例。

    除了設計思路和方案以外,本書會給出部分的代碼實現(主要適用面向對像腳本語言Python)。本書的所有代碼均已開源至GitHub。


    作者簡介

    徐德晨 畢業於中國科技大學自動化繫軟件工程專業,碩士。先後任職於智邦科技、Tellabs、Broadcom、Cisco,從事自動化測試平臺開發工作,在Cisco任職期間申請通過三項專利,現在Dell EMC負責自動化測試平臺的設計與開發。

    茹炳晟 業界知名的實戰派軟件質量和研發工程效能專家,測試基礎架構的布道者,騰訊雲專家TVP,阿裡雲專家MVP,中國商業聯合會互聯網應用技術委員會的智庫專家,國內外技術峰會的技術委員會成員和專題出品人。


    內頁插圖

    精彩書評

    本書是兩位作者十幾年測試工具開發經驗的分享,向我們全方位展示了如何構建一個靈活、高效且智能的測試平臺。這類圖書在市場上很少見,是我樂意推薦的一項理由。其次,它不局限於測試資源和配置管理、數據驅動、用例執行、測試報告等功能,而是擴展到微服務測試,具有靈活配置的測試引擎、測試代碼和用例的自動生成等,使平臺更具智能性、普適性和先進性。但讓我樂意推薦本書之更強壯的理由是“得到成功案例的驗證”和“已在Github上開源”。

    朱少民 《全程軟件測試》和《高效敏捷測試49講》作者

    在軟件吞噬世界的時代,具備高效、高質量、可持續地交付客戶需求的能力成為企業的核心競爭力。那麼如何設計和實現一套實用的軟件自動化測試平臺,讓質量和效率可以兼得,就顯得愈發重要。本書的兩位作者在自動化測試領域有很深的造詣,在多年的一線實踐中積累了大量寶貴經驗,通過抽像和提煉形成了一套面向實戰、切實可行的自動化測試框架設計和落地方法。更難能可貴的是,本書提供了大量示例代碼並開源至GitHub,讓讀者可以更容易地理解作者想要表達的設計思路,並且能夠快速進入實戰狀態,從理念到落地一氣呵成,是一本不可多得的測試開發的技術參考書籍。

    張樂 京東 DevOps與研發效能資深專家

    在現代越來越復雜的軟件繫統開發中,自動化測試的地位越來越重要了,繫統地學習自動化測試對於測試人員來說逐漸成為一門必修課。本書通過實例的方法繫統地講解了一個自動化測試平臺的各種基本模塊、架構設計、編碼實現等,以及兩位作者多年對於自動化測試的經驗和思考。我相信這些內容一定能讓讀者繫統地學習到一個自動化測試平臺的各個方面,從而幫助讀者寫出更好的自動化測試,或者開發出屬於自己的自動化測試工具或者平臺。

    劉冉 ThoughtWorks首席軟件測試和質量咨詢師

    談到自動化測試平臺,很多書都是圍繞現成的測試平臺的具體使用(比如數據驅動、可視化、關鍵字驅動等)來展開討論的,這在測試平臺產品化的層面來看是屬於外行湊熱鬧的做法。本書從產品的角度探討了測試平臺設計和開發的各個方面,從架構師的角度介紹了平臺設計和開發的過程。通過簡單質樸的一行行代碼,將一個個實用模塊逐漸展開,簡約而不簡單,大繁至簡。

    陳霽 TestOps架構師


    隨著信息化的快速發展,人們對軟件的需求越來越多,研發迭代的速度越來越快,因此自動化測試成為軟件研發過程中必不可少的一部分。工欲善其事,必先利其器,一個高效的軟件自動化測試平臺尤其重要。本書從自動化測試的基本應用場景談起,到自動化工具的設計要求,非常全面地介紹了自動化測試工具的關鍵要素,使讀者對自動化測試有了一個基本的了解。繼而又詳盡地介紹了一個高效的自動化測試平臺的設計和開發的方方面面,並且通過大量的實例讓讀者加深印像,真正做到授人以漁,是一本誠意滿滿的好書。

    方亮 騰訊WeTest負責人


    目錄

    第1章 軟件自動化測試面臨的挑戰 1

    1.1 軟件測試各個階段的自動化需求 2

    1.1.1測試 2

    1.1.2 功能測試 4

    1.1.3 回歸測試 6

    1.1.4 可用性測試及冒煙測試 6

    1.1.5 繫統測試 7

    1.2 軟件自動化測試工具的挑戰 8

    1.2.1 測試用例的復用能力 8

    1.2.2 測試用例的擴展能力 9

    1.2.3 測試工具的擴展能力 10

    1.2.4 靈活的測試調度能力 11

    1.2.5 測試結果和報告 12

    1.2.6 與CI/CD的集成能力 14

    1.2.7 快速部署和較低的學習成本 15

    1.3 基於面向對像的平臺化設計思想 16

    1.3.1 面向對像設計思想 16

    1.3.2 模塊化設計 25

    1.4 總結 27

    ?

    第2章 高效測試平臺的基本設計 28

    2.1 編程語言和開源框架 29

    2.1.1 編程語言的選擇 29

    2.1.2 從零開發還是使用現有框架 30

    2.1.3 跨越平臺和編程語言的限制 31

    2.2 模塊化測試平臺的設計方法 33

    2.2.1 什麼是模塊化 33

    2.2.2 核心功能和業務分離 36

    2.2.3 分層設計思想 36

    2.2.4 前後端分離 38

    2.3 自動化測試平臺的基本設計 41

    2.3.1 自動化測試平臺的基本模塊 41

    2.3.2 測試資源管理模塊 42

    2.3.3 測試配置管理模塊 43

    2.3.4 測試用例執行模塊 44

    2.3.5 測試報告和日志模塊 45

    2.4 總結 46

    第3章 可擴展的測試資源管理模塊 47

    3.1 測試資源 48

    3.1.1 測試資源和抽像 49

    3.1.2 測試資源的序列化和反序列化 53

    3.1.3 測試資源池 61

    3.2 資源選擇器 67

    3.2.1 設計資源選擇器的目的 68

    3.2.2 資源限制條件機制 71

    3.2.3 資源獲取路由 81

    3.3 從資源類對像獲取資源配置接口 87

    3.3.1 資源類對像和配置接口分離 87

    3.3.2 配置接口實例化方法的注冊 89

    3.4 總結 93

    ?

    第4章 模塊化的測試配置 94

    4.1 測試配置基本分類 96

    4.1.1 靜態配置 96

    4.1.2 動態配置 97

    4.1.3 帶有邏輯功能的配置 99

    4.2 可擴展的靜態配置 100

    4.2.1 基本配置的設計 100

    4.2.2 配置的注冊方法 103

    4.3 靈活的動態配置 106

    4.3.1 類中類 107

    4.3.2 通過裝飾器來初始化配置 108

    4.4 帶邏輯功能的配置 109

    4.4.1 帶邏輯功能配置模塊的使用場景 109

    4.4.2 邏輯功能模塊的實現 111

    4.4.3 邏輯配置模塊管理器 114

    4.5 總結 117

    第5章 友善的測試報告和日志 119

    5.1 我們需要什麼樣的測試結果 120

    5.1.1 測試步驟和日志分離 121

    5.1.2 儀表板 122

    5.1.3 清晰的測試步驟 122

    5.1.4 分類的運行日志 124

    5.2 樹形顯示的測試步驟 124

    5.2.1 樹形測試步驟輸出的實現 125

    5.2.2 巧用Python的with語句 138

    5.3 日志管理 148

    5.3.1 日志注冊 148

    5.3.2 平臺模塊的日志注冊 150

    5.3.3 測試用例的日志注冊 155

    5.4 總結 158

    第6章 靈活配置的測試引擎 159

    6.1 測試引擎的職責 160

    6.1.1 測試用例的裝載 161

    6.1.2 測試列表和配置需求滿足分析 162

    6.1.3 測試資源獲取 162

    6.1.4 配置的裝載 163

    6.1.5 測試用例的執行及生命周期管理 163

    6.2 測試用例 165

    6.2.1 四步測試 165

    6.2.2 測試用例的屬性 167

    6.2.3 測試用例參數 168

    6.2.4 測試用例的優先級及依賴關繫 171

    6.2.5 測試列表 174

    6.3 測試引擎的初始化設計 178

    6.3.1 靜態配置的讀取和實例化 179

    6.3.2 測試資源的獲取 180

    6.3.3 測試列表及測試用例的裝載 181

    6.4 測試用例的生命周期管理及運行 184

    6.4.1 測試用例的執行流程 184

    6.4.2 測試用例的流程控制設計 185

    6.4.3 測試用例的異常管理 191

    6.4.4 測試用例的中斷控制 194

    6.4.5 測試引擎的運行 195

    6.5 總結 197

    第7章 友善的管理平臺 199

    7.1 命令行模式 200

    7.1.1 命令行模式的優缺點 201

    7.1.2 展示層設計 202

    7.1.3 命令行功能的實現 205

    7.1.4 執行測試用例 207

    7.2 RESTful API的管理模式 210

    7.2.1 RESTful API的特點 210

    7.2.2 測試平臺RESTful API的設計實現 211

    7.2.3 GUI界面管理模式 219

    7.3 測試用例的管理 219

    7.3.1 測試用例的自動發現 220

    7.3.2 測試用例的進一步管理 227

    7.4 平臺的安裝及發布 228

    7.4.1 平臺核心功能的發布 229

    7.4.2 測試用例及業務代碼管理 236

    7.5 總結 241

    第8章 測試數據及數據驅動測試 242

    8.1 測試數據的準備與生成 243

    8.1.1 常見的測試數據生成方法 243

    8.1.2 測試數據生成的時機 248

    8.1.3 統一測試數據平臺 252

    8.2 數據驅動的測試用例 259

    8.2.1 測試過程復用和數據替換 260

    8.2.2 適宜的數據驅動策略 265

    8.3 測試用例參數的傳遞設計 266

    8.3.1 測試數據的傳遞 266

    8.3.2 數據驅動裝飾器的實現 268

    8.3.3 測試數據的變量化 271

    8.4 總結 277

    第9章 代碼自動生成 278

    9.1 重復勞動的封裝作業 279

    9.1.1 協議驗證測試和數據報文分析 280

    9.1.2 RESTful API測試 285

    9.2 數據驅動 287

    9.2.數據 288

    9.2.2 手工開發代碼的實現 296

    9.3 代碼自動生成的實現 302

    9.3.1 自動生成代碼的工具 302

    9.3.2 中間對像的定義 311

    9.3.3 代碼的自動生成 326

    9.4 測試用例的自動生成 337

    9.4.1 技術代碼和業務數據的分離 337

    9.4.2 API接口測試 340

    9.5 總結 342

    第10章 測試工具和設備的驅動設計 343

    10.1 命令行工具 344

    10.1.1 命令行接口類的實現 345

    10.1.2 接口的實例化 351

    10.2 Selenium的二次封裝 353

    10.2.1 瀏覽器的二次封裝 353

    10.2.2 素封裝 358

    10.3 技術代碼下沉和測試業務封裝 364

    10.3.1 網絡設備流量測試的典型場景 365

    10.3.2 網絡設備流量測試過程的抽像 367

    10.4 總結 372

    第11章 事件驅動測試模式 373

    11.1 傳統測試用例的挑戰 374

    11.1.1 固定的測試步驟和覆蓋率 374

    11.1.2 客戶問題的復現 375

    11.1.3 大繫統和長時間的測試挑戰 376

    11.2 何為事件驅動 377

    11.2.1 事件驅動的特點 377

    11.2.2 事件驅動的一些問題 381

    11.3 事件驅動引擎的設計 385

    11.3.1 事件驅動的基本流程 385

    11.3.2 事件的設計和實現 386

    11.3.3 與現有平臺相結合 399

    11.4 總結 400

    第12章 微服務化的測試平臺 401

    12.1 軟件架構的演進 402

    12.1.1 Monolith單體架構 402

    12.1.2 分布式架構和SOA 403

    12.1.3 微服務 404

    12.2 微服務的基本形態 405

    12.3 測試平臺的微服務化 407

    12.3.1 統一的測試平臺 407

    12.3.2 服務邊界 409

    12.3.3 基本服務的設計 411

    12.3.4 消息隊列 414

    12.4 總結 414

    第13章 實戰成功案例介紹 416

    13.1 四兩撥千斤的自動化測試平臺 416

    13.1.1 初期階段—產品測試模式和自動化測試平臺的建立 417

    13.1.2 擴展階段—更智能的測試平臺 421

    13.1.3 推廣階段—公司的明星級測試平臺 423

    13.2 全球大型電商的自動化測試中臺 424

    13.2.1 測試中臺的全局架構 424

    13.2.2 統一測試執行服務 426

    13.2.3 統一測試數據服務 426

    13.2.4 統一測試執行環境服務 427

    13.2.5 被測繫統部署服務 429

    13.2.6 測試報告服務 429

    13.2.7 全局測試配置服務 430

    13.2.8 GUI自動化測試服務 432

    13.2.9 API自動化測試服務 432

    13.2.10 統一Mock服務 433

    13.2.11 工程效率工具鏈倉庫 433


    查看全部↓

    精彩書摘

    /第12章微服務化的測試平臺

    最近幾年什麼架構模式最火爆?很多人會說是微服務,因為不少互聯網企業使用微服務架構創建了不少成功案例。微服務伴隨著各種新技術的誕生,也為測試本身提供了很大的挑戰。當然,測試平臺本身也在不斷進化,它也可以進化為基於微服務的平臺。

    微服務架構的概念是,將功能分割成一個一個可以自治管理的模塊,模塊通過REST API或RPC對外提供服務,它隔離了功能模塊,極大地解耦了模塊之間的數據,並且可以通過負載均衡技術增加單個服務的性能,從而提高整個繫統的擴展能力。

    /在一些大型企業,自動化測試工具不再是每個部門自己的事情,而是會有專門的開發團隊提供自動化測試平臺的基本套件,比如某國際通信產品企業就有專門的團隊提供了基於Python的自動化測試平臺,並且提供了統一的部署和安裝方式,以及公共的代碼庫,方便不同團隊之間共享代碼,並且整個平臺是基於網絡運行的,測試者如果需要執行一個新的測試平臺,則隻需啟動一個新的Docker容器,然後在裡面執行測試用例。

    在互聯網時代,各種大型產品不斷被開發,這對測試平臺本身的功能和性能也是極大的挑戰,可能傳統的基於網絡的共享自動化測試平臺也會因為單體架構而導致出現性能和維護上的問題。傳統的單體架構的最大問題是可用性低,大家肯定有所體會,即便是商業版本的一些缺陷管理工具或WIKI工具,也會時常出現問題導致無法訪問,並且伴隨著版本的升級,服務停止的時間增多。如果是共享的自動化測試平臺,這種服務停止狀態是無法被接受的,因為IT部門無法協調公司內所有部門的測試任務,這種無法提供服務的狀態會對一些部門的測試計劃產生極大的影響。

    本章我們將探索性地討論和思考,對微服務化的自動化測試平臺進行一些初探,通過一些簡單的設計概念,逐漸將測試平臺向微服務轉化。

    當然,本書不是介紹微服務及如何建立微服務的書,所以對於如何使用流行的微服務框架來建設微服務的基礎設施,不在本章的探討範圍之內,讀者可以自行查找一些書籍對微服務本身進行更深入的理解和學習。

    通過本章你將基本了解:

    · 什麼是微服務,以及為什麼要使用微服務架構。

    · 如何將測試平臺轉化為微服務平臺。

    //12.1 軟件架構的演進

    在講微服務架構的概念之前,我們先回顧一下軟件架構發展的歷史,了解一下各種架構模式的特點及痛點。這樣,我們可以更好地了解微服務產生的背景,以及所能解決的問題。

    軟件從計算機誕生到現在,基本上經歷了如下幾個階段。

    12.1.1 Monolith單體架構

    在2.2.1節中,我們介紹了一些基本的Monolith架構的情況,下面來回顧一下,如圖2-1所示。

    早期的軟件運行於單繫統中,功能比較單一,所有代碼都放在一個項目中,功能上沒有明確的邊界定義,可能會出現模塊之間直接進行函數調用的情況。這種情況當然在現代軟件設計中是完全不被允許的,這樣會破壞封裝性。不過在早期的軟件設計中,或者在現代軟件制作的PoC階段,這種從0到1的模式可以很快地將軟件的功能展現出來,並且方便調試。

    傳統的單體架構中,所有功能都在一個服務內,功能模塊之間通過代碼級別的引用建立依賴關繫。

    如果我們需要修改其中一個模塊的功能,就要考慮此模塊的依賴關繫,以防對其他功能產生影響。而且隨著功能越來越多,整個繫統會越來越龐大,最終發展到難以維護的地步。隨著業務的發展,繫統的訪問量增加,繫統性能和並發能力就會受到考驗。

    單體架構的缺點主要體現在以下幾方面:

    第一,擴展能力有限。比如我們在實現一個單體的管理繫統的時候,一開始用戶不多,進行的操作也不復雜,一臺計算機就能滿足其性能需求,但是隨著用戶增加,功能也越來越多,原來的計算機性能就不夠用了。此時我們就要通過對計算機進行升級來滿足其性能需求,但是到了後期,可能升級計算機硬件也無法進一步提升性能。

    第二,有很強的耦合邏輯,修改繫統代碼要極其小心,我們經常會看到或聽到一些人說,某個組織的繫統,沒有人敢對代碼進行升級,因為誰都不知道,修改了這一塊代碼會影響多少其他代碼,其實這並不是笑話。

    第三,繫統的升級非常麻煩。對於小型軟件,重新安裝就可以,但是大型的企業平臺,整個平臺下線就會有非常大的效率問題,這與高可用性是背道而馳的。並且一旦有一個問題需要被修復,整個項目就要被重新打包。

    當然並不是說單體架構就一定不好,因為單體架構也在不斷發展,比如單體架構中的分層架構、前後端分離等,都是非常好的架構模式,甚至不管是分布式架構、SOA,還是微服務,都還有單體架構的思想在其中,甚至是這些方法的延續。

    12.1.2 分布式架構和SOA

    說到分布式我們不得不提SOA,Service-Oriented Architecture,其基本概念是通過代碼功能的分離,使得每個功能都可以作為一個服務單獨部署。並且服務和服務之間進行了充分的解耦,每個服務都有其明確的功能邊界,服務之間的相互調用則通過中立的契約來描述。

    這樣,不同的服務可以由不同的平臺進行實現,比如對於需要高性能的服務可以使用C++來開發,而對於需要高速開發和快速功能迭代的,可以使用Python或Java。

    分布式架構基於網絡的服務器架構集群,可以方便地進行流量負載均衡操作,並且當一個服務所部署的服務器出現性能瓶頸時,我們可以通過升級該服務器或者增加服務器集群來提升服務的性能。

    12.1.3 微服務

    其實微服務和SOA有類似之處,都是將模塊組件服務化,每個服務通過API對外提供特定的服務。但是微服務有其自身的特點,相較於SOA,它更加組件化,從而會生成更多的自治服務模塊。James Lewis和Martin Fowler對微服務架構的定義如下:

    “微服務架構風格,簡單地說,是以實現一組微服務的方式來開發一個獨立的應用繫統的方法。其中每個小微服務都運行在自己的進程中,一般采用基於HTTP協議的資源 API這樣輕量的機制進行通信。

    微服務圍繞業務功能進行構建,通過全自動化的方式進行獨立部署。可以使用不同的編程語言來編寫,也可以使用不同的數據存儲技術,並且進行最低限度的集中管理。也就是說,微服務的特點是每個服務需要運行在獨立的進程中,比如容器化的Docker,通過一繫列手段來進行管理。在服務崩潰的時候,可以通過重啟服務或分流將調用重定向到其他服務。

    我們可以看到微服務所帶來的一些優點:

    (1)微服務可以讓開發團隊分割成一個一個的小團隊(1 pizza team,一個pizza可以喂飽的人數的團隊),每個團隊負責自己微服務的開發,小團隊一般更便於管理,並具有更高的執行力。

    (2)服務是高可用的,一個服務可以發起多個進程提供同樣的服務,並通過負載均衡算法決定調用哪個進程的服務,這樣在一個進程崩潰的時候,還有其他進程可以提供服務,從而不影響服務。

    (3)橫向擴展能力強,一個服務如果遇到性能瓶頸,可以通過啟用更多的服務進程來達到提高並發的能力。

    (4)灰度發布,微服務架構下的缺陷修復不再需要統一的版本控制,如果一個問題可以很簡單地修復,並且這個服務在繫統中運行了100個進程,那麼我們就可以先給10個進程做升級,然後看看實際運行過程中有沒有問題,即便產生了問題,也隻是影響了10%的流量,可以回退版本繼續修復。如果沒有問題我們可以再對另外90個進程作升級。這樣就可以對一些缺陷做到快速響應。

    但是微服務也帶來了一些顯而易見的缺點:

    (1)過於自治的服務導致聯調會產生巨大的溝通成本,特別是對於接口的定義如果頻繁變動,則會對繫統的整體功能影響比較大。

    (2)數據一致性問題。在微服務的架構中,服務被拆成了一小塊一小塊,但是有些操作需要有事務的概念,在單體繫統中,我們可以通過事務鎖來解決數據的競爭,但是在微服務繫統中,由於服務不允許存在狀態,而一個事務包含多個微服務的調用又不可避免,所以就要花更多的力氣去解決數據一致性的問題。

    (3)運維難度增加,在單體繫統或簡單的SOA繫統中,代碼集成和發布會比較容易。但是在微服務繫統中,一旦微服務展開太多,有些大型繫統甚至有成百上千的微服務需要部署,如何保證整個代碼集成(CI)到自動化部署(CD)也是一個巨大的挑戰。

    但是無論如何,微服務依舊是大繫統中被證明有著相當潛力的架構模式。


    查看全部↓

    前言/序言

    /

    前言

    軟件自動化測試的意義


    隨著計算機技術的發展,計算機的計算能力和存儲能力不斷提高,計算機軟件的復雜程度也不斷地增加,近幾十年互聯網飛速發展,網絡可以將計算機連接起來,突破硬件能力的限制,形成規模更為龐大、功能更為復雜的軟件繫統。可以看到,在這樣的背景下,要保證軟件的質量已經成為每一個企業的巨大挑戰。

    在幾十年前,受限於計算機硬件的限制,軟件的規模比較小,比如一張或幾張磁片就能容下一個繫統,所以不管從軟件的代碼量還是從功能來說,都是比較少的,要保證軟件的質量,可以通過常規的測試手段來進行測試,測試人員根據軟件設計人員定義的操作,設計測試用例,並且手動地執行測試用例便可基本保證軟件的質量。

    不過隨著軟件規模的增大,軟件的速度開始提升,特性也越來越豐富,測試的要求就逐漸變得高了起來。

    特別是隨著軟件質量的提高,公司對企業的測試人員提出了更高的要求。傳統的測試人員需要設計更多的測試用例,這意味著測試人員需要執行更多的測試用例,漸漸地,純手工測試已經不可能滿足軟件質量的要求了。

    自動化測試是將傳統人工執行的測試用例轉換成程序,讓機器去執行。機器不僅可以24小時工作,並且對於每一次執行都不會“偷懶”。這裡筆者並不需要列舉具體的數據來說明自動化的測試用例可以提高多少測試效率,隻需要通過一些簡單的例子,就可以看到自動化測試帶來的巨大的效率提升。

    比如,對於傳統的交換機測試,一個經典的測試用例就是數據報文的轉發,我們可能需要在交換機上先做一些配置,接著在測試儀表上做一些配置,然後使用測試儀表發送測試流量,再對結果進行分析。這個過程如果用純手工,可能需要兩分鐘,如果使用腳本來配置交換機並且用腳本控制測試儀表,可能隻需要幾秒鐘。這還不是關鍵,關鍵在於,如果這個端口支持不同的工作模式,比如十兆位、百兆位、千兆位模式,那麼就需要做三次同樣的測試。

    軟件行業的統計會帶來一些有趣的結論。比如一個公司基於缺陷的統計,每千行代碼的缺陷數量為兩個,在下一個版本發布時,每千行代碼的缺陷數量隻有1.5個。這並不是說明軟件質量提高了,而是有缺陷沒有被找到。這看上去似乎有點不合乎邏輯,但事實就是,功能和性能的增加會導致測試的復雜性以幾何的方式提升,所以缺陷和代碼量並不呈線性的正比。

    所以軟件自動化測試的重要性不言而喻,我們不僅需要軟件自動化測試,還需要高效的軟件自動化測試,以應對日益增加的代碼量。


    軟件自動化測試的發展


    早期腳本錄制回放,或者簡測試腳本,可以說是自動化測試的雛形。比如開發人員會寫測試函數,來對一些模塊進行輸入/輸出測試。黑盒測試人員會將軟件的配置過程及檢查過程使用工具進行記錄和回放。比如Pro Comm、SecureCRT等終端軟件就支持用戶輸入的記錄,並且生成腳本,然後用戶可以對整個配置過程和結果進行自動化處理。

    在這個階段,自動化測試沒有統一的自動化測試管理工具,腳本也沒有統一的版本管理,所以維護起來也比較麻煩,不過作為手工測試的輔助,已經能夠大大提高測試的效率。

    之後,很多企業逐漸意識到自動化測試管理的重要性,有些企業的團隊就開始把自動化測試作為一個項目來對待,有專門負責自動化測試工具開發的人員,形成了比較規範的自動化測試開發團隊,這些團隊根據項目的需求來建立專門的自動化測試工具,以幫助測試人員開發自動化測試用例,統一進行管理和運行,並且可以生成規範的報告。

    在這個階段,許多團隊的自動化測試工具往往針對性非常強,這裡的“針對性”指的是,可能每個自動化工具隻能應用於某種產品繫統的測試,甚至對產品的配置都是有要求的。筆者認為,出現這一情況的原因是,在當時,測試人員的代碼和設計能力不是很強,企業很少將專門的開發人員派去參與測試繫統的開發,並且在當時,自動化測試工具即便是完善的,也依然處於輔助的地位。因為自動化工具本身也是軟件,過於復雜的功能會提高開發的成本,也會導致工具缺陷帶來的產品缺陷無法發現或自動化測試不能順利執行的問題。所以,有針對性的測試工具,開發和維護起來都比較容易。

    隨著軟件發展越來越快,企業的產品周期也變得越來越快,需求變更,新產品迭代,針對性強的自動化測試工具反而變得更不容易維護,要麼需要重新開發對應的自動化測試工具,要麼需要對原來的工具進行改造。

    在這種背景下,出現了一些開源的或者商業的自動化測試框架或者工具,來針對某些領域的軟件進行測試。比如Rational Functional Test是IBM推出的一款自動化測試工具,可以用來測試Web自動化及基於Java的Swing或AWT的GUI的自動化測試,它本身提供了控件抓取的功能和不錯的執行報告生成的功能,並且還有很豐富的示例文檔。

    測試團隊選擇適合他們的框架或工具,可以更多地關注測試業務本身,將有限的資源集中在測試用例的開發和執行上。但是隨著軟件規模的進一步增大,迭代周期進一步縮短,通用的框架也會有一定的局限性,比如,通用框架的功能無法滿足實際需求。

    測試框架開始逐漸向平臺化發展,不僅是簡單地執行測試用例並輸出報告,還能夠進行測試用例的復雜管理,以及測試執行的復雜管理,並且更進一步地,進入持續集成/持續交付或部署(CI/CD)的環節,使得整個軟件的開發和測試流程形成一個完整的自動化閉環,企業逐漸開始增加測試開發人員的配比。

    而如今,隨著人工智能的引入,自動化測試又開始向人工智能方向發展。人們正在研究利用人工智能技術進行自動生成自動化測試用例的技術,這無疑又會將自動化測試提到一個新的高度。


    關於本書


    即便自動化測試技術在今天已經發展到人工智能的階段,但是很多企業和團隊由於成本或者其他一些因素,依舊在自動化測試工具、平臺的選擇和開發上苦苦摸索和前進。

    這本書是筆者對從事了十幾年的自動化測試開發工作的一個階段性總結。筆者曾經任職於幾家通信企業,也在創業公司帶領過測試開發團隊,現在依舊在軟件企業中從事自動化測試平臺的建設和優化。

    在這本書中,筆者根據所在的公司所面臨過的一些挑戰,分析一個自動化測試平臺所需要的或者可能需要的相關特性,並且用Python語言來實現這樣一個平臺,因為Python是現今流行的腳本語言之一,很多企業都在使用Python進行軟件開發。不過使用何種語言隻是一種工具,筆者有很長一段時間使用C#進行軟件開發。

    編程語言是實現設計的途徑,甚至一個功能強大的平臺,可以匹配多種語言工具開發的庫,比如最近流行的微服務架構,就可以使開發者選擇自己熟悉的語言來進行開發。關於Python的版本,本書在編寫階段經歷了3.5版本到3.7版本的一次升級,所以有些代碼可能需要Python 3.7以上的版本纔能執行。比如字符串格式化方法,f“{var}”這樣的格式是3.7版本以後的新特性,如果讀者還在使用3.5版本的Python,可以自行替換成類似str.format或者%的字符串格式化方式。

    在大多數情況下,筆者希望平臺是足夠通用的。其實在前幾年,筆者一直認為,足夠通用的測試平臺在企業內部更容易推廣,並且能夠更好地滿足變化需求快的項目,這樣可以在新產品到來之後,不需要做太多的測試平臺的重構。不過最近幾年筆者纔發現,過高的通用性會提高測試平臺開發的難度,有時候舍棄通用性是提高效率的好辦法,當然這些都需要團隊去權衡。

    本書的讀者對像是在軟件測試領域有一定的經驗,對自動化測試開發沒有太多的經驗,但是希望在自動化測試上進一步發展的工程師。筆者希望,這本書能夠給這樣的讀者帶來一些軟件自動化測試平臺的設計思路,並且使讀者能夠根據所在團隊的特點進行進一的步擴展。當然,如果你是一位希望從事軟件自動化測試開發的技術人員,相信這本書也會給你帶來不錯的啟發與幫助。

    本書主要分為四個部分:

    第一部分包括前言和第1章,主要分析和介紹當前軟件測試領域中自動化測試開發的現狀,以及所面臨的一些挑戰,並且通過這些分析,提出了自動化測試的需求。

    第二部分包括第2章到第7章,通過案例分析及實際的代碼,實現一個可執行的自動化平臺的基礎功能。

    第三部分包括第8章到第11章,主要介紹對傳統自動化測試的改進方案,包括數據驅動、測試代碼的自動生成、模塊化的事件驅動模式,以及第三方測試工具的封裝。

    第四部分包括第12章和第13章,主要介紹一些前沿技術和自動化測試的結合方法,以及自動化測試的真實企業案例。

    本書的所有代碼均已開源至GitHub,書中的代碼可能會有一些改動,主要是為了以更簡單的代碼來說明筆者想要表達的概念,代碼的功能是一致的。讀者可以訪問GitHub網址https://github.com/dechenx83/automation_test進行學習,甚至分享自己的代碼,一起進步。


    查看全部↓



    "
     
    網友評論  我們期待著您對此商品發表評論
     
    相關商品
    在線留言 商品價格為新臺幣
    關於我們 送貨時間 安全付款 會員登入 加入會員 我的帳戶 網站聯盟
    DVD 連續劇 Copyright © 2024, Digital 了得網 Co., Ltd.
    返回頂部