0Pricing
AI Agents · Pelajaran

Pengujian Integrasi untuk Pipeline Agen

Pengujian dari awal hingga akhir terhadap layanan nyata dalam lingkungan pengujian terisolasi.

Pengujian Integrasi untuk Pipeline Agen adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Agents, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Agents mencakup 4 pelajaran total.

Apa Itu Pengujian Integrasi untuk Agen?

Pengujian unit memeriksa komponen individual secara terpisah. Pengujian integrasi memeriksa apakah beberapa komponen bekerja sama dengan benar dalam lingkungan nyata atau yang mendekati nyata.

Untuk agen, ini berarti menjalankan seluruh alur kerja — panggilan LLM, eksekusi alat, dan penyimpanan data — terhadap layanan nyata atau layanan dalam lingkungan terisolasi.

Struktur Pengujian Ujung ke Ujung

Pengujian agen ujung ke ujung mengirimkan kueri nyata melalui seluruh alur kerja dan memvalidasi hasil akhirnya. Jalankan pengujian ini dalam lingkungan terisolasi — jangan pernah mengarahkannya ke basis data produksi atau data pengguna aktif.

import pytest

# Mark as integration test — skipped in fast unit test runs
@pytest.mark.integration
def test_research_agent_full_pipeline():
    from myagent import ResearchAgent

    agent = ResearchAgent(
        openai_api_key='YOUR_TEST_KEY',
        search_api_key='YOUR_TEST_KEY'
    )

    result = agent.run('What is the population of Tokyo?')

    # Structural assertions — not exact string matching
    assert isinstance(result, dict)
    assert result['status'] == 'completed'
    assert 'tokyo' in result['answer'].lower() or 'japan' in result['answer'].lower()
    assert len(result['sources']) >= 1

Isolasi Data Pengujian

Pengujian integrasi tidak boleh mengotori data bersama. Gunakan basis data pengujian khusus, ruang nama yang terisolasi, atau data sementara yang dibersihkan setelah pengujian. Jangan pernah menulis data pengujian ke tabel produksi.

import os
import pytest

# Use a separate test database URL
@pytest.fixture(scope='session')
def test_db():
    test_db_url = os.environ.get(
        'TEST_DATABASE_URL',
        'postgresql://localhost/myagent_test'  # separate test DB
    )
    # Set up test schema
    from myagent.database import create_tables
    create_tables(test_db_url)
    yield test_db_url
    # Tear down after all tests in the session
    from myagent.database import drop_tables
    drop_tables(test_db_url)

Pembersihan Setelah Setiap Pengujian

Setiap pengujian integrasi harus membersihkan data apa pun yang dibuatnya. Gunakan pola fixture yield pytest: lakukan penyiapan sebelum yield, lalu pembersihan setelahnya. Dengan demikian, pengujian tetap independen dan dapat dijalankan dalam urutan apa pun.

import pytest

@pytest.fixture
def clean_agent_memory(test_db):
    # No setup needed — DB starts empty
    yield
    # Cleanup: delete any records created during this test
    from myagent.database import clear_conversation_history
    clear_conversation_history(test_db)

@pytest.mark.integration
def test_agent_stores_conversation(clean_agent_memory, test_db):
    from myagent import Agent
    agent = Agent(db_url=test_db)

    agent.run('Remember that my name is Alex')
    history = agent.get_history()

    assert len(history) > 0
    assert any('Alex' in str(msg) for msg in history)
    # clean_agent_memory fixture deletes these after the test

Layanan Terisolasi: Kunci API Pengujian

Gunakan kunci API pengujian khusus dengan izin dan kuota terbatas untuk pengujian integrasi. Jangan pernah menggunakan kunci produksi dalam CI. Simpan kunci pengujian sebagai variabel lingkungan CI, bukan di dalam kode.

import os
import pytest

# Skip integration tests if test keys are not configured
def requires_integration_keys():
    return pytest.mark.skipif(
        not os.environ.get('OPENAI_TEST_KEY'),
        reason='Integration test keys not configured'
    )

