วิธีตั้งค่าการทดสอบ API อัตโนมัติทุกคืนใน GitHub Actions, GitLab และ Jenkins

ตั้งค่าการสร้างรายคืนสำหรับ API ของคุณ: กำหนดการทดสอบรีเกรสชันอัตโนมัติใน CI ด้วย Apidog CLI คัดลอก-วางการกำหนดค่า cron ของ GitHub Actions, GitLab และ Jenkins เพื่อตรวจจับข้อผิดพลาดได้ภายในตอนเช้า

Ashley Innocent

Ashley Innocent

15 June 2026

วิธีตั้งค่าการทดสอบ API อัตโนมัติทุกคืนใน GitHub Actions, GitLab และ Jenkins

Apidog สำหรับองค์กร

การติดตั้งแบบ On-Premises

SSO & RBAC

รองรับมาตรฐาน SOC 2

สำรวจ Apidog Enterprise

การทดสอบ API ของคุณผ่านทุกครั้งที่มีการดึงโค้ด (pull request) บิลด์เป็นสีเขียว คุณปล่อยออกไปใช้งานได้ แล้วตอน 9 โมงเช้า มีคนในเขตเวลาอื่นรายงานว่าหน้าชำระเงิน (checkout) คืนค่าข้อผิดพลาด 500 ทั้งที่ไม่มีใครเปลี่ยนแปลงโค้ดส่วนชำระเงินเลย สิ่งที่เปลี่ยนไปอาจเป็นแซนด์บ็อกซ์การชำระเงินของบุคคลที่สาม การย้ายฐานข้อมูลที่ทำงานข้ามคืน หรือโทเค็นที่หมดอายุไปเงียบๆ การทดสอบแบบต่อคอมมิตของคุณไม่เคยตรวจพบสิ่งเหล่านี้ เพราะไม่มีอะไรในที่เก็บโค้ดของคุณเปลี่ยนแปลงไป

นี่คือช่องว่างที่การบิลด์ตอนกลางคืน (nightly build) เข้ามาอุด การบิลด์ตอนกลางคืนคือการรันชุดทดสอบแบบเต็มรูปแบบตามกำหนดเวลา โดยจะทำงานวันละครั้ง โดยปกติแล้วจะเป็นช่วงเช้ามืด ซึ่งจะทดสอบกับบริการและสภาพแวดล้อมจริงของคุณ แทนที่จะทดสอบเฉพาะกับการเปลี่ยนแปลงโค้ดเท่านั้น มันจะจับข้อผิดพลาดที่เกิดขึ้นระหว่างคอมมิต เช่น ข้อมูลคลาดเคลื่อน, การเชื่อมโยงที่ไม่เสถียร, ข้อมูลรับรองที่หมดอายุ, ประสิทธิภาพที่ค่อยๆ ลดลง, และการเปลี่ยนแปลงสัญญาที่เกิดจากบริการที่คุณไม่ได้ควบคุม โดยเฉพาะอย่างยิ่งสำหรับ API การรันการทดสอบรีเกรสชันตอนกลางคืนเป็นระบบเตือนภัยล่วงหน้าที่ถูกที่สุดที่คุณสามารถตั้งค่าได้

คู่มือนี้จะพาคุณสร้างระบบดังกล่าวตั้งแต่ต้นจนจบด้วย Apidog คุณจะได้ออกแบบชุดทดสอบรีเกรสชัน สร้างการรันด้วยคอมมานด์ไลน์ด้วย Apidog CLI เชื่อมต่อเข้ากับงาน CI ที่กำหนดเวลาไว้บน GitHub Actions, GitLab และ Jenkins และรับรายงานที่รอคุณอยู่ก่อนการประชุมสแตนด์อัพ หากคุณเคยแก้ไขข้อผิดพลาดที่ระบบรันตอนกลางคืนสามารถตรวจพบได้ล่วงหน้าหลายชั่วโมง นี่คือเวิร์กโฟลว์ที่จะช่วยให้คุณประหยัดเวลาเหล่านั้นได้

