Januari 28

Menggunakan Postman untuk Pengujian API

Ahad pagi merupakan hari yang sangat baik untuk berbagi kembali, sambil ditemani teh manis hangat dan tahu sumedang hangat. ­čśÇ

Pada artikel sebelumnya, kita sudah membahas bagaimana cara membuat Mock API dengan menggunakan tools mockapi.io. Bila teman-teman terlewat dengan artikel tersebut, teman-teman dapat membacanya kembali di sini :

Membuat Mock API dengan mockapi.io

Langkah selanjutnya adalah melakukan pengujian terhadap Mock API yang sudah kita buat tersebut tentunya. Nah, untuk pengujian ini, saya akan menggunakan Postman sebagai API Platform yang akan kita gunakan. Sebenarnya teman-teman dapat menggunakan API Platform Tools lainnya yang teman-teman sukai untuk melakukan pengujian API, namun saya pribadi sejak dahulu lebih senang menggunakan Postman sebagai API Platform yang saya gunakan, selain gratis, juga banyak fitur yang sangat bermanfaat untuk saya dapat gunakan.

Untuk Postman sendiri, teman-teman dapat mengunduhnya pada link berikut :

https://www.postman.com/downloads/

Adapun langkah-langkah pengujian Mock API dengan Postman sebagai berikut :

  • Buka Postman. Bila teman-teman baru pertama kali buka Postman, maka akan terlihat langkah untuk membuat sebuah Workspace baru. Teman-teman dapat memilih menggunakan template yang sudah disediakan oleh Postman. Namun, kali ini kita akan menggunakan Blank Workspace untuk pengujian kita kali ini. Kemudian klik tombol Next.

Postman Blank Workspace

  • Pada halaman ini, teman-teman diminta untuk mengisi nama workspace, keterangan perihal workspace tersebut, dan siapa yang akan mengakses workspace tersebut. Klik tombol Create untuk mulai membuat workspace.

Membuat Workspace Baru

  • Setelah workspace berhasil dibuat, teman-teman akan melihat tampilan Postman seperti berikut :

Blank Collection

  • Sebelum kita membuat collection, kita coba untuk membuat sebuah environment terlebih dahulu. Fungsi environment sendiri, agar memudahkan kita mengatur penggunaan collection untuk diuji pada environment yang berbeda. Kita klik tab Environments, kemudian klik icon + untuk membuat Environment baru.

Environments

  • Maka akan terbuat Environment baru. Isi nama Environment yang kita buat, bisa Local untuk lokal kita, Development untuk development kita, Staging, ataupun Production untuk masing-masing environment pada development project kita. Dikarenakan pada kali ini kita akan menguji Mock API, maka saya namakan environment kali ini Mock API. Isi variabel yang dibutuhkan, kemudian klik tombol Save.

Environment Baru

  • Setelah environment sudah dibuat, langkah selanjutnya kita sudah dapat membuat collection. Klik tab Collection, kemudian klik icon +. Maka akan tampil pilihan jenis collection yang ingin dibuat. Dikarenakan Mock API kita menggunakan RESTful API, maka kita pilih REST API basics, teman-teman dapat menyesuaikannya dengan kebutuhan project teman-teman.

Membuat Collection Baru

  • Maka akan tampil seluruh request untuk CRUD standard RESTful API.

CRUD Collection

  • Teman-teman dapat mengganti nama collection yang sudah dibuat dengan melakukan klik di tombol titik 3, kemudian klik Rename. Atau langsung dapat diklik pada Nama Collectionnya.

Rename Collection

  • Setelah collection dan semua request yang dibutuhkan sudah dibuat, kita sudah dapat menggunakan collection kita untuk pengujian API. Kita coba dengan salah satu request, klik request Get data, ubah endpoint info dengan endpoint yang ingin kita uji, kemudian pilih Environment yang sebelumnya kita buat, dan klik tombol Send. Tunggu sebentar sampai proses request selesai.

Get Data

Resource Products

Sampai sini kita sudah selesai membuat collection untuk melakukan pengujian API. Sisanya teman-teman dapat menyesuaikannya sesuai dengan kebutuhan project yang sedang dikerjakan.

Akhir kata, semoga artikel ini bermanfaat untuk teman-teman yang sedang membuat api untuk kebutuhan development project. Selamat berhari libur dan Terima Kasih. ­čśÇ

Januari 27

Membuat Mock API dengan mockapi.io

Sabtu pagi yang cerah, diiringi teh manis hangat, dengan gemericik suara hujan, merupakan waktu yang tepat untuk kita berbagi kembali. ­čśÇ

