Tutorial Pytest untuk Pemula: Fixture, Parametrize dan Contoh Nyata

  1. Beranda
  2. Blog
  3. Uji Otomatisasi

Uji Otomatisasi

Tutorial Pytest untuk Pemula: Fixtures, Parametrize dan Contoh Nyata

Pytest memungkinkan Anda menulis tes Python dengan fungsi biasa dan pernyataan tegas. Bangun rangkaian pengujian kecil langkah demi langkah, baca keluaran kegagalan nyata, dan pelajari fitur yang akan Anda gunakan setiap hari.

10 menit baca
Tutorial Pytest untuk pemula: perlengkapan, parameterisasi, dan contoh nyata

Poin penting

  • Pytest menemukan fungsi bernama test_* dan memeriksanya dengan pernyataan assert biasa.
  • Perlengkapan menyediakan pengaturan dan pembersihan yang dapat digunakan kembali, diminta hanya dengan menamainya sebagai argumen.
  • @pytest.mark.parametrize menjalankan satu pengujian dengan banyak masukan.
  • Letakkan perlengkapan bersama di conftest.py, dan Anda tidak perlu mengimpornya.

Jika Anda menghindari menulis tes karena terasa seperti sebuah tugas, tutorial pytest ini akan mengubah pikiran Anda. Pytest menghapus sebagian besar upacara: tidak ada kelas untuk diwarisi dan tidak ada metode pernyataan khusus yang perlu diingat. Sebuah tes bisa hanya dua baris.

Kami akan membuat keranjang belanja kecil dan mengujinya langkah demi langkah. Kami menjalankan semuanya di Python 3.13 dengan pytest 9.2, dan keluaran yang ditampilkan adalah nyata, meskipun kami memangkas jalur file dan detail waktu yang akan berbeda di mesin Anda.

Mengapa uji coba?

Python disertakan dengan unittest, yang berfungsi dengan baik, tetapi pytest biasanya merupakan pilihan yang lebih tepat. Berikut adalah cek yang sama di masing-masing:

Tugas paling unit uji coba
Periksa kesetaraan self.assertEqual(a, b) menegaskan a == b
Periksa pengecualian self.assertRaises(...) pytest.raises(...)
Struktur pengujian Kelas yang mewarisi dari TestCase Fungsi yang sederhana
Pengaturan dan pembersihan metode setUp dan tearDown. Perlengkapan yang dapat digunakan kembali
Banyak masukan subTest putaran parameterisasi

Pytest juga dapat menjalankan pengujian unittest yang ada, sehingga Anda dapat beralih secara bertahap. Ia juga memiliki ekosistem plugin yang besar, termasuk pytest-cov untuk cakupan dan pytest-xdist untuk pengoperasian paralel.

Instal pytest

Buat lingkungan virtual terlebih dahulu, seperti yang dijelaskan dalam tutorial lingkungan virtual Python kami, lalu instal:

pip install pytest
pytest --version

# pytest 9.2.0

Buat folder proyek yang berisi dua file, cart.py dan test_cart.py. Pytest menemukan pengujian secara otomatis dengan mengikuti aturan penamaan: file bernama test_*.py atau *_test.py, fungsi yang dimulai dengan test, dan kelas yang dimulai dengan Test. Jika tes tidak diambil, ketidakcocokan penamaan adalah hal pertama yang harus diperiksa.

Kode untuk diuji

# cart.py
class Cart:
    def __init__(self):
        self.items = []

    def add(self, name, price, qty=1):
        if qty < 1:
            raise ValueError("qty must be at least 1")
        self.items.append((name, price, qty))

    def total(self, discount=0):
        subtotal = sum(price * qty for _, price, qty in self.items)
        return round(subtotal * (1 - discount / 100), 2)

Tes pertamamu

# test_cart.py
from cart import Cart

def test_empty_cart_is_free():
    assert Cart().total() == 0