ปุ่ม

ทำไมการทดสอบแบบต่อคอมมิตถึงยังไม่พอ

Continuous integration สอนให้เราทดสอบทุกครั้งที่มีการพุชโค้ด ซึ่งเป็นสิ่งที่ดีและคุณควรทำต่อไป แต่การทดสอบแบบต่อคอมมิตจะตอบคำถามที่แคบๆ ว่า: "การเปลี่ยนแปลงนี้ทำให้เกิดข้อผิดพลาดหรือไม่?" การทดสอบเหล่านี้รันได้เร็ว รันบ่อย และมีขอบเขตที่จำกัดเพื่อให้การทำงานของนักพัฒนาไม่ติดขัด ขอบเขตที่จำกัดนี้เองคือเหตุผลที่ทำให้การทดสอบพลาดปัญหาหลายประเภทไป

การบิลด์ตอนกลางคืนจะตอบคำถามที่กว้างกว่า: "ระบบยังคงทำงานได้ดีอยู่หรือไม่ในตอนนี้ โดยไม่คำนึงว่ามีใครไปแก้ไขมันหรือเปล่า?" ความแตกต่างนี้สำคัญเพราะระบบที่ใช้งานจริงมีส่วนประกอบที่เคลื่อนไหวอยู่เสมอซึ่งคอมมิตของคุณไม่เคยเห็น

ดังนั้น รูปแบบจึงเป็นแบบสองชั้น ไม่ใช่เลือกอย่างใดอย่างหนึ่ง การทดสอบ smoke test แบบเร็วจะคอยดูแลทุกคอมมิต ส่วนชุดทดสอบรีเกรสชันที่ลึกซึ้งกว่าจะทำงานตามกำหนดเวลา ชั้นการรันตอนกลางคืนคือที่ที่คุณจะใส่ทุกอย่างที่ช้าเกินไป กว้างขวางเกินไป หรือพึ่งพาสภาพแวดล้อมจริงมากเกินไปที่จะอยู่ในวงรอบภายใน

อะไรบ้างที่ควรอยู่ในชุดทดสอบรีเกรสชัน API ตอนกลางคืน

ก่อนที่คุณจะกำหนดเวลาใดๆ ให้ตัดสินใจว่าการรันตอนกลางคืนจะตรวจสอบอะไรบ้าง ชุดทดสอบตอนกลางคืนจะครอบคลุมกว่า smoke test ที่เป็นด่านตรวจสอบคอมมิตของคุณ และละเอียดกว่าการตรวจสอบสุขภาพอย่างรวดเร็ว ตั้งเป้าหมายให้ครอบคลุมในระดับที่จะทำให้คุณรู้สึกอับอายหากมันล้มเหลวโดยไม่มีใครรู้

ชุดทดสอบ API ตอนกลางคืนที่แข็งแกร่งจะครอบคลุมถึง:

หากคุณไม่เคยเขียนกรณีทดสอบที่มีโครงสร้างแบบนี้มาก่อน เทมเพลตและตัวอย่างกรณีทดสอบ API เป็นจุดเริ่มต้นที่ดี และ การยืนยัน API ครอบคลุมวิธีการตรวจสอบเนื้อหาการตอบกลับ สถานะ ส่วนหัว และเวลาได้อย่างแม่นยำ

ขั้นตอนที่ 1: สร้างชุดทดสอบรีเกรสชันใน Apidog

Apidog ถือว่าการทดสอบเป็นส่วนสำคัญของวงจรชีวิต API ไม่ใช่แค่ส่วนเสริม คุณออกแบบปลายทาง (endpoints) จากนั้นนำมาเชื่อมโยงกันเป็นสถานการณ์ทดสอบที่สะท้อนเวิร์กโฟลว์จริง สถานการณ์คือรายการขั้นตอนที่เรียงลำดับ โดยแต่ละขั้นตอนคือคำขอ API พร้อมกับการยืนยัน และข้อมูลจะไหลจากขั้นตอนหนึ่งไปยังอีกขั้นตอนหนึ่ง

