Apa itu Pengujian Thread dalam Pengujian Perangkat Lunak?
⚡ Ringkasan Cerdas
Pengujian thread memverifikasi kemampuan fungsional utama dari satu tugas bisnis saat tugas tersebut berjalan melalui sistem terintegrasi, dan pengujian ini dilakukan di awal pengujian integrasi, bukan setelah setiap komponen selesai.

Apa itu Pengujian Benang?
Pengujian thread adalah jenis pengujian perangkat lunak yang memverifikasi kemampuan fungsional utama dari tugas tertentu, yang disebut thread. Pengujian ini biasanya dilakukan pada tahap awal pengembangan perangkat lunak. tes integrasi fase. Pengujian berbasis thread adalah salah satu strategi inkremental yang diadopsi selama pengujian integrasi sistem. Karena alasan itu, pengujian thread lebih tepat digambarkan sebagai tes interaksi thread.
Yang dimaksud dengan thread di sini bukan hanya thread sistem operasi. Dalam rekayasa Perangkat Lunak Dalam istilah teknis, sebuah thread adalah satu transaksi bisnis lengkap — misalnya, “pelanggan melakukan pemesanan” — tracmelalui setiap modul yang disentuhnya. Pengujian thread menanyakan apakah jalur tunggal tersebut masih berperilaku dengan benar setelah modul-modul tersebut dihubungkan bersama.
Diagram di bawah ini menunjukkan bagaimana setiap thread diintegrasikan dan dijalankan sebagai subsistem sebelum sistem lengkap dirakit.
Jenis Pengujian Benang
Pengujian berbasis thread diklasifikasikan menjadi dua kategori, dan perbedaan tersebut menentukan baik data pengujian maupun cacat yang kemungkinan akan Anda temukan.
- Pengujian satu utas: Pengujian satu thread melibatkan satu transaksi aplikasi pada satu waktu. Hanya satu permintaan yang dilayani, sehingga perilaku respons dapat diprediksi dan pengujian mudah dibuat skrip dan diulang.
- Pengujian multi-thread: Pengujian multi-thread melibatkan beberapa transaksi yang aktif secara bersamaan. Thread terpisah disiapkan untuk layanan yang sama sehingga responsivitas dan penanganan status bersama dapat diamati di bawah beban simultan.
Transaksi yang berjalan lancar dalam pengujian single thread masih dapat gagal dalam pengujian multi-thread, karena pengujian kedua menambah persaingan untuk record, koneksi, dan memori yang sama.
Bagaimana melakukan Pengujian Thread
Proses thread berfokus pada aktivitas integrasi daripada siklus pengembangan secara keseluruhan. Dalam praktiknya, pendekatan ini bekerja sebagai berikut.
- Pengujian berbasis thread adalah bentuk umum dari pengujian berbasis sesi, di mana sesi adalah bentuk thread, namun thread belum tentu merupakan sesi.
- Thread atau program (fungsi kecil) diintegrasikan dan diuji secara bertahap sebagai subsistem, lalu dieksekusi untuk seluruh sistem.
- Pada level terendah, hal ini memberikan integrator pengetahuan yang lebih baik tentang ruang lingkup pengujian yang perlu dilakukan.
- Alih-alih menguji komponen perangkat lunak secara langsung, hal ini mengharuskan integrator untuk berkonsentrasi pada pengujian jalur eksekusi logis dalam konteks keseluruhan sistem.
Karena unit kerja merupakan alur bisnis dan bukan komponen, pengujian thread secara alami berada di antara keduanya. pengujian modul dan penuh pengujian sistem.
Tip untuk Pengujian Multithread
Cacat multithreading bergantung pada waktu, jadi satu kali pengujian bersih tidak banyak membuktikan apa pun. Tips di bawah ini meningkatkan peluang untuk mengungkap cacat tersebut.
- Uji program multithreaded Anda dengan menjalankannya berulang kali dengan kombinasi aplikasi yang berbeda-beda.
- Uji program multithreading Anda dengan menjalankan beberapa instance program secara bersamaan.
- Jalankan program multithreaded Anda pada berbagai model perangkat keras dengan tingkat stres dan beban kerja yang berbeda-beda.
- Gunakan inspeksi kode, karena beberapa kesalahan sinkronisasi lebih mudah dibaca daripada direproduksi.
- Hanya kumpulkan kesalahan dan kegagalan yang terjadi pada thread selain thread utama.
Cacat Umum yang Ditemukan Selama Pengujian Thread
Kesalahan konkurensi jarang muncul dengan tumpukan yang bersih. trace. Kategori-kategori di bawah ini mencakup sebagian besar hal yang terungkap saat menjalankan multi-thread, dan masing-masing memiliki gejala khas yang perlu dikenali.
- Kondisi balapan: Dua thread membaca dan menulis nilai yang sama tanpa urutan, sehingga hasil akhirnya bergantung pada thread mana yang selesai lebih dulu. Gejala: total yang benar pada beberapa kali eksekusi dan salah pada eksekusi lainnya.
- Jalan buntu: Dua thread masing-masing memegang kunci yang dibutuhkan thread lainnya, dan tidak ada yang melanjutkan proses. Gejala: transaksi macet tanpa batas waktu alih-alih gagal dengan kesalahan.
- Perebutan sumber daya: Thread-thread mengantre untuk koneksi, handle file, atau record yang sama, dan throughput menurun drastis jauh sebelum batas perangkat keras tercapai.
- Kerusakan data: Struktur bersama yang sebagian terisi meninggalkan catatan dalam keadaan yang tidak mungkin dihasilkan oleh transaksi yang valid.
- Kelaparan: Thread dengan prioritas rendah tidak pernah mendapatkan sumber daya yang dibutuhkannya, sehingga satu jalur pengguna mengalami timeout sementara bagian sistem lainnya tampak sehat.
Masing-masing dari hal ini memerlukan pencatatan kegagalan pengujian dalam log, karena cacat yang terjadi sekali dalam lima puluh percobaan tidak mungkin dilaporkan melalui sistem yang ada. proses manajemen cacat.
Pengujian Thread vs Pengujian Konkurensi vs Pengujian Integrasi
Ketiga istilah tersebut saling tumpang tindih dan sering tercampur dalam rencana pengujian. Tabel tersebut memisahkan ketiganya berdasarkan tujuan.
| Aspek | Pengujian thread | Pengujian konkurensi | Tes integrasi |
| Unit yang sedang diuji | Satu transaksi bisnis lintas modul | Beberapa pengguna atau thread bertindak secara bersamaan. | Antarmuka antara dua atau lebih komponen |
| Pertanyaan utama | Apakah jalur kunci ini berfungsi dari ujung ke ujung? | Apa yang rusak ketika akses dilakukan secara bersamaan? | Apakah modul-modul tersebut saling berkomunikasi dengan benar? |
| Tahap tipikal | Pengujian integrasi awal | Pengujian sistem atau kinerja | Setelah pengujian unit |
| Cacat yang ditargetkan | Jalur eksekusi terputus, serah terima hilang | Kebuntuan, kondisi persaingan, perebutan kunci | Ketidaksesuaian antarmuka, data yang salahtracts |
| Hubungan | Varian multi-thread tumpang tindih dengan pengujian konkurensi. | Lebih luas daripada bagian multi-thread dari pengujian thread. | Pengujian thread adalah salah satu strategi inkremental di dalamnya. |
Singkatnya, pengujian konkurensi menanyakan apa yang dilakukan akses simultan terhadap sistem, sementara pengujian thread menanyakan apakah satu jalur penting tetap ada setelah integrasi. Tim yang menjalankan keduanya biasanya menjadwalkan pengujian thread terlebih dahulu.
Keunggulan Pengujian Ulir
Teknik ini layak dimasukkan dalam rencana integrasi karena beberapa alasan praktis.
- Alur bisnis utama divalidasi sejak dini, sehingga masalah dalam proses transisi dapat ditemukan sebelum sistem sepenuhnya dirakit.
- Integrator memperoleh gambaran yang jelas tentang ruang lingkup, karena unit pengujian merupakan transaksi yang dapat dikenali, bukan sesuatu yang absolut.tracbatas komponen t.
- Pengujian jalur eksekusi logis dalam konteks sistem mengungkap kesalahan yang terisolasi. pengujian komponen tidak bisa melihat.
- Eksekusi multi-thread mengungkap cacat konkurensi — kebuntuan, kondisi persaingan, dan konflik sumber daya — yang jika tidak ditangani akan mencapai lingkungan produksi.
- Integrasi bertahap menjaga area debugging tetap kecil, karena hanya satu thread yang ditambahkan pada satu waktu.
- Hasilnya langsung masuk ke pengujian regresi, karena thread yang lewat merupakan kandidat yang tepat untuk rangkaian pengujian regresi.
Kekurangan Pengujian Benang
- Untuk pengujian multithreading, tantangan terbesar adalah mampu memprogram pengujian yang dapat direproduksi untuk pengujian unit.
- Menulis unit test untuk kode multithreaded adalah tugas yang menantang.
- Kriteria pengujian untuk pengujian multi-thread berbeda dari pengujian single-thread. Untuk pengujian multi-thread, faktor-faktor seperti ukuran memori, kapasitas penyimpanan, dan masalah waktu bervariasi ketika kode dipanggil pada perangkat keras yang berbeda.
- Thread tidak dapat diuji sebelum modul yang dilaluinya tersedia, sehingga penjadwalan bergantung pada urutan integrasi.
- Kegagalan yang terjadi sesekali mudah dianggap sebagai gangguan lingkungan, sehingga pencatatan data yang disiplin menjadi sangat penting.

