The best techniques for learning is sharing what you have learned.
Pengenalan Software Quality Assurance
Software Quality Assurance (SQA) itu adalah role yang ngelakuin test untuk meriksa produk yang lagi dikembangin apakah udah sesuai requirement client ato nggak. Trus siapa yang ngelakuin? mereka disebut sebagai QA Engineer / QA Tester / Test Engineer / Software Developer in Test.
Tugasnya ngapain? umumnya bikin skenario pengujian untuk nguji suatu aplikasi atau produk sebelum di-release ke publik. Setelah dibikin maka skenario itu akan diekseskusi ke aplikasi yang akan dilakakukan pengujian. Meski pengujian telah selesai dilakuin QA Engineer harus bikin laporan dari hasil pengujian tadi.
Oh iya, btw ada 3 environment dalam tahapan pembuatan software. Pertama env development, kedua stagging/demo dan yang terkakhir production (go live). Nah, proses testing biasanya bermain di environment stagging/demo.
Disclaimer again: gue juga belum pernah kerja dengan 3 environment ini si, klo yang udah pernah dan yang gue omongin salah komen aja ntar buat benerin ehehehe
QA Manual vs QA Automation
QA Manual, klo manual maka melakukan pengujiannya secara manual. Klo QA Automation berarti melakukan pengujiannya secara otomatis menggunakan automation testing tools (ngoding dikit, tapi banyak juga si aslinya). Apa aja toolsnya? banyakkkk ada selenium, cypress, robot framework, katalon studio dll dah wkwkwk
Kelebihan kekurangan QA Manual & QA Automation
Kelebihan Automation Testing
- Pengujiannya bisa cepet dan efisien
- Dapat dilakuin kapanpun dengan efisiensi waktu
- Bisa generate report secara otomatis
Kekurangan Automation Testing
- Bisa ngoding agar script testnya jalan
- Setup awalnya lumayan lama si
Kelebihan Manual Testing
- Testnya fokus ke hasil di end usernya
- Fleksibel dan bisa adaptasi dengan software yang dikembangin
Kekurangan Manual Testing
- Pengujian waktunya lama
- Effortnya lebih banyak waktu bikin report
Conclusion
Meski QA Engineer lebih baik dalam beberapa hal tapi baiknya ada QA Manual juga. karena ada beberapa test yang ga bisa dihandle oleh QA Engineer, contohnya captcha. Baiknya klo automation tool dicombine ama manual, ya intinya biar bisa ningkatin product quality lah.
Jenis-Jenis Testing
Pengujian sistem, berarti menguji seluruh program software secara lengkap dan terintegrasi.
Berikut ini merupakan jenis jenis pengujian yang perlu diketahui oleh seorang QA pada software.
1. System Testing
System testing adalah pengujian untuk memastikan bahwa keseluruhan sistem berfungsi dan bahwa sistem telah memenuhi persyaratan pengguna (user requirement). System testing biasanya dilakukan di akhir setiap iterasi untuk mengidentifikasi isu-isu penting, seperti masalah performance dari software. Biasanya test ini harus dilakukan sesering mungkin.
2. Unit Testing
Unit Testing adalah pengujian software di mana QA menguji suatu unit program layak untuk tidaknya dipakai. Unit testing ini fokusnya pada pengujian unit yang terkecil pada desain perangkat lunak (komponen atau modul perangkat lunak). Karena dalam sebuah software banyak memiliki unit-unit kecil maka untuk mengujinya biasanya dibuat program kecil atau main program untuk menguji unit-unit software. Unit-unit kecil ini dapat berupa fitur atau fungsi dan pengujian unit biasanya dilakukan saat kode program dibuat.
3. Integration Testing
Berbeda dengan unit tesing, integration testing adalah pengujian dari hasil pengabungan unit-unit yang ada di dalam software. Biasanya QA menguji bagaimana unit-unit tersebut bekerja sebagai suatu kombinasi, bukan lagi sebagai suatu unit yang individual. Integration testing sebaiknya dilakukan secara bertahap untuk menghindari kesulitan penelusuran jika terjadi kesalahan error / bug.
4. Usability Testing
Usability test adalah pengujian yang dilakukan untuk memastikan apakah software sudah sesuai dengan persyaratan dari pengguna. Umumnya usability test mengevaluasi persyaratan fungsional program dan kualitas dari user interface. User berinteraksi dengan sistem untuk menentukan apakah fungsi telah seperti yang diharapkan dan apakah user interface membuat sistem dapat mudah digunakan. Pengujian ini sering dilakukan untuk mendapatkan feedback yang cepat dalam meningkatkan interface dan mengkoreksi kesalahan dalam komponen perangkat lunak.
5. Performance Testing
Performance test adalah integration dan usability test yang menentukan apakah system dapat memenuhi kriteria kinerja berbasis waktu seperti response time atau throughput. Response time menentukan batas waktu maksimum yang diijinkan dari respon software.
6. Smoke Testing
Smoke testing adalah pengujian yang akan dilakukan setelah software yang di dibuat untuk memastikan bahwa fungsi-fungsi penting dari program tersebut bekerja dengan baik. Smoke test biasanya dilakukan setiap hari atau beberapa kali per minggu.
7. Stress Testing
Stress Testing adalah pengujian yang biasanya dilakukan dalam membuat sebuah website, dimana stress testing dilakukan untuk mengetahui sekuat apa server website kita menampung visitor dalam website tersebut, dengan cara melakukan hit dummy ke website menggunakan tools.
8. Sanity Testing
Sanity Testing adalah Software testing yang akan dilakukan setelah software yang dibuat sudah hampir jadi sekaligus dengan fungsi-fungsi lengkapnya yang sudah jadi, dengan catatan bug-bug yang ditemukan pada saat smoke testing sudah berhasil di perbaiki. Tujuan dari sanity testing ini tentunya untuk memastikan bahwa bug-bug yang telah di perbaiki pada saat smoke testing sudah selesai diperbaiki dan tidak ada masalah lebih lanjut serta untuk menentukan bahwa fungsi yang diinginkan bekerja seperti yang diharapkan.
9. Regression Testing
Regression Testing adalah jenis pengujian yang dilakukan saat mengembangkan software untuk mengetahui apakah fungsional sistem berjalan dengan baik. Singkatnya, tujuan utamanya yaitu untuk meminimalisir bug yang mungkin akan muncul setelah adanya pembaharuan fitur pada software.
Itulah jenis-jenis software testing yang dilakukan harus dilakukan oleh seorang QA. Jadi, intinya semua jenis software testing diperlukan untuk memastikan sebuah software dapat berjalan dengan baik dan sesuai dengan yang diharapkan.
Pengenalan Test Case
Test Case itu serangkaian tindakan yang dijalankan untuk memverikasi fitur atau fungsionalitas tertentu dari suatu perangkat lunak yang sedang dikembangkan. Test case berisi langkah-langkah pengujian, data uji, prasyarat, pasca kondisi yang dikembangkan untuk skenario pengujian khusus untuk memverifikasi prasyarat apapun.
contoh:
Test Case ID: id dari test cases
Modul/Story: Modul yang sedang dites
Test Objective: Objektif yang akan dites pada modul
Precondition: Kondisi sebelumnya saat akan melakukan test pada objektif yang telah ditentukan
Step/Skenario: Skenario pengetesan
Test Data: Data/Value yang ada dalam pengetesan
Expected Result: Hasil yang diharapkan dari pengetesan.
Actual Result: Hasil yang sebenarnya dari pengetesan.
Status: Status pengetesan, apakah berhasil ato gagal.
Manual Web Testing
Jadi disini kita akan coba ngelakuin manual web testing dengan ketentuan kek gini:
- Demo website: https://www.saucedemo.com
- Skenario yang sudah dibuat (Sheet Saucedemo) 👇🏽
- Eksekusi test
- Buat Report
BDD, Cucumber dan Gherkin
souce: cucumber
BDD adalah cara kerja tim perangkat lunak yang menutup kesenjangan antara business people dan tehcnical peple dengan:
- Mendorong kolaborasi lintas peran untuk membangun pemahaman bersama tentang masalah yang harus dipecahkan.
- Bekerja dalam iterasi kecil dan cepat untuk meningkatkan umpan balik dan aliran nilai
- Memproduksi dokumentasi sitem yang secara otomatis diperiksa terhadap perilaku sistem.
Test Driven Development (TDD) biasanya melibatkan penulisan tes untuk funsionalitas tertentu, menjalankan test, lalu melihat testnya failed dan kemudian menulis kode untuk membuat test menjadi passed. Demgan begitu, developer dapt yakin bahwa mereka telah menulis kode yang berfungsi dan developer lain yang menggunakan kembali komponen dapat menjalankan pengujian untuk memastikan bahwa kode mereka sendiri akan berfungsi dengan baik.
Behaviour Driver Development (BDD) (metodologi )biasanya melibatkan Developer, Test Engineer, dan Product Manager (atau stakeholder lainnya). Kelompok tersebut bertemu untuk menghasilkan contoh konkret acceptance criteria dalam user story. Contoh-contoh ini dijelaskan menggunakan bahasa seperti Gherkin, dan dimasukkan ke dalam file fitur. file fitur diubah menjadi spesifikasi yang dapat dieksekusi dimana developer kemudian dapat menulis tes yang dapat dieksekusi yang sebenarnya.
Cucumber adalah tools yang mendukung BDD. Cucumber membaca spesifikasi yang dapat dieksekusi dan ditulis dalam teks biasa dan memvalidasi bahwa perangkat lunak melakukan apa yang dikatakan spesifikasi tersebut. Spesifikasi terdiri dari beberapa examples, atau skenario. Setiap skenario adlah daftar lagnkah2 yang harus dilalui cucumber. Cucumber memverifikasi bahwa perangkat lunak sesuai dengan spesfikasi dan menghasilan report yang menunjukan v success atau x failure untuk setiap skenario. Agar cucumber memahami skenario, maka harus mengikuti beberpa aturan sintaks dasar yang disebut dengan Gherkin.
Contoh Gherkin Scenario:
Scenario: User can sign in Given a valid user with username "hiptest" When I login as "hiphest" Then I should see a message "Welcome, hiptest"
Berikut adalah contoh Gherkin scenario untuk saucedemo.com
Scenario: As a user i want to login with valid credentials Given Open saucedemo.com demo web app And Input username "standart_user" And Input password "secret_sauce" When User click login button Then Successfully login And Navigate to homepage
Berikut contoh test case dari BDD Gherkin
API Testing
Aplication Programming Interface (API) adalah antarmuka dari software yang memungkinkan untuk berinteraksi satu sama lain tanpa campur tangan pengguna. API adalah kumpulan fungsi dan prosedur software. Secara sederhana, API berarti kode software yang dapat diakses atau dieksekusi. API didefinisikan sebagai kode yang membantu 2 software berbeda untuk bertukar data dan berkomunikasi satu sama lain.
Cara Kerja API
Analogi contoh cara kerja API in real life tuh kaya gini, misal lo pergi ke resto dan setelah waiter ngasih menu, lo bakal pilih menu yang bisa dicustom, misal pesen burger tapi gapake acar. Gk berapa lama lo bakal daper pesenan lo dari waiters. tapi sebenernya proses yang terjadi gk sesederhana yang lo liat. karena proses di belakangnya yang lumayan kompleks.
gue as client, waiter as api dan koki as servernya. prosesnya gitu kira2. bisa bayangin gak? wkwkwk
API Testing
API Testing adalah jenis pengujian software untuk validasi api-nya. Tujuan pengujian API-nya adalah untuk memeriksa fungsionalitas, keandalan, kinerja dan keamanan antarmuka pemrograman. sumpah gue sendiri bingung itu ngetik apa, ntar gue perbaiki berdasarkan pemahaman gue. Api testing berkonsentrasi pada lapisan logika bisnis dari arsitektur perangkat lunak.
Method pada REST API
REST API Method yang harus diketahui:
- GET: method get digunakan untuk mengambil data dari server.
- POST: method post digunakan untuk membuat entitas baru. bisa juga untuk mengirim data ke server, misalnya register new user.
- PUT: digunakan untuk update data yang sudah ada.
- DELETE: digunakan untuk menghapus data yang ada pada server.
HTTP Status Code
- 200 OK
- 201 Created
- 400 Bad Request
- 401 Unauthorized
- 403 Forbidden
- 404 Not Found
- 500 Internal Server Error
- 1xx | Informational
- 2xx | Success
- 3xx | Redirection
- 4xx | Client Error
- 5xx | Server Error
Tools API Testing
- Postman
- Katalon
- Jmeter
- Rest assured
- Serenity BDD
- Karate
Pengenalan Postman
Merupakan platform API untuk membangun dan menggunakan API. Postman menyederhanakan setiap langkah siklus hidup API dan menyederhanakan kolaborasi sehingga anda dapat membuat API yang lebih baik dan lebih cepat
Cara menggunakan postman, disini kita akan manfaatin web reqres.in untuk berlatih postman.
- Buat workspace dulu, then name it.
- Buat collection dengan nama reqres.in
- Klik 3dot pada collection dan klik add request
- Set method ke GET
- Set endpoint URL ke “https://reqres.in/api/user?page=2”
- Klik send
API Automation with Karate
Karete itu Open source tool untuk menghubungkan API Automation, Mock, Performance testing dan bahkan UI Automation ke dalam suatu framework.
How to use and setup:
- Install IDE-nya dulu, pakenya Intellij IDEA
- Install plugin cucumber di Intellij-nya
- Bikin project karate test
- Install jdk javanya juga ya jangan lupaaa
- Buka pom.xml lalu tambahkan dependency :
- karate-core
- karate-apache
- karate-JUnit4
- Buat file reqres.feature pada folder src/test/java
- Pada filre reqres buat gherkin skenario macam ni, lalu run
Feature: Bincang QA Karate Test Scenario: Get list user reqres Given url "https://reqres.in/api/users?page=2" When method GET Then status 200
- Untuk report bisa dilihat di folder target/karate-report dan pilih file karate-summary.html. Buka saja file tersebut di browser.
Automation Web UI Testing with Cucumber Selenium Java
Cucumber: tools yang mendukung Behaviour Driven Development (BDD)
Selenium adalah open source tools yang digunakan untuk melakukan otomasi test pada web aplikasi dan melakukan validasi web aplikasi di berbagai browser dan platform. Kita dapat menggunakan beberapa bahasa pemrograman seperti JAva, C#, dan Python untuk membuat testnya. Nah nanti disini kita akan belajar pake java dengan ide-nya selenium webdriver
Java adalah bahasa pemrograman tingkat tinggi, class-based, berorientasi OOP (Object Oriented Programming) yang dirancang untuk memiliki dependensi pada implementasinya.
Versi JDKnya? 15 aja ya
Tools yang dibutuhkan:
- Java JDK versi 15
- Intellij IDEA : code editor
- Maven, untuk menjalankan test dan menggenerate reportingnya
- Plugin Cucumber for java di Intellij.
Setup:
- Install JDK 15
- Install IDE Intellij
- Install plugin cucumber for java di Intellij
- Create new maven project from java 15, then name it cucumber-selenium-java-test
- Buka file pom.xml dan import dependency :
- Cucumber Java
- JUnit
- cucumber-junit
- selenium-java
- cucumber-reporting
- webdriver-manager
- Untuk pom.xml kalian bisa copy dari sini
<dependencies> <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java --> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-java</artifactId> <version>7.3.4</version> </dependency> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.1</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit --> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>7.3.4</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.2.2</version> </dependency> <!-- https://mvnrepository.com/artifact/net.masterthought/cucumber-reporting --> <dependency> <groupId>net.masterthought</groupId> <artifactId>cucumber-reporting</artifactId> <version>5.7.1</version> </dependency> <!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager --> <dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.2.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.0</version> <configuration> <!--Parallel --> <parallel>methods</parallel> <!-- <useUnlimitedThreads>true</useUnlimitedThreads>--> <threadCount>4</threadCount> <perCoreThreadCount>false</perCoreThreadCount> <!--Parallel --> <testFailureIgnore>true</testFailureIgnore> </configuration> </plugin> <plugin> <groupId>net.masterthought</groupId> <artifactId>maven-cucumber-reporting</artifactId> <version>2.8.0</version> <executions> <execution> <id>execution</id> <phase>verify</phase> <goals> <goal>generate</goal> </goals> <configuration> <projectName>Cucumber Selenium Java Test</projectName> <outputDirectory>${project.build.directory}/cucumber-report-html</outputDirectory> <cucumberOutput>${project.build.directory}/cucumber.json</cucumberOutput> </configuration> </execution> </executions> </plugin> </plugins> </build>
- Lalau yang terkahir reload mavennya.
And as always, don’t forget to spread the ❤️ in your life…!
Hello Readers, I’m still tryna to get job in QA role, if you have any information job vacancies about this file please contact me. You can check my resume here