นี่คือรูปแบบของสถานการณ์ทดสอบรีเกรสชันการชำระเงิน (checkout):

  1. POST /auth/login: ส่งข้อมูลรับรอง, ยืนยัน 200, ดึง accessToken จากการตอบกลับไปเก็บในตัวแปร
  2. POST /carts: สร้างตะกร้าสินค้าโดยใช้โทเค็น, ยืนยัน 201, ดึง cartId
  3. POST /carts/{cartId}/items: เพิ่มสินค้า, ยืนยัน 200, ยืนยันว่า total ในเนื้อหาการตอบกลับเท่ากับราคาที่คาดไว้
  4. POST /checkout: ส่งตะกร้าสินค้า, ยืนยัน 200, ยืนยันว่า order.status คือ "confirmed"
  5. GET /orders/{orderId}: อ่านคำสั่งซื้อกลับมา, ยืนยันว่าคงอยู่พร้อมกับรายการสินค้าที่ถูกต้อง

ใน Apidog คุณสร้างสิ่งนี้ได้ด้วยภาพ แต่ละขั้นตอนมีการยืนยันโดยไม่ต้องเขียนโค้ดซ้ำซ้อน: การยืนยันด้วยภาพ เช่น “สถานะการตอบกลับคือ 200” หรือ “JSONPath $.order.status เท่ากับ confirmed” สำหรับการปฏิบัติตาม schema Apidog สามารถตรวจสอบการตอบกลับกับคำจำกัดความ OpenAPI ที่บันทึกไว้ของปลายทางได้โดยอัตโนมัติ ดังนั้นคุณไม่จำเป็นต้องเขียนการตรวจสอบด้วยมือสำหรับทุกฟิลด์

กฎการออกแบบบางอย่างช่วยให้ชุดทดสอบตอนกลางคืนสามารถดูแลรักษาได้:

หากคุณมาจากเครื่องมืออื่น สิ่งนี้จะเชื่อมโยงกับแนวคิดที่คุณรู้จักอย่างชัดเจน ภาพรวมที่กว้างขึ้นของการเรียงร้อยสถานการณ์เข้าด้วยกันอยู่ใน คู่มือการจัดการการทดสอบ API (API test orchestration guide) และหากคุณไม่เคยรันการทดสอบที่มีโครงสร้างใน Apidog มาก่อน วิธีการทดสอบ API ด้วย Apidog คือจุดเริ่มต้นแบบทีละขั้นตอน ดาวน์โหลด Apidog และสร้างสถานการณ์หนึ่งขึ้นมาก่อนที่คุณจะอ่านต่อ ส่วนที่เหลือของคู่มือนี้จะถือว่าคุณมีชุดทดสอบพร้อมที่จะรันแล้ว

ขั้นตอนที่ 2: รันชุดทดสอบจากคอมมานด์ไลน์

การบิลด์ตอนกลางคืนจะทำงานโดยไม่ต้องมีคนดูแล ดังนั้นจึงต้องใช้ headless runner นั่นคือ Apidog CLI ซึ่งเป็นแพ็กเกจ npm ที่รันสถานการณ์ทดสอบที่คุณบันทึกไว้จากเทอร์มินัลใดก็ได้ โดยไม่จำเป็นต้องใช้ GUI มันถูกสร้างมาเพื่อสิ่งนี้โดยเฉพาะ: การรันอัตโนมัติภายในไปป์ไลน์ CI/CD

ติดตั้งแบบ global CLI ต้องใช้ Node.js v16 หรือใหม่กว่า

npm install -g apidog-cli