Untuk kali ini, kita akan mencoba membahas, bagaimana membuat sebuah mock api tanpa harus ribet coding dengan menampilkan response json berupa hardcode string. Cara ini memiliki beberapa keunggulan, di antaranya dapat mempercepat waktu development. Tentu saja, dengan membuat sebuah mock api, suatu tim yang bekerja dimana di dalamnya terdapat frontend, backend, bahkan mobile developer, maka masing-masing developer dapat bekerja secara paralel. Dimana baik frontend maupun mobile developer, tidak harus menunggu backend developer untuk menyelesaikan semua api nya, karena baik frontend maupun mobile developer, dapat melihat langsung request & response yang akan digunakan dalam development.  Dan untuk beberapa case, bahkan dapat mempercepat QA dalam mempersiapkan test case yang akan dibuatnya.

Sebenarnya ada banyak tools yang dapat digunakan untuk membuat sebuah mock api atau fake api. Namun pada pembahasan kali ini, kita akan menggunakan tools mockapi.io. Adapun langkah-langkah penggunaannya, sebagai berikut :

  • Buka mockapi.io dan buat akun serta login. Teman-teman dapat jg menggunakan akun google untuk langsung membuat akun dan login. Maka akan tampil kira-kira seperti berikut :

mockapi.io

  • Buat sebuah Project baru dengan meng-klik tombol +. Isi Name dengan nama project kita. Bila diperlukan untuk kebutuhan versioning api, bisa ditambahkan API Prefix. Kemudian klik tombol Create.

Tambah Project

  • Sampai pada tahap ini, project baru akan terdaftar berikut project-project lainnya bila teman-teman juga menggunakannya untuk banyak project.

Project List

  • Pilih project yang sudah kita buat tadi. Di sini akan terlihat base url dari mock api yang akan kita buat.

Resource List

  • Klik tombol New Resource untuk membuat sebuah resource api baru, maka akan tampil Popup New Resource. Buat skema api yang ingin kita buat. Nah, di sini kita bisa memanfaatkan Faker.js untuk generate random data terkait data apa yang ingin kita generate saat Mock API kita dipanggil. Teman-teman juga dapat membuatnya menjadi data statis. Jadi tergantung kebutuhan project nanti. Untuk response sendiri, bila teman-teman ingin membuatnya custom, misal dengan format sebagai berikut :

    Dimana $mockData merupakan data generate dari mockapi.io, maka teman-teman harus melakukan subscription terlebih dahulu dikarenakan untuk versi gratis, response yang diberikan akan langsung berupa data array hasil generate. Kemudian klik tombol Create.

Tambah Resource

  • Maka resource baru kita akan terlihat pada List Resource. Di sini kita dapat melakukan penyesuaian, berapa jumlah data yang akan kita generate. Maksimal jumlah data yang dapat kita generate adalah 100 buah.

Set Total Data

Generate 13 Data

  • Sebuah resource berhasil kita buat dan sudah siap untuk kita gunakan. Teman-teman juga dapat melihat contoh response yang akan dihasilkan dengan menekan tombol Data. Dan teman-teman juga dapat mengubah dan/atau menghapus resource tersebut dengan menekan tombol Edit dan/atau icon Delete.

Action Mock API

Data

Nah, sampai tahap ini, Mock API sudah berhasil kita buat untuk sebuah resource dan sudah siap untuk digunakan. Ada hal menarik yang perlu diperhatikan dalam penggunaan tool mockapi.io ini, dimana mockapi.io menerapkan secara menyeluruh perihal RESTful API. Bila teman-teman bingung bagaimana sebuah API secara penuh menerapkan RESTful API, teman-teman dapat membaca dokumentasi perihal RESTful API di sini (dan mungkin di lain kesempatan, kita akan coba bahas mengenai RESTful API) :

https://restfulapi.net/

Demikian pembuatan Mock API sudah selesai kita buat, mudah-mudahan bermanfaat buat teman-teman khususnya yang sedang kesulitan untuk mengatur waktu development para developer dalam tim. Akhir kata, kita habiskan teh hangat kita, semangat terus untuk bekerja, dan Terima Kasih. ­čśÇ

Agustus 31

Automation Jira saat semua Task Done, Story atau Bugs yang berelasi Menjadi Done

Di malam Jum’at yang sunyi ini, waktunya kita berbagi ilmu kembali. Hmmm… Ternyata sudah lama & jarang pula saya menulis. Nasib kerja di Startup.

Sebelum masuk ke pembahasan, saya ingin menjelaskan dahulu mengapa kali ini kita membahas automation yang ada di jira. Yuph, kalian tidak salah, jira yang dimaksud adalah Jira dari Attlasian yang digunakan sebagai tools management project. Di dalamnya banyak sekali fitur yang bisa kita gunakan untuk mempermudah kita dalam tentunya me-manage sebuah project.

Jadi, di sebuah project, saat seluruh tim sudah beraktifitas dengan pekerjaannya masing-masing, terkadang sering sekali saat report pada daily standup, Story yang seharusnya sudah dalam posisi siap testing, masih belum tergeser alias lupa untuk diubah statusnya. Nah, dalam flow kerja yang ada di kantor saya, ini agak berbeda dan mungkin tidak sesuai dengan best practise-nya. Sebelum kita bahas dalam proses alur kerjanya, adapun kerangka card (dalam Jira, teman-teman akan memahaminya sebagai Issue) yang digunakan di jira kantor kira-kira berikut :

Issue Type

Jadi, yg digunakan di kantor saya seperti berikut :

  • Epic : fitur dari sebuah aplikasi
  • Story : card untuk requirement terkait fitur baru atau enhancement terhadap project. Story ini akan memiliki sebuah Epic sebagai parent-nya.
  • Bug : card untuk bug/hotfix sebuah aplikasi. Biasanya bug tidak saya kaitkan dengan sebuah Epic, namun tidak menutup kemungkinan memiliki Epic sebagai parent-nya.
  • Task : card untuk detail pekerjaan masing-masing tim, baik itu developer, maupun QA. Task akan berelasi terhadap sebuah Story atau sebuah Bug.
  • Issue : card yang dibuat oleh QA saat menemukan bug ketika testing. Issue ini akan berelasi dengan sebuah Story
  • Sub Task : untuk sub task ini, di project yang saya manage tidak digunakan. Hal ini dikarenakan kebijakan management dalam pengelolaan project di kantor.

Card-card yg saya sebutkan di ataslah yang saya gunakan dalam management project kantor. Nah, dari card-card tersebut, kita memiliki flow proses masing-masing. Saya tidak akan menyebutkan satu persatu flow proses yang saya gunakan dalam setiap card, namun saya akan berfokus bagaimana sebuat card Task akan berubah. Saat seorang developer memulai pekerjaannya, ia akan segera mengubah status card Task miliknya dari To Do menjadi In Progress. Dan bila card Task itu selesai, maka ia akan mengubah statusnya dari In Progress menjadi Done. Nah, di penjelasan kali ini, saya akan memfokuskan bagaimana kita membuat sebuah automation jira yang secara otomatis akan mengubah status card Story yang berelasi dengan card Task, dimana saat semua card Task yang berelasi dengannya sudah ber-status Done, maka Story itu pun akan otomatis berubah status menjadi Done.

Adapun ide flownya yang akan saya buat adalah sebagai berikut :

  1. Buat sebuah trigger yang akan dijalankan bila “Adanya perubahan status Task dari In Progress menjadi Done
  2. Cari Story yang berelasi dengan Task tersebut
  3. Cari semua Task yang ada dalam Story tersebut
  4. Simpan total semua Task yang ada dalam Story tersebut dalam sebuah variabel (kita namakan : totalAllTasks)
  5. Cari semua Task yang berstatus Done yang ada dalam Story tersebut
  6. Simpan total semua Task yang berstatus Done yang ada dalam Story tersebut dalam sebuah variabel (kita namakan : totalAllDoneTasks)
  7. Kita cek apakah variabel totalAllTasks = totalAllDoneTasks. Jika sama, maka akan lanjut ke proses. Jika berbeda, maka automation akan berhenti
  8. Terapkan pada semua Story yang berelasi pada Task yang menjadi trigger-nya
  9. Ubah status Story tersebut menjadi Done

Oke, setelah kita mendapatkan rancangan proses/algoritma dari automation yang akan kita buat, maka langkah selanjutnya kita coba implement proses tersebut dalam jira. Sebelumnya, saya sudah menyiapkan sebuah project untuk penerapannya. Adapun langkah-langkah yang bisa kita buat sebagai berikut :

  • Pada Project Settings, klik Automation. Kemudian klik Create rule

Create Rule

  • Pada Rule Detail, kita bisa menamakan rule tersebut sesuai dengan apa yang dikerjakan oleh Automation yang akan kita buat. Dalam hal ini, kita akan menamakannya “When all tasks are completed Ôćĺ then change story to completed“. Description bisa dikosongkan, namun direkomendasikan untuk dijelaskan perihal apa yang akan dikerjakan oleh Rule yang akan kita buat.

Rule Details

  • Pada bagian Trigger, kita pilih Issue transitioned. Isi field From Status dengan In Progress dan field To Status dengan Done. Kemudian kita klik Save.

Issue Transitioned

  • Karena kita hanya menyeleksi bahwa trigger ini hanya boleh dijalankan oleh Task, maka kita tambahkan Condition dengan tipe Issue fields condition. Isi Field dengan Issue Type, Condition dengan Equals, dan Value dengan Task. Kemudian klik Save.

Issue Field Condition Task

  • Karena syarat trigger sudah kita buat, selanjutnya kita pilih Action dengan tipe Lookup issues. Isi field JQL dengan query berikut :

issue in linkedIssues({{issue}}) AND issuetype = story