@requires_integration_keys()
@pytest.mark.integration
def test_live_weather_tool():
    from myagent.tools import get_weather
    result = get_weather(city='London', unit='celsius')

    assert result['success'] is True
    assert 'temperature' in result
    assert isinstance(result['temperature'], (int, float))

Menggunakan Docker untuk Basis Data Terisolasi

Untuk pengujian integrasi yang memerlukan basis data nyata, jalankan kontainer Docker selama sesi pengujian. Dengan demikian, Anda selalu mendapatkan basis data yang bersih dan terisolasi serta menghindari konflik dengan basis data pengembangan.

# conftest.py — docker-based test database
import subprocess
import pytest

@pytest.fixture(scope='session')
def docker_postgres():
    container_id = subprocess.check_output([
        'docker', 'run', '-d',
        '-e', 'POSTGRES_PASSWORD=test',
        '-e', 'POSTGRES_DB=agent_test',
        '-p', '5434:5432',  # use non-standard port to avoid conflicts
        'postgres:15'
    ]).decode().strip()

    import time
    time.sleep(2)  # wait for Postgres to start

    yield 'postgresql://postgres:test@localhost:5434/agent_test'

    subprocess.run(['docker', 'stop', container_id])
    subprocess.run(['docker', 'rm', container_id])

Konfigurasi Pengujian Khusus Lingkungan

Pengujian integrasi memerlukan konfigurasi yang berbeda untuk lingkungan lokal, CI, dan staging. Gunakan variabel lingkungan serta pembantu konfigurasi untuk memilih pengaturan yang tepat secara otomatis.

import os

def get_test_config() -> dict:
    env = os.environ.get('TEST_ENV', 'local')

    configs = {
        'local': {
            'db_url': 'postgresql://localhost/agent_test',
            'openai_key': os.environ.get('OPENAI_TEST_KEY', ''),
            'use_real_llm': False  # use mocks locally
        },
        'ci': {
            'db_url': os.environ.get('CI_DATABASE_URL', ''),
            'openai_key': os.environ.get('CI_OPENAI_KEY', ''),
            'use_real_llm': True  # use real LLM in CI integration tests
        },
        'staging': {
            'db_url': os.environ.get('STAGING_DATABASE_URL', ''),
            'openai_key': os.environ.get('STAGING_OPENAI_KEY', ''),
            'use_real_llm': True
        }
    }
    return configs[env]

config = get_test_config()

print(f"TEST_ENV not set -> using '{os.environ.get('TEST_ENV', 'local')}' config")
print(f"DB URL       : {config['db_url']}")
print(f"Use real LLM : {config['use_real_llm']}")

Penanda pytest untuk Memilih Pengujian

Gunakan penanda pytest khusus untuk mengategorikan pengujian dan hanya menjalankan subset yang relevan. Konfigurasikan penanda dalam pytest.ini dan gunakan -m pada baris perintah untuk memilihnya.

# pytest.ini
# [pytest]
# markers =
#     unit: Fast unit tests with mocked dependencies
#     integration: Slower tests with real or sandboxed services
#     expensive: Tests that make real LLM calls and cost money

# Run only unit tests (fast CI check):
# pytest -m unit

# Run only integration tests:
# pytest -m integration

# Run everything except expensive tests:
# pytest -m 'not expensive'

# In test files:
import pytest

@pytest.mark.unit
def test_tool_format():
    pass  # fast, no external calls

@pytest.mark.integration
@pytest.mark.expensive
def test_with_real_llm():
    pass  # slow, costs tokens

Menjalankan Pengujian Integrasi dalam CI

Konfigurasikan alur kerja CI Anda (GitHub Actions, GitLab CI) untuk menjalankan pengujian unit pada setiap push dan pengujian integrasi sesuai jadwal atau sebelum rilis. Cara ini menyeimbangkan kecepatan dan cakupan.