ในการรันสถานการณ์ออนไลน์ (สถานการณ์ที่อยู่ในโปรเจกต์ Apidog ของคุณ) คุณต้องมีสองสิ่ง: access token และ ID ของสถานการณ์หรือชุดทดสอบ สร้างโทเค็นใน Apidog ใต้การตั้งค่า CI/CD ซึ่งมีปุ่ม “Add access token” ปฏิบัติต่อโทเค็นนั้นเหมือนรหัสผ่าน; มันควรอยู่ในความลับ ไม่ควรอยู่ใน repository ของคุณเด็ดขาด

คำสั่งในการรันสถานการณ์ทดสอบเดียวมีลักษณะดังนี้:

apidog run \
  --access-token $APIDOG_ACCESS_TOKEN \
  -t 123456 \
  -e 789 \
  -r cli,html \
  --out-dir ./apidog-reports

อธิบายทีละแฟล็ก โดยใช้ตัวเลือก Apidog CLI จริง:

แฟล็กอื่นๆ ก็มีประโยชน์ในการรันตอนกลางคืน -n, --iteration-count <n> ทำซ้ำการรันเพื่อเผยให้เห็นความไม่เสถียร -d, --iteration-data <path> ป้อนไฟล์ CSV หรือ JSON เพื่อให้สถานการณ์เดียวทำงานกับข้อมูลหลายแถว เหมาะสำหรับการทดสอบขอบเขต --env-var "key=value" และ --global-var "key=value" ฉีดค่าในขณะรัน ซึ่งเป็นวิธีที่คุณเก็บข้อมูลรับรองออกจากสถานการณ์ที่บันทึกไว้

คุณไม่จำเป็นต้องจำสิ่งเหล่านี้ Apidog จะสร้างคำสั่งที่ถูกต้องให้คุณ: เปิดแผง CI/CD ในไคลเอนต์ เลือกสถานการณ์หรือชุดทดสอบของคุณ และคัดลอกบรรทัด apidog run ที่พร้อมใช้งานลงในไฟล์คอนฟิกไปป์ไลน์ของคุณได้ทันที ลองรันในเครื่องของคุณก่อนเพื่อยืนยันว่ามันผ่าน (เป็นสีเขียว) ก่อนที่คุณจะกำหนดเวลา

ขั้นตอนที่ 3: กำหนดเวลาให้เป็น nightly build

การบิลด์ตอนกลางคืนคือการใช้คำสั่งนี้ตามเวลาที่กำหนด ทุกแพลตฟอร์ม CI รองรับงานที่กำหนดเวลาไว้ผ่านไวยากรณ์ cron รูปแบบจะเหมือนกันทั้งหมด: ตัวกระตุ้นรายวัน, access token จากความลับ, การรัน CLI, และรายงานที่เก็บถาวรเป็น artifact

GitHub Actions

GitHub Actions รองรับทริกเกอร์ schedule ด้วย cron มาตรฐาน เวิร์กโฟลว์นี้จะทำงานเวลา 02:00 UTC ทุกวัน และยังเปิดใช้งานปุ่มสั่งงานด้วยตนเองผ่าน workflow_dispatch

name: Nightly API Regression

on:
  schedule:
    - cron: '0 2 * * *'   # 02:00 UTC daily
  workflow_dispatch:        # allow manual runs

jobs:
  regression:
    runs-on: ubuntu-latest
    steps:
      - name: Set up Node
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install Apidog CLI
        run: npm install -g apidog-cli

      - name: Run nightly regression suite
        run: |
          apidog run \
            --access-token $APIDOG_ACCESS_TOKEN \
            --test-suite ${{ vars.APIDOG_SUITE_ID }} \
            -e ${{ vars.APIDOG_ENV_ID }} \
            -r cli,html \
            --out-dir ./apidog-reports
        env:
          APIDOG_ACCESS_TOKEN: ${{ secrets.APIDOG_ACCESS_TOKEN }}

      - name: Upload HTML report
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: apidog-nightly-report
          path: ./apidog-reports