Dimana maksud query tersebut adalah : “kita mencari issue yang berelasi dengan issue yang menjadi trigger dan tipe issue tersebut adalah Story“. Kemudian klik Save.

Lookup Issue Story

  • Tambahkan sebuah Action dengan tipe Create variable. Isi Variable name dengan relatedStory dan Smart value dengan {{lookupIssues}}. Dalam hal ini, kita akan menyimpan story yang sudah didapatkan pada proses Lookup sebelumnya ke variable relatedStory. Kemudian klik Save.

Create Variable Story

  • Tambahkan┬áAction dengan tipe Lookup issues. Isi field JQL dengan query berikut :

issue in linkedIssues({{relatedStory}}) AND issuetype = task

Dimana maksud query tersebut adalah : “kita mencari issue yang berelasi dengan story di variable relatedStory dan tipe issue tersebut adalah Task“. Kemudian klik Save.

Lookup Issues All Tasks

  • Tambahkan sebuah Action dengan tipe Create variable. Isi Variable name dengan totalAllTasks dan Smart value dengan {{lookupIssues.size}}. Dalam hal ini, kita akan menyimpan total seluruh task yang sudah didapatkan pada proses Lookup sebelumnya ke variable totalAllTasks. Kemudian klik Save.

Create Variables totalAllTasks

  • Tambahkan┬áAction dengan tipe Lookup issues. Isi field JQL dengan query berikut :

issue in linkedIssues({{relatedStory}}) AND issuetype = task and status = done

Dimana maksud query tersebut adalah : “kita mencari issue yang berelasi dengan story di variable relatedStory dan tipe issue tersebut adalah Task dan ber-status Done“. Kemudian klik Save.

Lookup Issues All Done Tasks

  • Tambahkan sebuah Action dengan tipe Create variable. Isi Variable name dengan totalAllDoneTasks┬ádan Smart value dengan {{lookupIssues.size}}. Dalam hal ini, kita akan menyimpan total seluruh task yang sudah didapatkan pada proses Lookup sebelumnya ke variable totalAllDoneTasks. Kemudian klik Save.

Create Variables totalAllDoneTasks

  • Tambahkan sebuah Condition dengan tipe Advanced compare condition. Isi First value dengan {{totalAllTasks}}, Condition dengan equals, dan Second value dengan {{totalAllDoneTasks}}. Dalam hal ini, kita akan membandingkan apakah variable totalAllTasks bernilai sama dengan variable totalAllDoneTasks. Kemudian klik Save.

Advanced compare condition

  • Tambahkan sebuah For Each dengan tipe Branch rule / related issues. Isi Type of related issues┬ádengan Linked issues dan Link types┬ádengan relates to. Dalam hal ini, kita akan mencari semua Issue yang berelasi dengan Task yang menjadi Trigger. Step ini akan dikerjakan bila value pada Condition sebelumnya sudah memenuhi syarat, dalam artian bernilai true dalam perbandingannya. Kemudian klik Save.

Branch rule

  • Untuk memastikan kita hanya akan mengubah status Story, maka kita tambahkan Condition dengan tipe Issue fields condition. Isi Field dengan Issue Type, Condition dengan Equals, dan Value dengan Story. Kemudian klik Save.

Issue Field Condition Story

  • Kita tambahkan step terakhir, yuph perubahan story tersebut ke status Done dengan menambahkan┬áAction dengan tipe Transition issue. Isi Destination status┬ádengan Done. Kemudian klik Save.

Transition issue Done

  • Kemudian kita hidupkan Automation tersebut dengan klik Turn it on.

Turn It On

Oke, kali ini kita selesai membuat automation dengan rule yang sudah kita buat. Selanjutnya bila teman-teman kembali ke list Rule Automation, maka teman-teman akan melihat rule yang barusan dibuat sudah aktif.

New Rule Activated

Selanjutnya, kita akan mencoba apakah rule tersebut berjalan dengan sukses. Kita buat sebuah card Story dengan 2 buah card Task yang berelasi dengan card Story tersebut. Kira-kira kita buat seperti berikut :

Story with 2 Task

Kemudian kita coba ubah TJ-39, TJ-40, TJ-41 menjadi In Progress. Kira-kira seperti berikut :

All In Progress

Kemudian kita coba ubah status TJ-40 dan TJ-41 menjadi Done, maka apa yang akan terjadi? Yuph, TJ-39 akan secara otomatis berubah menjadi Done. Pada notifikasi pun, teman-teman akan melihat bahwa Automation berjalan.

All Done

Automate Done

 

Mungkin itulah sedikit informasi yang mudah-mudahan bermanfaat untuk teman-teman, khususnya yang saat ini berkecimpung di Jira dalam me-manage project-nya.

Mungkin cukup sekian dari saya, selamat malam dan terima kasih.