Itu adalah ujian yang lengkap. Jalankan pytest dari folder proyek, dan ini melaporkan satu tes yang lulus. Jika Anda mendapatkan kesalahan impor, jalankan sebagai python -m pytest, yang menambahkan folder saat ini ke jalur impor.

Kegagalan membaca

Di sinilah pytest benar-benar bersinar. Berikut adalah tes dengan nilai yang diharapkan salah:

def test_wrong_total():
    c = Cart()
    c.add("Keyboard", 1500)
    assert c.total() == 1400

Dan inilah yang tercetak saat kami menjalankannya:

    def test_wrong_total():
        c = Cart()
        c.add("Keyboard", 1500)
>       assert c.total() == 1400
E       assert 1500.0 == 1400
E        +  where 1500.0 = total()

FAILED fail_example.py::test_wrong_total - assert 1500.0 == 1400
============================== 1 failed in 0.12s ==============================

Tanda > menandai garis gagal, dan garis E menunjukkan nilai sebenarnya. Anda tidak perlu menambahkan pesan khusus, karena pytest menulis ulang pernyataan assert sehingga mereka dapat melaporkan apa yang mereka bandingkan. Hal yang sama berlaku untuk daftar dan kamus, menunjukkan item mana yang berbeda.

Pengecualian pengujian

Penanganan kesalahan juga merupakan perilaku, dan perlu diuji. pytest.raises lolos hanya jika blok tersebut memunculkan pengecualian yang diharapkan:

import pytest

def test_rejects_zero_qty():
    with pytest.raises(ValueError, match="at least 1"):
        Cart().add("Pen", 10, qty=0)

Argumen opsional match memeriksa pesan menggunakan ekspresi reguler, sehingga ValueError yang berbeda tidak akan lewat begitu saja. Untuk mempelajari cara memunculkan dan menangani kesalahan seperti ini, baca panduan kami tentang penanganan pengecualian Python.

Perlengkapan: pengaturan yang dapat digunakan kembali

Kebanyakan tes memerlukan sesuatu yang dipersiapkan terlebih dahulu. perlengkapan adalah fungsi yang menyediakannya. Hiasi dengan @pytest.fixture, dan tes apa pun yang menamainya sebagai argumen akan menerima hasilnya:

@pytest.fixture
def cart():
    c = Cart()
    c.add("Keyboard", 1500)
    c.add("Mouse", 500, qty=2)
    return c

def test_total(cart):
    assert cart.total() == 2500

Setiap pengujian mendapat keranjang baru secara default, sehingga pengujian tidak dapat memengaruhi satu sama lain. Pytest mencocokkan nama argumen dengan nama perlengkapan, dan Anda tidak pernah memanggil perlengkapan itu sendiri. @pytest.fixture adalah dekorator, yang kami jelaskan di penjelasan dekorator Python.

Pembersihan dengan hasil

Gunakan yield daripada return ketika Anda perlu membersihkan setelahnya. Kode setelah yield berjalan ketika pengujian selesai, meskipun gagal:

@pytest.fixture
def temp_db():
    print("\nopen db")
    yield {"users": []}
    print("close db")

def test_db(temp_db):
    assert temp_db["users"] == []

Berjalan dengan -s untuk menampilkan hasil cetakan yang mengonfirmasi bahwa pesanan telah dibuka, diuji, lalu ditutup.

Cakupan perlengkapan dan conftest.py

Secara default, perlengkapan berjalan satu kali per pengujian. Untuk pengaturan yang mahal, seperti database atau browser, ubah masa pakainya dengan scope:

Ruang lingkup Dibuat sekali per
function (standar) Tes
kelas Kelas ujian
modul Mengajukan
paket Paket
sesi Seluruh uji coba dijalankan

Masukkan perlengkapan yang digunakan oleh beberapa file ke dalam file bernama conftest.py. Pytest memuatnya secara otomatis, sehingga pengujian dapat menggunakan perlengkapannya tanpa impor. Namun berhati-hatilah dengan cakupan bersama, karena perubahan yang dilakukan pada satu pengujian dapat bocor ke pengujian berikutnya.

