Fitur Mentimun: ikhtisar

Diterbitkan: 2022-04-20

Pendahuluan

Gherkin adalah bahasa yang masih digunakan di banyak kerangka kerja otomatisasi pengujian. Terkadang karena klien mengharuskan kita untuk menggunakannya, terkadang karena tim memutuskan untuk melakukannya.

Sejujurnya, itu bukan cinta pada pandangan pertama bagiku. Saya pribadi memiliki perjalanan yang cukup panjang dengan Gherkin– dari menyukainya pada awalnya, dengan membenci bahasa untuk sementara waktu, dan akhirnya menyukainya lagi. Pada artikel ini saya akan menyajikan fitur Mentimun yang paling penting bersama dengan implementasi Java.

Berikut adalah semua fitur Mentimun yang dibahas dalam artikel ini:

Fitur Keterangan
Skenario Skenario sederhana
Garis Besar Skenario Mengharuskan pengguna untuk memberikan data pengujian di bagian "Contoh"
Tabel Data Mengharuskan pengguna untuk memberikan data pengujian untuk langkah pengujian
Konteks Skenario Berbagi nilai di antara langkah-langkah pengujian
Tipe Data Mentimun Tipe data ditangani oleh mentimun
Ekspresi Reguler Mentimun Penggunaan ekspresi reguler dalam skenario mentimun
Kait mentimun Menjalankan kode tambahan dalam skenario pengujian
Tabel 1. Fitur mentimun dan java yang dibahas dalam artikel ini

File fitur

Pertama-tama, apa itu file fitur? Di dunia teknis, pendekatan non-teknis dibuat untuk memungkinkan orang non-teknis bekerja sama dengan tim selama pengembangan aplikasi. Bahasa Gherkin dibuat sebagai lapisan tambahan dalam pendekatan BDD. Tes Gherkin terletak di apa yang disebut file fitur yang direkatkan dengan kode (Java, Kotlin, C# dll.). Biasanya Gherkin sangat mudah digunakan, dan membutuhkan pengetahuan pemrograman minimum, tetapi ada fitur yang memerlukan beberapa pengkodean.

Mari kita mulai dengan sesuatu yang mudah.

Skenario

Berikut adalah contoh tes Mentimun yang paling dasar dan paling mudah digunakan:

 Fitur: Skenario

 Latar Belakang: Sebelum Skenario Tes
   Mengingat saya mengeksekusi sebelum langkah

 @Uji
 Skenario: Skenario 
   Mengingat saya menggunakan langkah parameter "Skenario 1"

Blok Kode 1. Skenario

Blok Kode 1. berisi beberapa hal yang akan dijelaskan:

  • Fitur : judul file fitur
  • Latar Belakang : kata kunci yang memungkinkan pengguna untuk menjalankan langkah-langkah pengujian sebelum setiap skenario pengujian yang ditentukan dalam file fitur
  • @Test : Tag yang memberi tahu kerangka pengujian skenario pengujian apa yang harus dijalankan. "Tes" didefinisikan oleh pengguna. Kita dapat menggunakan misalnya "@SmokeTest"
  • Skenario : Nama skenario pengujian

Tes Gherkin menggunakan kata kunci [Given, When, Then, But] sebelum setiap langkah pengujian. Dalam satu-satunya langkah pengujian kami, kecuali langkah Latar Belakang, kami menggunakan parameter di mana kami melewati nilai "Skenario 1".

Sekarang, mari kita lihat seperti apa kode Java yang direkatkan:

 @Given("Saya mengeksekusi sebelum langkah")
public void iExecuteBeforeStep() {
   //beberapa implementasi
}

@Given("Saya menggunakan langkah parameter {string}")
public void iUseParametrizedStepOf(String p) {
   //beberapa implementasi
}

Blok Kode 2. Implementasi kode Java dari Skenario

Garis Besar Skenario

Mari kita lakukan sesuatu yang lebih kompleks:

 Fitur: Garis Besar Skenario

 @Uji
 Garis Besar Skenario: Garis Besar Skenario
   Mengingat saya menjalankan langkah dengan "<parameter1>" dan "<parameter2>"
 Contoh:
     | parameter1 | parameter2 |
     | parameter1a | parameter2a |
     | parameter1b | parameter2b |

Blok Kode 3. Garis Besar Skenario

Kali ini kita akan menggunakan Skenario Outline yang memungkinkan kita untuk mengulang skenario pengujian dengan konfigurasi data pengujian yang berbeda. Blok Kode 3. berisi beberapa hal yang harus dijelaskan:

  • Contoh : matriks data uji yang akan digunakan oleh skenario uji. Baris pertama adalah header dengan nama parameter.

Dan implementasi Java:

 @Given("Saya menjalankan langkah dengan {string} dan {string}")
public void iRunStepWithAnd(String p1, String p2) {
   //beberapa implementasi
}

Blok Kode 4. Implementasi Java dari Skenario Outline

Tabel data

Garis Besar Skenario sangat berguna, tetapi bagaimana jika kita tidak ingin mengulang seluruh skenario pengujian tetapi hanya satu langkah pengujian? Gherkin memiliki cara untuk melakukan itu dan itu disebut "Tabel Data".

 Fitur: Tabel Data

@Uji
Skenario: Skenario Tabel Data
 Mengingat saya memverifikasi kolom berisi nilai yang diharapkan
 | kolomNama | nilai yang diharapkan |
 | someColumnName | someExpectedValue |

Blok Kode 5. Tabel Data

Skenario dengan Tabel Data tidak berbeda jauh dengan Skenario Garis Besar. Satu-satunya hal adalah kami tidak meletakkan kata kunci "Contoh" sebelum tabel.

Implementasi Java terlihat sedikit lebih kompleks daripada kasus sebelumnya:

 @Given("Saya memverifikasi kolom berisi nilai yang diharapkan")
public void iVerifyColumnValuesInTableUsingQueryFromFileOnSchema(DataTable dataTable) {
   Daftar<Peta<String, String>> data = dataTable.asMaps();
   for (Peta<String, String> form : data) {
       String nama kolom = form.get("nama kolom");
       String ekspektasiResult = form.get("expectedValue");
       //beberapa implementasi
       }
   }
}