if: always() ในขั้นตอนการอัปโหลดมีความสำคัญ: คุณต้องการให้รายงานถูกเก็บถาวรแม้ว่าการรันจะล้มเหลว เพราะเมื่อเกิดความล้มเหลวนั่นคือเวลาที่คุณต้องอ่านมันพอดี โปรดทราบว่างานที่กำหนดเวลาของ GitHub จะรันในเวลา UTC และอาจล่าช้าได้ในช่วงที่มีการโหลดสูงสุด ดังนั้นอย่ากำหนดเวลางานที่ต้องทำงานในวินาทีที่แน่นอน

image-265.png

GitLab CI/CD

GitLab กำหนดเวลาไปป์ไลน์ผ่าน UI (CI/CD > Schedules) แทนที่จะอยู่ใน YAML จากนั้นงานของคุณจะอิงตามเงื่อนไขกฎ (rules condition) เพื่อให้ทำงานเฉพาะตามกำหนดเวลาเท่านั้น ไม่ใช่ทุกครั้งที่มีการพุช

nightly-regression:
  image: node:20
  rules:
    - if: '$CI_PIPELINE_SOURCE == "schedule"'
  before_script:
    - npm install -g apidog-cli
  script:
    - apidog run
        --access-token "$APIDOG_ACCESS_TOKEN"
        --test-suite "$APIDOG_SUITE_ID"
        -e "$APIDOG_ENV_ID"
        -r cli,html
        --out-dir ./apidog-reports
  artifacts:
    when: always
    paths:
      - apidog-reports/
    expire_in: 30 days

ตั้งค่า APIDOG_ACCESS_TOKEN เป็นตัวแปร CI/CD แบบที่ถูกซ่อนและป้องกันไว้ จากนั้นสร้างกำหนดเวลาไปป์ไลน์ด้วยนิพจน์ cron เช่น 0 2 * * * บล็อก rules จะป้องกันไม่ให้งานนี้ทำงานในการคอมมิตปกติ

image-265.png

Jenkins

ใน Jenkins, pipeline ที่มีทริกเกอร์ cron จะทำงานเดียวกัน จัดเก็บโทเค็นเป็นข้อมูลรับรอง (credential) และดึงมาใช้งานด้วย withCredentials

pipeline {
    agent any
    triggers {
        cron('H 2 * * *')   // around 02:00, H spreads load
    }
    stages {
        stage('Install CLI') {
            steps { sh 'npm install -g apidog-cli' }
        }
        stage('Nightly regression') {
            steps {
                withCredentials([string(credentialsId: 'apidog-token',
                                        variable: 'APIDOG_ACCESS_TOKEN')]) {
                    sh '''
                        apidog run \
                          --access-token $APIDOG_ACCESS_TOKEN \
                          --test-suite $APIDOG_SUITE_ID \
                          -e $APIDOG_ENV_ID \
                          -r cli,html \
                          --out-dir ./apidog-reports
                    '''
                }
            }
        }
    }
    post {
        always {
            archiveArtifacts artifacts: 'apidog-reports/**', allowEmptyArchive: true
        }
    }
}

ตัวอักษร H ใน H 2 * * * เป็นคุณสมบัติที่ดีของ Jenkins: มันจะเลือกนาทีที่คงที่ภายในชั่วโมง เพื่อไม่ให้งานตอนกลางคืนทั้งหมดของคุณทำงานพร้อมกันที่เวลา 02:00 น. เป๊ะๆ

image-266.png

ฟิลด์ cron นั้นเหมือนกันในทั้งสามแพลตฟอร์ม 0 2 * * * หมายถึงนาทีที่ 0, ชั่วโมงที่ 2, ทุกวัน ต้องการให้รันสองครั้งต่อคืนเพื่อตรวจจับปัญหาเร็วขึ้นหรือไม่? ใช้ 0 2,14 * * * ต้องการเฉพาะวันธรรมดา? ใช้ 0 2 * * 1-5 เลือกเวลาที่สภาพแวดล้อม staging ของคุณเงียบสงบและแซนด์บ็อกซ์ภายนอกกำลังทำงาน