Parameterisasi: satu pengujian, banyak masukan

Daripada menyalin pengujian untuk setiap nilai, buatlah daftar kasusnya:

@pytest.mark.parametrize("discount, expected", [
    (0, 2500),
    (10, 2250),
    (100, 0),
])
def test_discount(cart, discount, expected):
    assert cart.total(discount) == expected

Setiap baris menjadi pengujiannya sendiri, dan Anda dapat melihatnya dalam keluaran verbose dari proses keseluruhan file kami:

test_cart.py::test_total PASSED                        [ 16%]
test_cart.py::test_discount[0-2500] PASSED             [ 33%]
test_cart.py::test_discount[10-2250] PASSED            [ 50%]
test_cart.py::test_discount[100-0] PASSED              [ 66%]
test_cart.py::test_rejects_zero_qty PASSED             [ 83%]
test_cart.py::test_empty_cart_is_free PASSED           [100%]

============================== 6 passed in 0.05s ==============================

Jika satu baris gagal, baris lainnya tetap berjalan, dan namanya memberi tahu Anda nilai mana yang menyebabkan masalah. Perhatikan bahwa kami menggabungkan parameterisasi dengan perlengkapan cart. Untuk memilih nilai yang kemungkinan besar menemukan bug, gunakan analisis nilai batas.

Kiat: Jika parameter Anda panjang atau tidak jelas, teruskan ids=["none", "ten", "full"] agar setiap kasus diberi nama yang mudah dibaca dalam laporan.

Perlengkapan bawaan yang berguna

Pytest mencakup beberapa perlengkapan siap pakai. Keduanya sangat berguna, dan keduanya lolos dalam proses kami:

def test_write_report(tmp_path):
    report = tmp_path / "report.txt"
    report.write_text("passed")
    assert report.read_text() == "passed"

def read_mode():
    return os.environ.get("APP_MODE", "dev")

def test_mode(monkeypatch):
    monkeypatch.setenv("APP_MODE", "staging")
    assert read_mode() == "staging"

tmp_path memberikan setiap pengujian folder sementara yang unik, sehingga pengujian tidak pernah menyentuh file sebenarnya. monkeypatch mengubah variabel atau atribut lingkungan, dan membatalkan perubahan saat pengujian berakhir. Yang berguna lainnya adalah capsys, yang menangkap hasil cetakan sehingga Anda dapat memeriksanya.

Penanda: lewati dan xgagal

Penanda menambahkan label dan perilaku ke pengujian:

@pytest.mark.skip(reason="payment sandbox is down")
def test_payment():
    assert False

@pytest.mark.xfail(reason="floating point")
def test_rounding():
    assert 0.1 + 0.2 == 0.3

skip tidak menjalankan tes sama sekali. xfail menjalankannya tetapi mengharapkan kegagalan, sehingga masalah yang diketahui tidak merusak build Anda. Dengan pengujian tambahan lainnya dalam file yang sama, proses kami diringkas sebagai 3 passed, 1 skipped, 1 xfailed. Omong-omong, tes pembulatan itu benar-benar gagal: dalam aritmatika floating point, 0,1 + 0,2 tidak persis 0,3. Gunakan pytest.approx(0.3) saat membandingkan desimal.

Anda juga dapat membuat penanda Anda sendiri, seperti @pytest.mark.slow, dan menjalankan penanda tersebut dengan pytest -m slow saja, atau mengabaikannya dengan -m "not slow". Daftarkan penanda khusus di file konfigurasi Anda untuk menghindari peringatan.

Bendera baris perintah yang berguna

Perintah Apa fungsinya
uji coba -v Tampilkan setiap nama tes
uji coba -q Tampilkan ringkasan yang lebih singkat
uji coba -x Berhenti pada kegagalan pertama
diskon pytest -k Jalankan tes yang namanya cocok dengan sebuah kata
uji coba -s Tampilkan keluaran print.
uji coba --lf Jalankan kembali hanya kegagalan terakhir
uji coba --pdb Buka debugger jika gagal
pytest test_cart.py::test_total Jalankan satu tes tertentu

