Test, Test, and Test for Software

Benedictus Alvin
PDB+R
Published in
4 min readApr 30, 2019

Halo semua, kembali dengan saya Bene. Kali ini saya akan menjelaskan beberapa jenis Software Testing seperti Mock, Stub, Stress, dan Penetration Testing. Silahkan dibaca baik-baik semuanya.

Software Testing

Software Testing adalah sebuah proses yang dilakukan untuk menyelidiki apakah suatu aplikasi sudah memenuhi kualitas dan berjalan sesuai dengan yang diinginkan developer ataupun user.

Test yang dilakukan tidak hanya meliputi testing terhadap code, namun juga mengenai waktu eksekusi program, adanya bugs pada aplikasi, dan memverifikasi apakah aplikasi sudah layak untuk digunakan.

Secara umum, berikut adalah komponen-komponen yang biasa diujikan:

  • Meets the requirements that guided its design and development,
  • Responds correctly to all kinds of inputs,
  • Performs its functions within an acceptable time,
  • It is sufficiently usable,
  • Can be installed and run in its intended environments,
  • Achieves the general result its stakeholders desire.

Dan agar aplikasi kita dapat memenuhi setiap syarat komponen diatas dengan baik. Maka perlu dilakukan beberapa jenis testing dalam aplikasi kita, diantaranya Mock Testing, Stub Testing, Stress Testing, dan Penetration Testing.

Mock Testing ? Apa itu ?

Mock Testing adalah testing dengan menghasilkan suatu objek terlebih dahulu (set expectations), kemudian objek tersebut akan dibandingkan dengan suatu output pada suatu proses yang diujikan. Hal ini dilakukan agar proses tersebut dapat menghasilkan output sesuai dengan hasil yang diinginkan. Dalam Mock, hasil yang diinginkan dibuat dalam suatu objek terlebih dahulu. Setelah itu akan dibandingkan dengan output. Mock Testing terdiri 4 tahap, yaitu :

  • Initialize
  • Set expectations
  • Exercise
  • Verify

Berikut adalah contoh implementasi Mock Testing pada project kami:

Setelah objek diatas dibuat, maka dapat diujikan seperti berikut :

Mock Test

Dari contoh diatas dapat dilihat juga bahwa mock object yang diujikan hanya akan diakses oleh fungsi test tersebut. Mock object tidak terdaftar dalam database kita, hal itu membedakan data yang dibuat saat ingin melakukan mock testing dan saat ingin melakukan data seeding.

Stub Testing ? Apa lagi itu ?

Berbeda dengan Mock Testing, Stub Testing adalah testing dengan memasukan input pada suatu proses dan membuat proses tersebut mengembalikan fixed value, throw exception, atau output yang diinginkan suatu proses. Bila pada Mock Testing kita perlu membuat objek untuk dibandingkan, Stub Testing menggunakan output yang memang diinginkan proses tersebut. Stub Testing biasanya digunakan untuk mensimulasikan behavior dari suatu proses yang ada dalam aplikasi. Tahapan pada Stub Testing mirip dengan Mock Testing, namun tahap set expectations tidak dimiliki Stub Testing, sebab proses ini tidak memerlukan kita untuk membuat objek yang akan dibandingkan. Berikut tahapan dari Stub Testing:

  • Initialize
  • Exercise
  • Verify

Berikut adalah contoh implementasi Stub Testing pada project kami:

Stress Testing ? Hah masih ada lagi ?

Nah, berbeda dari kedua test sebelumnya. Stress Testing adalah testing yang digunakan untuk memeriksa performa aplikasi. Performa disini meliputi sejauh mana kapasitas request dan jobs pada environtment aplikasi tersebut. Selain melihat response time, stress testing juga melihat bagaimana alokasi memory dan cpu. Maka dengan adanya stress testing, kita dapat menentukan sejauh mana aplikasi dapat berjalan dengan baik.

Pengaplikasian yang kami lakukan hanya dengan melihat code pada masing-masing test.py serta melihat performa melalui runner gitlab.cs.ui.ac.id

Penetration Test ? (…)

Oke, masuk ke testing yang terakhir yaitu Penetration Testing. Testing ini berguna sebagai simulasi cyberattack yang bisa dilakukan terhadap jaringan demi menemukan kelemahan pada suatu aplikasi. Penetration Testing penting karena dapat menemukan celah keamanan dari suatu aplikasi agar dapat segera diperbaiki. Berikut adalah 5 cara dari Penetration Testing, yaitu:

  1. Perencanaan dan Pengintaian: Pendefinisian scope dan goal dari test yang akan dilakukan, seperti target dan metode yang digunakan.
  2. Scanning: Memahami respon dari target terhadap berbagai percobaan attack. Dapat dilakukan dengan memeriksa code dan data yang ada.
  3. Gaining Access: Melakukan berbagai attack seperti cross site scripting, SQL injection, dan lain-lain. Selanjutnya tester akan mencoba melakukan eksploitasi kelemahan tersebut diantaranya dengan menambah privilege, atau mencuri data.
  4. Maintaining Access: Melihat apakah kelemahan tersebut dapat digunakan untuk tetap mengakses kedalam sistem.
  5. Analysis: Menganalisa kelemahan yang dapat dieksploitasi, data sensitif yang dapat diakses, dan berapa lama waktu pentester dapat berada di dalam sistem tanpa terdeteksi.

Proses yang telah kami lakukan untuk aplikasi kami adalah proses analysis. Hal itu meliputi data sensitif yang dapat diakses seperti password untuk security awareness.

Oke deh semua, sekilas pembahasan mengenai berbagai macam software testing dari saya. Mungkin ini jadi tulisan terakhir saya bersama dengan kelompok PDB+R (ಥʖ̯ಥ)~~ Semoga semua tulisan yang kami buat dapat bermanfaat untuk semua pembaca. Sampai jumpa di lain waktu, terima kasih atas perhatian kalian semua!!

Bye Semuanyaa

--

--