ขั้นตอนที่ 4: ทำให้ความล้มเหลวเป็นสิ่งที่ละเลยไม่ได้

การรันตอนกลางคืนที่ล้มเหลวและบันทึกอยู่ในล็อกที่ไม่มีใครอ่านนั้นแย่กว่าการไม่มีการรันตอนกลางคืนเสียอีก เพราะมันสร้างความมั่นใจที่ผิดพลาด จุดประสงค์ทั้งหมดคือการแจ้งเตือน เชื่อมโยงผลลัพธ์ไปยังที่ที่ทีมของคุณดูอยู่แล้ว

รหัสออก (exit code) ของ CLI คือตัวเชื่อมโยงของคุณ apidog run จะออกจากระบบด้วยรหัสที่ไม่ใช่ศูนย์เมื่อสถานการณ์ล้มเหลว ดังนั้น CI จะเปลี่ยนสถานะงานเป็นสีแดงโดยอัตโนมัติ จากจุดนั้น:

กฎหนึ่งข้อที่ทำให้การบิลด์ตอนกลางคืนน่าเชื่อถือคือ: ให้ถือว่าความล้มเหลวเป็นบั๊กจริงจนกว่าจะพิสูจน์ได้เป็นอย่างอื่น วิธีที่เร็วที่สุดในการทำให้ชุดทดสอบตอนกลางคืนไร้ประโยชน์คือการปล่อยให้การทดสอบที่ไม่เสถียรทำให้ทุกคนละเลยสัญญาณสีแดง หากสถานการณ์ล้มเหลวเป็นครั้งคราว ให้แก้ไขการทดสอบหรือสภาพแวดล้อม; อย่าเพิกเฉย การรันด้วย -n เพื่อทำซ้ำสถานการณ์ หรือทำให้ข้อมูลที่สถานการณ์ของคุณพึ่งพามีความเสถียร มักจะเผยให้เห็นถึงความไม่เสถียรที่แท้จริง

ทำไม Apidog จึงเหมาะกับรูปแบบ nightly

คุณสามารถประกอบไปป์ไลน์ API แบบ nightly จากส่วนต่างๆ ได้: เครื่องมือหนึ่งสำหรับการออกแบบ, อีกเครื่องมือหนึ่งสำหรับการเขียนการทดสอบ, เครื่องมือที่สามสำหรับการรันแบบ headless และตัวตรวจสอบ schema ที่ต่อเพิ่มเข้าไป หลายทีมทำงานในลักษณะนั้น และมันก็ใช้ได้ผลจนกว่าส่วนต่างๆ จะเริ่มคลาดเคลื่อนจากกัน ความยุ่งยากจะเกิดขึ้นตอนตี 2 เมื่อการทดสอบที่รันไม่ตรงกับ API ที่คุณปล่อยออกไปใช้งานจริงแล้ว

image-268.png
image-267.png

Apidog รวบรวมสิ่งเหล่านั้นเข้าไว้ในเวิร์กโฟลว์เดียว ปลายทางที่คุณออกแบบ, สถานการณ์ที่คุณทดสอบ, schema ที่คุณใช้ตรวจสอบ, และคำสั่งที่คุณกำหนดเวลา ล้วนอ้างอิงจากแหล่งความจริงเดียวกัน เมื่อคุณเปลี่ยนปลายทาง สถานการณ์และการตรวจสอบ schema ก็จะเปลี่ยนตามไปด้วย ไม่มีการส่งออก ไม่มีคอลเลกชันที่เงียบหายไป ไม่มีสำเนาสัญญาฉบับที่สองที่ต้องคอยซิงค์ หากคุณเคยประสบปัญหาจาก คอลเลกชัน Postman ที่ไม่ใช่แหล่งความจริงที่แท้จริง การออกแบบแหล่งเดียวนี้คือความแตกต่าง