Menjalankan pytest di CI

Pengujian menjadi sangat berharga jika dijalankan secara otomatis pada setiap perubahan. Pekerjaan GitHub Actions minimal terlihat seperti ini:

steps:
  - uses: actions/checkout@v4
  - uses: actions/setup-python@v5
    with:
      python-version: "3.13"
  - run: pip install -r requirements.txt
  - run: python -m pytest

Pytest keluar dengan kode bukan nol ketika pengujian gagal, yang menyebabkan pipeline berhenti. Kami tidak menjalankan file alur kerja ini, jadi sesuaikan dengan proyek Anda. Panduan CI/CD Tindakan GitHub kami menjelaskan detailnya. Pytest juga berfungsi dengan baik untuk pengujian browser, seperti yang ditunjukkan dalam Tutorial Selenium Python dan Tutorial Model Objek Halaman kami.

Penutup

Anda sekarang memiliki apa yang Anda perlukan untuk sebagian besar rangkaian pengujian Python: pernyataan sederhana, perlengkapan untuk penyiapan, parameterisasi untuk variasi, dan beberapa tanda untuk kecepatan. Mulailah dari yang kecil. Pilih satu fungsi yang baru-baru ini Anda perbaiki bugnya dan tulis tes untuk bug tersebut terlebih dahulu. Jika Anda tidak yakin apa yang harus diuji di setiap level, baca tentang pengujian unit vs integrasi.

Pertanyaan yang sering diajukan

Untuk apa pytest digunakan?

Pytest adalah kerangka pengujian Python. Ini digunakan untuk pengujian unit, integrasi dan API, dan juga berfungsi baik dengan alat browser seperti Selenium dan Playwright.

Apakah pytest lebih baik daripada unittest?

Banyak tim lebih menyukainya karena sintaksisnya yang lebih sederhana, perlengkapannya, dan kegagalannya yang lebih jelas. unittest tidak memerlukan instalasi, dan pytest juga dapat menjalankan pengujian unittest yang ada.

Apa perlengkapan di pytest?

Fixture adalah fungsi yang menyiapkan sesuatu yang dibutuhkan pengujian, seperti data atau koneksi. Tes menerimanya dengan menamainya sebagai argumen.

Apa itu conftest.py?

Ini adalah file khusus untuk berbagi perlengkapan dan kait di seluruh file pengujian. Pytest memuatnya secara otomatis, jadi perlengkapannya tidak memerlukan pernyataan import.

Mengapa pytest tidak menemukan tes saya?

Biasanya ini adalah masalah penamaan. File harus diberi nama test_*.py atau *_test.py, dan fungsi harus dimulai dengan test. Periksa juga apakah Anda menjalankannya dari folder yang benar.

Teruslah belajar

Bekerja dengan Stack Quora

Butuh bantuan dengan pengujian, WordPress atau SEO?

Kami membantu tim mengirimkan perangkat lunak yang lebih baik dan mengembangkan situs mereka. Beritahu kami apa yang sedang Anda kerjakan dan kami akan menyarankan langkah selanjutnya yang jelas.

Teruslah membaca

Panduan lebih lanjut tentang pengujian, AI & pengembangan modern

Menikmati artikel ini? Pilih topik dan langsung masuk ke tutorial terbaru kami.

Kecerdasan buatan

Penjelasan Halusinasi AI: Mengapa Model Bahasa Memperbaiki Masalah dan Cara Menguranginya

Halusinasi AI menjelaskan: apa itu, mengapa model bahasa memproduksinya, tipe umum, cara menguranginya dengan landasan dan petunjuk, dan pemeriksaan…

Baca artikel →
DevOps

Penjelasan Variabel Lingkungan: File .env, Rahasia, dan Konfigurasi Dilakukan dengan Benar

