Fakultas Ilmu Komputer UI

Skip to content
Snippets Groups Projects
Commit f71dc340 authored by Daya Adianto's avatar Daya Adianto
Browse files

Add quick revision on day 3 instructions

parent 12a3d673
No related branches found
No related tags found
1 merge request!25Add quick revision on day 3 instructions
......@@ -5,7 +5,6 @@
* Session 3: 13:00 - 15:00: Hands-on: A Case study
* Session 4: 15:30 - 16:30: Overview, Discussion, Lesson learned
## Functional Tests & BDD
Anda telah diperkenalkan dengan contoh kode test dari tingkat _unit test_ hingga _functional test_ di hari pertama workshop.
......@@ -52,24 +51,61 @@ Ketiga peran tersebut berkolaborasi dalam proses pengembangan dengan menyusun _r
Untuk mengikuti rangkaian kegiatan workshop hari ini, harap persiapkan _tools_ berikut di komputer:
- Git
- IntelliJ IDEA Community Edition
- [Git](https://git-scm.com/)
- [Java JDK 17](https://adoptium.net/temurin/releases/?version=17)
- [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download/)
- Pasang _plugin_ Cucumber
- Java JDK 17 (`java` dan `javac`)
- Apache Maven (`mvn`)
- Docker dan Docker Compose (`docker` dan `docker-compose`)
- Google Chrome
- Node.js (opsional jika ingin menjalankan _frontend_ secara manual)
Buka proyek [Spring Petclinic BDD di GitLab CSUI][Spring Petclinic BDD @ GitLab CSUI] dan
buat salinan proyek ("_fork_") ke dalam akun GitLab CSUI anda.
- [Apache Maven](https://maven.apache.org/download.cgi)
- _Web browser_ seperti [Mozilla Firefox](https://www.mozilla.org/en-US/firefox/new/)
atau [Google Chrome](https://www.google.com/chrome/index.html).
- (Opsional) [Docker dan Docker Compose](https://docs.docker.com/desktop/) apabila ingin menjalankan contoh proyek di dalam _container_.
Catatan instalasi Docker dapat dilihat di halaman berikut: [(klik)](./prep.md)
- (Opsional) Node.js versi 16 apabila ingin menjalankan _frontend_ aplikasi contoh secara lokal.
Pastikan anda dapat memanggil program-program berikut dari dalam _shell_ favorit anda:
```shell
git --version
java --version
javac --version
mvn --version
```
Hasil pemanggilan program-program di atas seharusnya akan mencetak versi program yang terpasang di komputer anda.
Buka proyek [Spring Petclinic BDD di GitLab CSUI][Spring Petclinic BDD @ GitLab CSUI]
dan buat salinan proyek (_fork_) ke dalam akun GitLab CSUI anda.
Kemudian buat salinan kode templat dari _fork_ ke komputer anda menggunakan perintah `git`:
```shell
git clone https://gitlab.cs.ui.ac.id/[akun GitLab CSUI anda]/spring-petclinic-bdd.git
```
Telah tersedia juga berkas [`docker-compose.yml`][2] berikut untuk menjalankan aplikasi Spring Boot + Angular JS bernama Spring Petclinic yang akan dijadikan bahan latihan hari ini:
Proyek tersebut mengandung kode templat awal untuk berlatih membuat _test suite_ BDD yang akan diujikan terhadap aplikasi Spring Petclinic.
Sudah tersedia aplikasi Spring Petclinic bagi masing-masing peserta yang dapat dicoba secara daring.
Berikut ini adalah tautan ke aplikasi Spring Petclinic bagi setiap peserta:
- [`https://spring-petclinic-angular-fatimah.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-fatimah.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-rezha.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-rezha.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-sri.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-sri.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-wida.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-wida.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-niea.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-niea.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-yopi.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-yopi.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-budi.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-budi.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-winayaka.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-winayaka.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-fakhri.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-fakhri.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-ratu.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-ratu.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-adit.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-adit.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-meitya.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-meitya.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-ganda.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-ganda.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-pahmil.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-pahmil.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-sonya.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-sonya.dokku-ppl.cs.ui.ac.id)
- [`https://spring-petclinic-angular-kamrozi.dokku-ppl.cs.ui.ac.id`](https://spring-petclinic-angular-kamrozi.dokku-ppl.cs.ui.ac.id)
> Catatan: Mohon hanya akses aplikasi Spring Petclinic sesuai nama depan masing-masing!
Sebagai alternatif bagi peserta yang ingin mencoba menjalankan aplikasinya secara lokal,
tersedia juga berkas [`docker-compose.yml`][2] berikut untuk menjalankan aplikasi Spring Petclinic:
```yaml
---
......@@ -84,8 +120,8 @@ services:
- "127.0.0.1:80:8080"
```
_Backend_ aplikasi menggunakan [Spring Petclinic REST](https://github.com/spring-petclinic/spring-petclinic-rest) yang dapat diakses melalui _port_ 9966 di `127.0.0.1`.
Sedangkan _frontend_ aplikasi menggunakan [Spring Petclinic Angular](https://github.com/spring-petclinic/spring-petclinic-rest) yang dapat diakses melalui _port_ 80 di `127.0.0.1`.
_Backend_ aplikasi Spring Petclinic menggunakan [Spring Petclinic REST](https://github.com/spring-petclinic/spring-petclinic-rest) yang dapat diakses melalui _port_ 9966 di `127.0.0.1`.
Sedangkan _frontend_ aplikasi menggunakan [Spring Petclinic Angular](https://github.com/spring-petclinic/spring-petclinic-angular) yang dapat diakses melalui _port_ 80 di `127.0.0.1`.
Kedua komponen aplikasi ini dapat jalan sebagai _container_, ataupun di-_build_ secara manual.
Silakan merujuk ke `README.md` masing-masing komponen jika ingin menjalankannya secara manual (tanpa _container_).
......@@ -98,7 +134,8 @@ docker compose up --detach
docker-compose up --detach
```
Kemudian buka laman depan aplikasi menggunakan _web browser_ seperti Google Chrome di alamat `http://127.0.0.1`.
Kemudian buka laman depan aplikasi menggunakan _web browser_ seperti Google Chrome di alamat aplikasi atas nama anda
atau di `http://127.0.0.1` jika anda menjalankannya secara lokal.
Tampilan aplikasi akan terlihat serupa dengan _screenshot_ berikut:
![Tampilan laman depan Spring Petclinic](./images/day_3_-_spring_petclinic_front_page.png)
......@@ -106,7 +143,7 @@ Tampilan aplikasi akan terlihat serupa dengan _screenshot_ berikut:
## Templat Kode Spring Petclinic BDD
Templat kode yang digunakan pada workshop hari ini mengadopsi templat _starter code_ [Serenity & Cucumber](https://github.com/serenity-bdd/serenity-cucumber-starter).
Templat kode telah dimodifikasi agar menggunakan contoh aplikasi Spring Petclinic secara lokal menggunakan _container_.
Templat kode telah dimodifikasi agar dapat menggunakan contoh aplikasi Spring Petclinic secara lokal menggunakan _container_.
Sesuai dengan nama templat _starter code_ asli yang digunakan, kita akan menggunakan Serenity dan Cucumber.
Serenity merupakan _test framework_ yang menyediakan _library_ dan mendukung proses otomasi test yang mengikuti alur BDD.
......@@ -306,7 +343,7 @@ public void shouldSeeTheSpecialty(Actor actor, String name) {
Pada contoh kode di atas, objek `Actor` sama-sama menggunakan fungsi `attemptsTo` seperti pada fungsi _step definition_ untuk kalimat `When`.
Hanya saja, parameter fungsi tersebut sebaiknya diisi dengan objek `PerformablePredicate` yang dapat dibuatkan oleh objek `Ensure`.
Objek `Ensure` menyediakan fungsi untuk merepresentasikan aksi verifikasi yang dilakukan oleh aktor terhadap kondisi akhir SUR.
Objek `Ensure` menyediakan fungsi untuk merepresentasikan aksi verifikasi yang dilakukan oleh aktor terhadap kondisi akhir SUT.
Aksi verifikasi yang dilakukan oleh aktor adalah sebagai berikut:
1. Aktor melihat seluruh input field dengan atribut `name` atau `id` bernilai `spec_name`.
......@@ -607,6 +644,19 @@ dan fitur mengelola data pemilik binatang peliharaan ("Manage owner").
Pada waktu workshop yang tersisa, silakan lengkapi _test suite_ BDD dengan menambahkan deskripsi fitur
dan skenario test bagi fitur-fitur yang belum diuji.
## Penutup
Selamat! Anda telah mencapai hari terakhir dari kegiatan workshop internal.
Anda telah berlatih menerapkan otomasi kegiatan Software Quality Assurance,
serta menerapkan TDD dan BDD.
Untuk bahan diskusi saat refleksi:
- [ ] Apa perbedaan _test_ tradisional (yaitu, _test_ yang tidak memiliki keterkaitan dengan _requirements_)
dengan _test_ BDD?
- [ ] Apakah hasil eksekusi _test suite_ BDD anda stabil?
- [ ] Apa saja isu yang dapat terjadi ketika menguji SUT melalui simulasi interaksi terhadap _user interface_?
[1]: https://docs.google.com/presentation/d/1YQtWa0k45xCsa3Rugt-xfZxUSCg8uoMQepMASh1QEeU?usp=drive_fs
[2]: https://gitlab.cs.ui.ac.id/pmpl/workshops/spring-petclinic-bdd/-/blob/development/docker-compose.yml
[3]: https://gitlab.cs.ui.ac.id/pmpl/workshops/spring-petclinic-bdd/-/blob/development/src/test/resources/features/veterinarian/manage_specialties.feature
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment