Jambu biji memiliki unit uji kasus yang dibuat secara otomatis :
Jambu biji memiliki jumlah unit tes yang mengejutkan: pada Juli 2012, paket uji jambu biji mencakup lebih dari 286.000 kasus uji individual. Sebagian besar dihasilkan secara otomatis , tidak ditulis dengan tangan, tetapi cakupan uji Guava sangat menyeluruh, terutama untuk com.google.common.collect.
Bagaimana mereka dihasilkan? Teknik dan teknologi apa yang digunakan untuk merancang dan menghasilkannya?
java
unit-testing
test-automation
dzieciou
sumber
sumber
Jawaban:
Sebagian besar dari tes ini adalah untuk implementasi pengumpulan Jambu. Mereka telah menulis tes generik yang secara mendalam menguji antarmuka pengumpulan, dan ini menghasilkan suite per implementasi. Lihat, misalnya, kelas yang disebut
CollectionAddAllTester
,ListIndexOfTester
.Ini semua didukung oleh perpustakaan yang disebut testlib, yang dikirimkan sebagai bagian dari Guava. Ini cukup umum. Ini mendukung penulisan tes generik untuk semua antarmuka (bukan hanya koleksi). Anda dapat menentukan
Feature
implementasi yang mungkin dan mengujinya (mis. Jika set Anda tidak dapat dimodifikasi, Anda mengharapkan hasil yang berbeda dariset.add()
), dan ketika Anda menjalankan tes, Anda menentukan fitur mana yang didukung oleh implementasi Anda.Ini didasarkan pada JUnit 3, bukan 4. Biasanya, Anda memiliki kelas yang
TestCase
penuh dengan metode bernamatestSomething()
, dan JUnit menjalankannya secara reflektif. Pustaka testlib menghubungkan ke dalam menjalankan tes ini sehingga siklus hidup terlihat seperti ini:TestCase
instanceTestSubjectGenerator
- ini adalah antarmuka testlib yang Anda perluas tempat Anda benar-benar membuat subjek tesgetSubjectGenerator()
berikan akses ke subjek tesBit kunci adalah langkah inisialisasi ekstra yang memungkinkan mereka untuk menyuntikkan subjek uji tertentu ke dalam kasus uji generik.
Saya menulis posting tentang cara menulis suite menghasilkan testlib untuk antarmuka Anda sendiri.
(Juga diposting ke pertanyaan yang sama di situs sqa .)
sumber
Ada generator unit test. Misalnya, di dunia .NET, sesuatu seperti Microsoft Pex dapat melakukan ini.
Sebagai contoh, Microsoft Pex mencoba berdasarkan pada analisis kode semua nilai yang mungkin sebagai argumen untuk suatu metode. Beberapa argumen diharapkan membiarkan metode ini melempar pengecualian. Hal-hal semacam itu secara otomatis dapat dibuat untuk tes. Nilai statis seperti string kosong yang dikembalikan dalam kasus tertentu juga dapat diuji secara otomatis.
sumber