Variabel lingkungan dijelaskan dengan contoh Python yang kami jalankan: membaca dan mengaturnya, mengapa setiap nilai berupa string, file .env, pewa…

Baca artikel →
Pengembangan perangkat lunak

Penjelasan Pembatasan Kecepatan API: Algoritma, Header, dan Penanganan 429 Kesalahan

Pembatasan laju API dijelaskan dengan simulasi yang kami jalankan: keranjang token, jendela tetap, jendela geser, respons 429, header batas laju, pe…

Baca artikel →
Otomatisasi pengujian

Mengejek dengan Python: unittest.mock, patch dan Kesalahan yang Membuat Tes Berbohong

Mengejek dengan Python dengan unittest.mock, menguji: Mock dan return_value, side_effect, menambal di mana nama digunakan, spesifikasi dan autospec,…

Baca artikel →
Pengujian perangkat lunak

Penjelasan Cakupan Kode: Cakupan Jalur vs Cabang dan Apa Arti 100% Sebenarnya

Cakupan kode dijelaskan dengan coverage.py yang sebenarnya dijalankan: cakupan garis, cabang dan kondisi, membaca laporan, mengapa cakupan 100% masi…

Baca artikel →
Basis data & SQL

DELETE vs TRUNCATE vs DROP dalam SQL: Perbedaan, Rollback dan Kapan Menggunakan Masing-Masing

DELETE vs TRUNCATE vs DROP dijelaskan dengan SQL yang diuji: apa yang dihapus, rollback, pemicu, reset identitas, kecepatan, dan perbedaan PostgreSQ…

Baca artikel →
Basis data & SQL

Penjelasan Tampilan SQL: Membuat, Menggunakan, dan Menghindari Kesalahan, Dengan Contoh

Tampilan SQL dijelaskan dengan kueri yang kami jalankan: membuat tampilan, hasil langsung, menyembunyikan kolom, kinerja, tampilan yang dapat diperb…

Baca artikel →
Pengembangan perangkat lunak

Antarmuka TypeScript vs Tipe: Perbedaan Nyata, Diuji Dengan Kompiler

Antarmuka TypeScript vs tipe, diperiksa dengan kompiler sebenarnya: apa yang bisa dilakukan keduanya, apa yang hanya bisa dilakukan satu orang, peng…

Baca artikel →
Pengembangan perangkat lunak

Penjelasan Python *args dan **kwargs: Fungsi Fleksibel Dengan Contoh Jelas

Python *args dan **kwargs dijelaskan dengan kode yang kami jalankan: pengepakan dan pembongkaran, urutan parameter, argumen hanya kata kunci dan pos…

Baca artikel →
Pengembangan perangkat lunak

Fungsi Python Lambda: Sintaks, Kegunaan Sebenarnya, dan Kapan Tidak Digunakan

Fungsi python lambda dijelaskan dengan kode yang kami jalankan: sintaksis, pengurutan dengan kunci, peta dan filter, penutupan, jebakan pengikatan a…

Baca artikel →
Kecerdasan buatan

Apa Itu Agen AI? Cara Kerjanya, Dengan Agent Loop Sederhana yang Dapat Anda Jalankan

Apa itu agen AI? Panduan sederhana tentang loop agen, alat, memori, dan pagar pembatas, dengan loop Python kecil yang kami jalankan, risiko nyata da…

Baca artikel →
DevOps

Pemantauan vs Observabilitas: Perbedaan Nyata, Dengan Log, Metrik, dan Jejak

Penjelasan pemantauan vs observabilitas: kegagalan yang diketahui dan tidak diketahui, log, metrik dan jejak, penelusuran insiden checkout, sinyal e…

Baca artikel →
DevOps

Volume Docker vs Bind Mounts: Pertahankan Data Kontainer dengan Cara yang Benar

Volume Docker vs pengikatan pengikat dijelaskan: mengapa data kontainer menghilang, volume yang diberi nama, pengikatan pengikatan, tmpfs, contoh Tu…