Blok Kode 6. Implementasi Java dari Tabel Data

Untuk mengakses data dari tabel data, kami membuat dataTable variabel khusus dengan tipe "DataTable". Semua data akan disimpan dalam variabel Daftar.

Konteks Skenario

Menggunakan Konteks Skenario kita dapat berbagi data antar langkah. Mari kita asumsikan kita memiliki skenario dua langkah di mana kita ingin melewatkan nilai “data” dari langkah 1 ke langkah 2 (Blok Kode 7).

 @Uji
Skenario: Konteks Skenario
 Mengingat saya menetapkan nilai konteks skenario "data"
 Mengingat saya menggunakan nilai konteks skenario

Blok Kode 7. Konteks Skenario

Pertama kita perlu membangun kelas khusus yang disebut ScenarioContext dengan fitur konteks skenario pengaturan dan pengambilan data (Blok Kode 8). Konteks skenario kami adalah HashMap dengan pasangan nilai kunci. Kami akan mengidentifikasi nilai berdasarkan kuncinya.

  • scenarioContext() : HashMap dari pasangan nilai kunci
  • setContext() : metode nilai kunci untuk menyimpan data konteks skenario
  • getContext() : metode untuk mendapatkan data yang menyediakan kunci
 SkenarioKonteks kelas publik {

   peta pribadi<String, Object> scenarioContext;

   skenario publikContext(){
       scenarioContext = HashMap baru<>();
   }

   public void setContext(Kunci konteks, Nilai objek) {
       scenarioContext.put(key.toString(), nilai);
   }

   Obyek publik getContext(Kunci konteks){
       kembali scenarioContext.get(key.toString());
   }

}