# .github/workflows/test.yml (abbreviated)
# name: Tests
# on:
#   push:
#     branches: [main, develop]
#   schedule:
#     - cron: '0 2 * * *'  # nightly integration tests
#
# jobs:
#   unit-tests:
#     runs-on: ubuntu-latest
#     steps:
#       - uses: actions/checkout@v3
#       - run: pip install -r requirements.txt
#       - run: pytest -m unit --tb=short
#
#   integration-tests:
#     if: github.event_name == 'schedule'
#     env:
#       CI_OPENAI_KEY: ${{ secrets.CI_OPENAI_KEY }}
#       CI_DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
#     steps:
#       - run: pytest -m integration --tb=long

print('Unit tests on every push, integration tests nightly')

Mengukur Cakupan Pengujian untuk Agen

Gunakan pytest-cov untuk mengukur baris kode agen Anda yang tercakup oleh pengujian. Usahakan cakupan yang tinggi pada fungsi alat dan logika orkestrasi agen, meskipun panggilan LLM dibuat tiruannya.

# Install: pip install pytest-cov

# Run tests with coverage report:
# pytest --cov=myagent --cov-report=html -m unit

# This generates an HTML report showing which lines are untested
# Uncovered lines in the agent loop are high-risk areas

# Example coverage config in pyproject.toml:
# [tool.coverage.run]
# omit = ["tests/*", "scripts/*"]
#
# [tool.coverage.report]
# fail_under = 80  # fail if coverage drops below 80%

print('Coverage reports highlight untested code paths in your agent')

Ringkasan Praktik Terbaik Pengujian Integrasi

Aturan utama untuk pengujian integrasi agen yang andal:

  • Selalu gunakan basis data pengujian terpisah — jangan pernah gunakan basis data produksi
  • Bersihkan data pengujian setelah setiap pengujian dengan fixture yield
  • Gunakan kunci API pengujian khusus dengan kuota terbatas
  • Gunakan penanda pytest untuk memisahkan pengujian unit yang cepat dari pengujian integrasi yang lambat
  • Jalankan pengujian unit pada setiap push dan pengujian integrasi sesuai jadwal
  • Gunakan Docker untuk lingkungan basis data yang bersih dan dapat dibuang

Uji Pemahaman: Pengujian Integrasi

Uji pemahaman Anda tentang pengujian integrasi untuk alur kerja agen.

Ringkasan: Pengujian Integrasi untuk Alur Kerja Agen

Sekarang Anda memiliki pengetahuan untuk membangun rangkaian pengujian integrasi yang lengkap dan andal:

  • Gunakan @pytest.mark.integration untuk memisahkan pengujian lambat dari pengujian unit yang cepat
  • Isolasi data pengujian dengan basis data khusus dan fixture pembersihan
  • Gunakan Docker atau layanan dalam lingkungan terisolasi untuk menyediakan lingkungan yang bersih
  • Konfigurasikan kunci API khusus pengujian melalui variabel lingkungan
  • Jalankan pengujian unit pada setiap commit dan pengujian integrasi setiap malam dalam CI
  • Ukur cakupan dengan pytest-cov untuk menemukan jalur yang belum diuji

Piramida pengujian yang tertata baik menjaga keandalan agen seiring perkembangannya.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pengujian Integrasi untuk Pipeline Agen” gratis?

Ya — teks lengkap “Pengujian Integrasi untuk Pipeline Agen” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Agents, upgrade ke CoddyKit PRO. Kursus AI Agents mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pengujian Integrasi untuk Pipeline Agen”?

Pengujian dari awal hingga akhir terhadap layanan nyata dalam lingkungan pengujian terisolasi. Kamu berlatih AI Agents dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai AI Agents?

Tidak diperlukan pengalaman sebelumnya. AI Agents di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Pengujian Integrasi untuk Pipeline Agen” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Agents ini?

Ya. Setiap pelajaran AI Agents menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa Pengujian Agen Berbeda
  2. Meniru Panggilan LLM dalam Pengujian
  3. Pengujian Agen Berbasis Assertion
  4. Pengujian Integrasi untuk Pipeline Agen
← Kembali ke AI Agents