Baca artikel →
Otomatisasi pengujian

TDD vs BDD: Perbedaan Utama, Satu Fitur Dibangun dengan Dua Cara dan Kapan Menggunakan Masing-masing

TDD vs BDD dijelaskan dengan satu fitur diskon yang dibuat dengan dua cara: refactor merah-hijau dengan kode yang kami jalankan, skenario Mengingat-…

Baca artikel →
Pengujian perangkat lunak

User Acceptance Testing (UAT): Proses, Checklist dan Contoh Nyata

Pengujian penerimaan pengguna menjelaskan: siapa yang menjalankannya, perbedaannya dengan QA, proses tujuh langkah, templat kasus uji UAT, daftar pe…

Baca artikel →
Basis data & SQL

Penjelasan Nilai NULL SQL: IS NULL, COALESCE, NULLIF dan Jebakan yang Harus Dihindari

Nilai SQL NULL dijelaskan dengan kueri yang kami jalankan: logika tiga nilai, IS NULL, COALESCE, NULLIF, cara agregat, penggabungan, dan pengurutan …

Baca artikel →
Basis data & SQL

Pernyataan SQL CASE WHEN: Sintaks, Contoh Nyata dan Kesalahan Umum

SQL CASE KETIKA dijelaskan dengan kueri yang kami jalankan: formulir sederhana dan dicari, urutan kondisi, pivot dengan SUM, trik COUNT, pengurutan …

Baca artikel →
Pengembangan perangkat lunak

Apa itu JWT? Token Web JSON Dijelaskan Dengan Contoh Kerja

Apa itu JWT? JSON Web Tokens menjelaskan: tiga bagian, token yang dibuat dan dirusak dalam kode yang kami jalankan, sesi JWT vs, penyimpanan, token …

Baca artikel →
Pengembangan perangkat lunak

Penjelasan Loop Acara JavaScript: Call Stack, Microtasks, dan Timer Dengan Contoh

Perulangan peristiwa JavaScript dijelaskan dengan kode yang kami jalankan: tumpukan panggilan, antrian tugas dan tugas mikro, mengapa setTimeout 0 t…

Baca artikel →
Pengembangan perangkat lunak

Generator Python dan Penjelasan Hasil: Menghemat Memori Dengan Contoh Nyata

Generator dan hasil Python dijelaskan dengan kode yang kami jalankan: bagaimana mereka menjeda dan melanjutkan, mengukur penghematan memori, saluran…

Baca artikel →
Kecerdasan buatan

Apa itu Embedding? Kesamaan Vektor dan Kosinus Dijelaskan Secara Sederhana

Apa itu embeddings? Panduan bahasa sederhana tentang vektor, kesamaan kosinus, dan penelusuran semantik, dengan contoh kecil yang kami jalankan, pen…

Baca artikel →
DevOps

Penerapan Biru-Hijau vs Canary: Perbedaan, Kompromi, dan Cara Memilih

Penjelasan penerapan blue-green vs canary: cara kerja masing-masing, biaya, risiko dan rollback, pengelompokan pengguna stabil yang kami uji, migras…

Baca artikel →
Otomatisasi pengujian

Tes Tidak Stabil: Apa Penyebabnya dan Cara Memperbaikinya untuk Kebaikan

Pengujian yang tidak stabil dijelaskan dengan demo yang kami jalankan: penyebab utama, cara mengonfirmasi dan mendiagnosisnya, perbaikan waktu yang …

Baca artikel →
Pengujian perangkat lunak

Load Testing vs Stress Testing: Perbedaan, Metrik dan Contoh k6

Penjelasan pengujian beban vs pengujian stres: apa yang dibuktikan masing-masing, pengujian lonjakan dan rendam, metrik yang penting, mengapa rata-r…

Baca artikel →
Pengujian perangkat lunak

Kasus Uji vs Skenario Uji: Perbedaan Utama, Contoh, dan Kapan Menggunakan Masing-masing