konteks enum publik {
   PENGENAL;
}

Blok Kode 8. Implementasi Java dari kelas Konteks Skenario

Setelah ini kita dapat menggunakan metode yang diimplementasikan. Pada langkah 1 kami kemudian menetapkan nilai dalam konteks skenario dan pada langkah 2 kami mendapatkan nilai (Blok Kode 9).

 ScenarioContext scenarioContext = new ScenarioContext();

@Given("Saya menetapkan nilai konteks skenario {string}")
public void iSetScenarioContextValue(Nilai string) {
   scenarioContext.setContext(Context.ID, nilai);
}

@Given("Saya menggunakan nilai konteks skenario")
public void iUseScenarioContextValue() {
   String sharedValue = scenarioContext.getContext(Context.ID).toString();
}

Blok Kode 9. Langkah-langkah Konteks Skenario

Tipe Data Mentimun

Mentimun menangani sejumlah tipe data yang terbatas. Kita dapat mendefinisikan string, integer, dan nilai float, tetapi dalam kasus nilai boolean, kita perlu mengkodekan beberapa solusi.

 @Uji
Skenario: Skenario dengan variabel
 Mengingat saya menggunakan string "string", int 1, float 1.1 dan boolean "false"

Blok Kode 10. Tipe Data Mentimun

Kode Java akan terlihat seperti ini:

 @Given("Saya menggunakan string {string}, int {int}, float {float} dan boolean {string}")
public void iUseStringIntFloatAndBoolean(String var1, int var2, double var3, String var4) {
   boolean f = Boolean.valueOf(var4);
   //beberapa kode
}

Blok Kode 11. Implementasi Java dari Tipe Data Mentimun

Ekspresi Reguler Mentimun

Ini adalah fitur lain yang sering digunakan. Blok Kode 12 menunjukkan skenario dua langkah yang berbeda hanya dengan menggunakan nilai variabel yang berbeda (var1 dan var2). Ini sebenarnya hanya satu langkah, dan dalam kode Java (Blok Kode 13) kami mendefinisikan hanya satu metode tetapi dengan regex dan satu parameter var.

 @Uji
Skenario: Skenario Ekspresi Reguler
 Mengingat saya menggunakan variabel var1
 Mengingat saya menggunakan variabel var2

Blok Kode 12. Ekspresi Reguler dalam Mentimun

 @Given("^Saya menggunakan variabel (.*)")
public void examTimeTableInSummerSeason(String var) {
   if (var.equals("var1")){
       //beberapa kode
   }
   else if(var.equals("var2")){
       //beberapa kode
   }
}

Blok Kode 13. Implementasi Java dari ekspresi reguler Mentimun

Kait Mentimun

Last but not least: Ketimun kait.

Blok kode 14 menyajikan 4 kait paling penting:

  • @Sebelum : Menjalankan kode sebelum setiap skenario pengujian
  • @After : Menjalankan kode setelah setiap skenario pengujian
  • @BeforeStep : Mengeksekusi kode sebelum setiap langkah pengujian
  • @AfterStep : Mengeksekusi kode setelah setiap langkah pengujian
 @Sebelum
kekosongan publik sebelum Skenario() {
   //beberapa kode
}

@Setelah
public void afterScenario() {
   //beberapa kode
}

@SebelumLangkah
kekosongan publik sebelumLangkah() {
   //beberapa kode
}

@AfterStep
public void afterStep() {
   //beberapa kode
}

Blok Kode 14. Kait Mentimun

Ringkasan

Saya harap saya meyakinkan Anda untuk menggunakan Gherkin dalam pengujian Anda. Beberapa fitur ini akan membuat tes Anda lebih mudah dibaca dan dipahami oleh orang non-teknis. Juga untuk anggota baru akan lebih mudah untuk memahami logika bisnis dan mengurangi waktu mereka untuk bergabung.