<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ZenData通用測試數(shù)據(jù)生成器

          聯(lián)合創(chuàng)作 · 2023-10-01 16:47

          ZenData是由禪道項(xiàng)目管理軟件團(tuán)隊(duì)推出的一款通用的測試數(shù)據(jù)生成工具。主要為了解決開發(fā)和測試過程中測試數(shù)據(jù)的生成、維護(hù)、解析問題。

          一、業(yè)內(nèi)趨勢

          最近幾年DevOps概念越來越火,各種DevOps平臺(tái)也如雨后春筍一樣涌現(xiàn)。但大家往往把重點(diǎn)放在在工具鏈的搭建上,而忽略軟件研發(fā)最重要的本質(zhì)。工具鏈搭建是容易的,有各種的開源軟件可以滿足需求。但工具鏈搭建起來之后應(yīng)該怎么應(yīng)用呢?DevOps是希望可以通過持續(xù)集成和持續(xù)交付來實(shí)現(xiàn)快速的響應(yīng),但這里面有一個(gè)前提,就是質(zhì)量必須要保障。如果沒有質(zhì)量,持續(xù)集成和交付都是空談。如何保證質(zhì)量呢?就必須要上自動(dòng)化測試。

          二、存在問題

          自動(dòng)化測試無論單元測試、接口測試、功能測試都會(huì)面臨一個(gè)挑戰(zhàn),即如何能夠做到大規(guī)模、工程化的自動(dòng)化測試。這里面會(huì)牽扯到很多方面的技術(shù):測試環(huán)境、測試手段、測試資源、測試管理等等,但這里面最最重要的一環(huán)是測試數(shù)據(jù)的管理。

          如果測試數(shù)據(jù)無法做到靈活、大規(guī)模的管理,那么自動(dòng)化測試就始終無法做到規(guī)模化,無法起到快速驗(yàn)證、快速集成、快速交付的目的。

          三、目前解決方案

          目前測試數(shù)據(jù)是如何來維護(hù)的呢?絕大部分的團(tuán)隊(duì)還是停留在手工維護(hù)階段。手工造數(shù)據(jù),手工維護(hù),成本之高,可想而知。個(gè)別有能力的測試人員,會(huì)自己寫點(diǎn)腳本來生成數(shù)據(jù)。個(gè)別有開發(fā)資源的大廠,則自己組建團(tuán)隊(duì)來做專門的數(shù)據(jù)工廠。這些方案都不具備通用性,成本也極其高昂。

          四、ZenData解決方案

          ZenData則通過YAML文件,定義了一種簡單的數(shù)據(jù)類型描述語法。使用者不需要對技術(shù)有過多了解,通過定義簡單的字段取值列表、前綴后綴等配置,即可實(shí)現(xiàn)測試數(shù)據(jù)維護(hù)的目的。簡潔、高效、靈活,是做單元測試、接口測試、功能自動(dòng)化測試、性能測試、壓力測試、打樁mock的有力幫手。

          ZenData通過簡單的range定義實(shí)現(xiàn)了區(qū)間、步長、隨機(jī)、引用、重復(fù)、SQL查詢等方式,通過簡單的規(guī)則可應(yīng)對各種變化。ZenData只有一個(gè)可執(zhí)行文件,支持HTTP模式,還可以對數(shù)據(jù)進(jìn)行反向解析,可以輸出txt、json、xml、sql等多種格式。

          官方網(wǎng)站:https://zd.im

          五、快速體驗(yàn)

          wget https://dl.cnezsoft.com/zendata/1.2/linux/zd.zip
          unzip zd.zip
          cd zd
          zd -d demo/default.yaml

          六、語法格式

          title: zendata數(shù)據(jù)配置語法說明
          desc: 
          
            # 文件組成
          
              # zendata以yaml格式的文件來定義各個(gè)字段的格式。
              # yaml文件整體由文件說明和字段定義兩部分組成。
          
            # 文件說明
          
              # title:   標(biāo)題,可以用簡短的文字概要描述該文件定義的數(shù)據(jù)類型。
              # desc:    描述,可以用多行文本來詳細(xì)描述該文件定義的數(shù)據(jù)類型,非必選項(xiàng)。
              # author:  作者,非必選項(xiàng)。
              # version:版本號(hào),非必選項(xiàng)。
          
            # 字段列表
          
              # 字段定義部分都放在fields這個(gè)定義里面。
              # 一個(gè)yaml文件可以包含一個(gè)或者多個(gè)字段。
              # 字段列表以-field定義開始。
              # 一個(gè)字段可以通過fields屬性定義它的子字段。
          
            # 字段定義
          
              # field:    字段名,僅支持英文、數(shù)字、下?lián)Q線和.
              # range:    列表范圍,最重要的定義。
              # loop:     循環(huán)次數(shù),可以定義某一字段循環(huán)多少次。
              # loopfix:  每一次循環(huán)時(shí)的連接符。
          
              # format:    支持格式化輸出。   
          
              # prefix:   該字段的前綴。
              # postfix:  該字段的后綴。
          
              # length:   該字段的長度。如果不通過分隔符區(qū)分,則需要指定字段長度,單位是字節(jié)。
              # leftpad:  左填充的字符。如果長度不夠,可指定左填充的字符。默認(rèn)是以空格左填充。
              # rightpad: 右填充的字符。如果長度不夠,可指定右填充的字符。
          
              # config:    可以引用另外一個(gè)文件里面的定義。
          
              # from:     引用某一個(gè)定義文件。
              # use:      使用被引用文件中定義的若干實(shí)例。all代表使用所有。
              # select:   如果引用的文件是excel表,可以查詢里面的某一個(gè)字段。
              # where:     如果引用的文件是excel表,可以使用查詢條件。
            
            # loop定義
            
              # 可以使用一個(gè)數(shù)字來指定字段循環(huán)的次數(shù),比如loop:2。
              # 可以使用區(qū)間來定義字段循環(huán)的次數(shù)。比如loop:2-10。
              
            # range定義
          
              # 使用逗號(hào)連接不同的元素。比如 range: 1,2,3。
              # 元素也可以是一個(gè)區(qū)間。比如 range:1-10, A-Z。
              # 區(qū)間可以通過冒號(hào):來指定步長。比如 range:1-10:2。
              # 步長可以是小數(shù)。比如 range: 1-10:0.1。
              # 步長可以是負(fù)數(shù)。比如 range:100-1:-1。 
              # 區(qū)間可以通過R來指定隨機(jī)。比如 range: 1-10:R,隨機(jī)和步長只能二選一。
              # 可以通過一個(gè)文件來指定列表。比如range: list.txt。文件名是相對路徑時(shí),以配置文件為基準(zhǔn)計(jì)算。
              # 可以通過{n}的方式來重復(fù)某一個(gè)元素。比如 range: user1{100},user2{100}
              # 如果區(qū)間或者幾個(gè)元素需要重復(fù),需要用[]括起來。比如 range: [user1,user2,user3]{100}
          
          author: zentao
          version: 1.0
          
          fields:
          
            - field: field_common                 # 默認(rèn)的列表類型,通過逗號(hào)隔成若干區(qū)段。
              range: 1-10, 20-25, 27, 29, 30      # 1,2,3...,10,20,21,22...,25,27,29.30
              prefix: int_                        # 前綴
              postfix: "\t"                       # 后綴,特殊字符加引號(hào),否則無法解析。
          
            - field: field_step                   # 區(qū)間可以指定步長。
              range: 1-10:2, 1-2:0.1              # 1,3,5,7,9,1, 1.1,1.2...,2
              postfix: "\t"
          
            - field: field_random                 # 通過R屬性指定隨機(jī)。R屬性和步長不能同時(shí)出現(xiàn)。
              range: 1-10:R                       # 1,5,8...
              postfix: "\t"
          
            - field: field_file                   # 從一個(gè)文件中讀取列表,并指定隨機(jī)。
              range: users.txt:R                  # 該文件中一行作為一個(gè)元素,并隨機(jī)。
              postfix: "\t"
          
            - field: field_loop                   # 自循環(huán)的字段。
              range: a-z                          # a_b_c | d_e_f | g_h_i
              loop: 3                             # 循環(huán)三次
              loopfix: _                          # 每次循環(huán)的連接符。
              postfix: "\t"
          
            - field: field_repeat                 # 通過{}定義重復(fù)的元素。
              range: user-1{3},[user2,user3]{2}   # user-1,user-1,user-1,user2,user2,user3,user3
              postfix: "\t"
          
            - field: field_format                 # 通過格式化字符串輸出。
              range: 1-10                         # passwd 1,passwd 2,passwd 3 ... passwd10。
              format: "passwd%02d"                # 用%2d補(bǔ)零,使密碼整體保持8位,%2d默認(rèn)補(bǔ)空格。
              postfix: "\t"
          
            - field: field_use_another_file       # 可以引用其他的定義文件。
              config: number.yaml                 # 引用當(dāng)前目錄下面的number.yaml文件里面的定義。
              postfix: "\t"
          
            - field: field_use_ranges             # 引用內(nèi)置的定義文件,該文件定義了多個(gè)range,他們共享了一些field層面的屬性。
              from: custom.test.number.v1.yaml    # 引用data/custom/number/v1.yaml文件里面的ranges定義。
              use: medium                         # 使用該文件中定義的medium分組。
              postfix: "\t"
          
            - field: field_use_instance           # 引用其他的定義文件,該文件定義了多個(gè)實(shí)例。
              from: system.ip.v1.yaml             # 引用data/system/ip/v1.yaml
              use: privateC,privateB              # 使用該文件中定義的privateC和privateB兩個(gè)實(shí)例。
              postfix: "\t"
          
            - field: field_nested_instant         # 引用其他的定義文件,且該文件引用了其他實(shí)例。
              from: custom.ip.private.yaml        # 引用data/custom/ip/private.yaml
              use: all                            # 使用該文件中的所有實(shí)例。
              prefix: "{"
              postfix: "}"
          
            - field: field_use_excel              # 從excel數(shù)據(jù)源里面取數(shù)據(jù)。
              from: system.address.v1.china       # 從data/system/address/v1.xlsx文件中讀取名為china的工作簿。
              select: city                        # 查詢city字段。
              where: state like '%山東%'          # 條件是省份包含山東。
              postfix: "\t"
          
            - field: field_with_children          # 嵌套字段
              fields:
                - field: child1 
                  range: a-z
                  prefix: part1_
                  postfix: '|'
          
                - field:  child2
                  range: A-Z
                  prefix: part2_
                  postfix: '|'
          
                - field: child_with_child
                  prefix: part3_
                  postfix: 
                  fields: 
                    - field: field_grandson
                      prefix: int_
                      range: 10-20
                      postfix: 

           

          瀏覽 18
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  A片免费看视频 | 亚洲影院每日更新 | 色综合天天色 | 香蕉伊人电影网站 | 日韩一级无码特黄AAA片 |