Penjelasan kasus uji vs skenario pengujian: definisi yang jelas, tabel berdampingan, satu fitur pengaturan ulang kata sandi yang diambil dari skenar…

Baca artikel →
Basis data & SQL

Optimasi Kueri SQL: Baca Rencana Eksekusi dan Perbaiki Kueri Lambat, Dengan Pengaturan Waktu

Pengoptimalan kueri SQL diuji pada sejuta baris: membaca rencana eksekusi, menambahkan indeks yang tepat, memperbaiki filter yang tidak dapat disarg…

Baca artikel →
Basis data & SQL

SQL UNION vs UNION ALL: Perbedaan, Contoh dan Kinerja Diuji

SQL UNION vs UNION ALL dijelaskan dengan kueri yang kami jalankan: duplikat, aturan yang diikuti keduanya, bug data nyata, kinerja terukur, INTERSEC…

Baca artikel →
Pengembangan perangkat lunak

Tutorial API Pengambilan JavaScript: GET, POST, Penanganan Kesalahan, dan Batas Waktu

Tutorial JavaScript Fetch API diuji pada server lokal: GET dan POST, mengapa 404 tidak muncul, bantuan yang dapat digunakan kembali, string kueri, b…

Baca artikel →
Pengembangan perangkat lunak

Penanganan File Python: Baca, Tulis, CSV, JSON dan pathlib Dengan Contoh

Penanganan file Python dijelaskan dengan kode yang kami jalankan: mode terbuka, dengan, membaca file besar, CSV, JSON, pathlib, file biner, penulisa…

Baca artikel →
Pengembangan perangkat lunak

Kelas dan Objek Python: Tutorial OOP Dengan Contoh Nyata

Kelas dan objek Python dijelaskan dengan kode yang kami jalankan: __init__, metode, atribut kelas vs instance, warisan, properti, metode dunder, kel…

Baca artikel →
Kecerdasan buatan

Apa Itu Model Bahasa Besar? Bagaimana LLM Bekerja, Dijelaskan Tanpa Hype

Apa yang dimaksud dengan model bahasa besar? LLM dijelaskan dalam bahasa sederhana: token, penyematan, perhatian, pelatihan, jendela suhu dan kontek…

Baca artikel →
DevOps

Perintah Linux untuk Pemula: Panduan Terminal Penting Dengan Contoh

Perintah Linux untuk pemula, dikelompokkan berdasarkan tugas: navigasi, file, melihat log, grep, pipa, izin, proses dan arsip, dengan contoh analisi…

Baca artikel →
Otomatisasi pengujian

Selenium vs Penulis Drama: Perbedaan Utama, Perbandingan Kode, dan Mana yang Harus Dipilih

Selenium vs Playwright dibandingkan: arsitektur, menunggu, dukungan browser dan bahasa, debugging, pengujian yang sama di kedua alat, saran migrasi …

Baca artikel →
Pengujian perangkat lunak

Partisi Ekivalensi: Teknik Desain Tes Dijelaskan Dengan Contoh yang Dikerjakan

Penjelasan partisi ekivalensi: cara menemukan partisi yang valid dan tidak valid, contoh yang berfungsi untuk usia, kata sandi dan kupon, pengujian …

Baca artikel →
Pengujian perangkat lunak

Severity vs Priority dalam Pengujian Perangkat Lunak: Perbedaan, Matriks dan Contoh Nyata

Keparahan vs prioritas dalam pengujian perangkat lunak dijelaskan: definisi yang jelas, matriks empat arah dengan contoh, skala level, siapa yang me…

Baca artikel →
Basis data & SQL

Tutorial Subkueri SQL: Jenis, Subkueri yang Berkorelasi, dan ADA Dengan Contoh

Tutorial subkueri SQL dengan kueri yang kami jalankan: subkueri skalar, IN, FROM dan SELECT, subkueri yang berkorelasi, EXISTS, jebakan NOT IN NULL …

Baca artikel →
Basis data & SQL