CLI เป็นเอนจิ้นเดียวกับ GUI ดังนั้นสถานการณ์ที่คุณดีบักด้วยภาพที่โต๊ะทำงานของคุณ จะทำงานเหมือนกันใน CI ตอนตี 2 คุณสร้างและแก้ไขการทดสอบด้วยการมองเห็นที่สมบูรณ์ จากนั้นรันแบบ headless ด้วยคำสั่งเดียว ความสมมาตรนี้เองที่ทำให้การบิลด์ตอนกลางคืนเป็นสิ่งที่คุณไว้วางใจได้ แทนที่จะต้องคอยดูแล

คำถามที่พบบ่อย

Nightly build กับ Continuous integration แตกต่างกันอย่างไร?

Continuous integration (CI) จะรันการทดสอบทุกครั้งที่มีการเปลี่ยนแปลงโค้ดเพื่อตรวจจับการถดถอยในคอมมิตใหม่ ส่วน nightly build จะรันตามกำหนดเวลาที่แน่นอน ซึ่งโดยปกติแล้วจะทำในช่วงกลางคืน โดยไม่คำนึงว่ามีการเปลี่ยนแปลงใดๆ เกิดขึ้นหรือไม่ CI จะจับสิ่งที่ทีมของคุณทำผิดพลาด ส่วน nightly run จะจับสิ่งที่โลกภายนอกทำให้เกิดปัญหา: โทเค็นที่หมดอายุ, การพึ่งพาที่เปลี่ยนแปลงไป, การเปลี่ยนแปลงข้อมูล, และประสิทธิภาพที่ค่อยๆ ลดลง ไปป์ไลน์ที่สมบูรณ์จะรันทั้งสองอย่าง การทดสอบ smoke test แบบเร็วจะคอยตรวจสอบแต่ละคอมมิต และชุดทดสอบรีเกรสชันที่กว้างขึ้นจะรันทุกคืน

Nightly build ควรทำงานเมื่อไหร่?

เลือกช่วงเวลาที่สภาพแวดล้อมการทดสอบของคุณว่าง และบริการภายนอกที่คุณพึ่งพาสามารถเข้าถึงได้ สำหรับหลายทีมคือช่วงตี 1 ถึงตี 4 ตามเวลาท้องถิ่น หาก API ของคุณเรียกใช้แซนด์บ็อกซ์ของบุคคลที่สาม ให้ยืนยันว่าบริการเหล่านั้นทำงานในช่วงเวลานั้น ผู้ให้บริการบางรายอาจจำกัดการใช้งานหรือหยุดชั่วคราวในช่วงกลางคืน หลีกเลี่ยงการกำหนดเวลาตรงชั่วโมงเป๊ะๆ บน CI แบบแชร์ ที่มีงานหลายพันงานทำงานพร้อมกัน การเลื่อนเวลาออกไปสองสามนาที (หรือใช้ไวยากรณ์ H ของ Jenkins) จะช่วยกระจายโหลดได้

ฉันสามารถรัน nightly suite กับ production ได้หรือไม่?

รันการตรวจสอบแบบอ่านอย่างเดียว (read-only checks) กับ production ได้อย่างปลอดภัย สำหรับสิ่งที่เขียนข้อมูล ให้ชี้ nightly suite ไปยังสภาพแวดล้อม staging หรือ pre-production ที่มีข้อมูลจริงโดยเฉพาะ หรือใช้ idempotent operations และขั้นตอนการล้างข้อมูล รูปแบบทั่วไปคือการรันรีเกรสชันแบบอ่าน-เขียนเต็มรูปแบบกับ staging ควบคู่ไปกับการรัน smoke test แบบอ่านอย่างเดียวขนาดเล็กกับ production เพื่อยืนยันว่าระบบจริงสามารถเข้าถึงได้และตอบสนองอย่างถูกต้อง