Penjelasan Transaksi SQL dan ACID: COMMIT, ROLLBACK dan Tingkat Isolasi

Transaksi SQL dan ACID dijelaskan dengan transfer bank yang kami jalankan: COMMIT, ROLLBACK, savepoint, kunci, tingkat isolasi, pembacaan kotor, keb…

Baca artikel →
Pengembangan perangkat lunak

Lembar Cheat Perintah Git: Perintah yang Sebenarnya Anda Gunakan, Beserta Contohnya

Lembar contekan perintah Git yang dikelompokkan berdasarkan tugas: pengaturan, pementasan, cabang, remote, simpanan, riwayat, dan pembatalan kesalah…

Baca artikel →
Pengembangan perangkat lunak

Penjelasan Janji JavaScript: lalu, tangkap, Janji.semua, dan Kesalahan Umum

Janji JavaScript dijelaskan dengan kode yang kami jalankan: status, rantai lalu dan tangkap, penanganan kesalahan, Promise.all, allSettled, race dan…

Baca artikel →
Pengembangan perangkat lunak

Tutorial Kamus Python: Metode, Contoh dan Pola Umum

Tutorial kamus Python dengan kode yang kami jalankan: membuat, membaca dan memperbarui dicts, metode utama, penggabungan, pemahaman, pola penghitung…

Baca artikel →
Kecerdasan buatan

Apa itu RAG? Generasi Retrieval-Augmented Dijelaskan Dengan Contoh Kerja

Apa itu RAG? Generasi yang ditambah pengambilan dijelaskan langkah demi langkah: pengindeksan, pemotongan, penyematan, pengambilan, contoh kecil Pyt…

Baca artikel →
DevOps

Tutorial Terraform untuk Pemula: Infrastruktur sebagai Kode Dari File Pertama hingga Modul

Tutorial Terraform untuk pemula: mulai tanpa akun cloud, pelajari init, rencanakan dan terapkan, lalu variabel, keluaran, status, modul, dan alur ke…

Baca artikel →
DevOps

Docker vs Kubernetes: Perbedaan Utama, Cara Kerja Sama, dan Yang Anda Butuhkan

Docker vs Kubernetes menjelaskan: apa yang dilakukan masing-masing, aplikasi yang sama dijalankan dengan keduanya, Docker Compose dan Swarm dibandin…

Baca artikel →
Otomatisasi pengujian

Tutorial Pytest untuk Pemula: Fixture, Parametrize dan Contoh Nyata

Tutorial pytest untuk pemula dengan pengujian yang kami jalankan di pytest 9.2: pernyataan, perlengkapan, parametrize, conftest, marker, tmp_path, m…

Baca artikel →
Pengujian perangkat lunak

Siklus Hidup Pengujian Perangkat Lunak (STLC): 6 Fase, Kriteria Masuk dan Keluar, Contoh

Siklus hidup pengujian perangkat lunak menjelaskan: enam fase STLC dengan kriteria masuk dan keluar, hasil, contoh fitur login yang berfungsi, STLC …

Baca artikel →
Pengembangan perangkat lunak

Git merge vs rebase: perbedaan, contoh, dan kapan memakai masing-masing

Git merge vs rebase dijelaskan dengan keluaran log nyata, tabel perbandingan, aturan emas rebase, dan alur kerja tim yang aman.

Baca artikel →
Pengembangan perangkat lunak

List Comprehension Python: Sintaks, Contoh, dan Kapan Harus Dihindari

List comprehension Python dijelaskan: sintaks, filter, if-else, perulangan bersarang, waktu yang diukur, dan kapan perulangan for biasa lebih baik.

Baca artikel →
Basis data & SQL

Penjelasan SQL JOIN dengan Contoh (Inner, Left, Right, Full)

Pahami SQL JOIN langkah demi langkah dengan tabel dan query contoh: INNER, LEFT, RIGHT, FULL, CROSS, dan SELF, plus kesalahan umum dan tips performa.

Baca artikel →