สิ่งนี้แตกต่างจากการมอนิเตอร์อย่างไร?

การมอนิเตอร์สถานะการทำงาน (uptime monitoring) จะตอบคำถามว่า “API ทำงานอยู่หรือไม่?” ชุดทดสอบรีเกรสชันตอนกลางคืนจะตอบคำถามว่า “API ทำงานถูกต้องหรือไม่?” การมอนิเตอร์จะส่ง ping ไปยังปลายทางและตรวจสอบว่าได้รหัส 200 การรันรีเกรสชันจะทดสอบเวิร์กโฟลว์เต็มรูปแบบ ตรวจสอบเนื้อหาการตอบกลับกับ schema ของคุณ ตรวจสอบขอบเขตการยืนยันตัวตน และยืนยันกฎทางธุรกิจ ทั้งสองอย่างนี้เป็นส่วนเสริมกัน; การมอนิเตอร์เป็นการทำงานต่อเนื่องและตื้นเขิน ส่วนการทดสอบตอนกลางคืนเป็นการทำงานตามช่วงเวลาและลึกซึ้ง

ฉันจำเป็นต้องเขียนโค้ดเพื่อกำหนดเวลาการทดสอบ API หรือไม่?

ไม่จำเป็น คุณสร้างสถานการณ์ด้วยภาพใน Apidog โดยไม่ต้องเขียนสคริปต์ จากนั้นคัดลอกคำสั่ง apidog run ที่สร้างขึ้นจากแผง CI/CD "โค้ด" เดียวที่คุณต้องมีคือไม่กี่บรรทัดใน YAML หรือไฟล์คอนฟิกไปป์ไลน์ที่บอกแพลตฟอร์ม CI ของคุณว่าเมื่อไหร่ควรรัน ซึ่งก็คือเทมเพลตด้านบน หากคุณต้องการดูว่า command-line runners เปรียบเทียบกันอย่างไรโดยทั่วไป Postman CLI เทียบกับ Newman และ การรันคอลเลกชันใน CI โดยไม่มี Newman ครอบคลุมทางเลือกอื่นๆ

ตั้งค่า nightly run ครั้งแรกของคุณ

เริ่มจากเล็กๆ เลือกเวิร์กโฟลว์ที่สำคัญที่สุดเพียงหนึ่งอย่าง เช่น ขั้นตอนการเข้าสู่ระบบ หรือเส้นทางการชำระเงินของคุณ แล้วสร้างเป็นสถานการณ์ Apidog เพียงหนึ่งเดียวพร้อมกับการยืนยันที่แท้จริง รันด้วย CLI ในเครื่องของคุณจนกว่าจะผ่าน (เป็นสีเขียว) คัดลอกคำสั่งที่สร้างขึ้นมาใส่ในงานที่กำหนดเวลาโดยใช้หนึ่งในเทมเพลตข้างต้น เชื่อมโยงความล้มเหลวไปยังแชททีมของคุณ นั่นคือ nightly build ที่ใช้งานได้ภายในบ่ายวันเดียว

จากนั้น ขยายชุดทดสอบ เพิ่มสถานการณ์สำหรับการเดินทางที่สำคัญรองลงมา เปิดใช้งานการตรวจสอบ schema ทั่วทั้งระบบ และกำหนดงบประมาณประสิทธิภาพสำหรับปลายทางที่ใช้งานบ่อยของคุณ ภายในหนึ่งสัปดาห์ คุณก็จะมีเครือข่ายรีเกรสชันที่สามารถตรวจจับความล้มเหลวที่การทดสอบต่อคอมมิตของคุณไม่เคยถูกออกแบบมาให้เห็น และคุณจะได้ยินเกี่ยวกับสิ่งเหล่านี้จากข้อความแชทตอนตี 2 แทนที่จะเป็นจากลูกค้าตอน 9 โมงเช้า

ปุ่ม

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API