Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Baparekraf Developer Day 2022 - Back-End (Faisal Henry Susanto)

Baparekraf Developer Day 2022 - Back-End (Faisal Henry Susanto)

Faisal Henry Susanto (Praktisi IT)

Judul:
Cara Membangun Strategi dalam Pengujian Otomatis

Informasi event: https://www.dicoding.com/events/4398

Dicoding Indonesia

April 12, 2022
Tweet

More Decks by Dicoding Indonesia

Other Decks in Education

Transcript

  1. Apa yang akan dipelajari • Mengapa melakukan automated testing •

    Jenis testing dan tool yang digunakan • Langkah dan strategi automated testing
  2. Tentang Faisal Susanto • Father, Husband, Runner • AWS Certified

    Solution Architect • Professional IT dengan pengalaman lebih dari 20 tahun • Saat ini bekerja di RSM Indonesia sebagai Senior Manager – Technology Consultant Faisal Susanto Find me on strava
  3. Keuntungan melakukan automated testing • Cepat • Dapat diandalkan •

    Dapat digunakan kembali • Meningkatkan ketepatan • Menghemat waktu dan biaya • Mengurangi human error • Memungkinkan standarisasi
  4. Hal-hal yang harus diperhitungkan dalam automated testing • Memerlukan waktu

    dan dedikasi / sumber daya yang cukup untuk membuatnya • Harus dimaintain selayaknya software komersial • Bersifat statis.
  5. Automated Testing Mythbusters Some myths about test automation are as

    follows: 1. 100% automation is possible 🡪 it is not possible and not recommended. 2. Test automation saves a lot of time 🡪 it depends on test automation strategy. 3. Test automation scripts are faster than manual testing 🡪 it is not always true. 4. Test automation eliminates needs for manual efforts 🡪 it is not true because scripts need regular maintenance. 5. It generates more defects than manual testing 🡪 it is not true.
  6. Keuntungan melakukan automated testing • Cepat • Dapat diandalkan •

    Dapat digunakan kembali • Meningkatkan ketepatan • Menghemat waktu dan biaya • Mengurangi human error • Memungkinkan standarisasi
  7. Jenis Testing dan tool yang digunakan Pada dasarnya software testing

    terdiri dari dua jenis yaitu Functional dan non- functional test seperti ditunjukkan pada diagram berikut. Disini kita akan membahas mana saja test yang dapat dilakukan secara otomatis
  8. Documentation Test Documentation Test Seringkali developer fokus kepada pembuatan software

    dan “lupa” bahwa testing akan/sebaiknya dilakukan oleh orang lain sehingga memerlukan dokumentasi selengkap mungkin. Kebutuhan mengenai dokumentasi ini makin terasa dengan semakin globalnya pembuatan software sehingga bisa saja software dibuat oleh tim yang berbeda baik lokasi, kewarganegaraan bahkan benua. Berikut adalah alasan mengapa sebaiknya test case dibuat.
  9. Documentation Test Diatas adalah sample test case yang menunjukkan informasi-informasi

    yang sebaiknya ada Test case ini dibuat dalam sebuah table (umumnya menggunakan excel) untuk mempermudah organisasi, distribusi dan juga komunikasi antar tim yang terlibat
  10. Performance Testing Performance Testing Performance Testing dilakukan untuk memastikan sistem

    / aplikasi yang akan digunakan dapat memenuhi tingkat performa tertentu yang diminta oleh pengguna. Berikut ditunjukkan beberapa jenis performance testing yang sering dilakukan •Load testing – checks the application’s ability to perform under anticipated user loads. The objective is to identify performance bottlenecks before the software application goes live. •Stress testing – involves testing an application under extreme workloads to see how it handles high traffic or data processing. The objective is to identify the breaking point of an application. •Endurance testing – is done to make sure the software can handle the expected load over a long period of time. •Spike testing – tests the software’s reaction to sudden large spikes in the load generated by users. •Volume testing – Under Volume Testing large no. of. Data is populated in a database and the overall software system’s behavior is monitored. The objective is to check software application’s performance under varying database volumes. •Scalability testing – The objective of scalability testing is to determine the software application’s effectiveness in “scaling up” to support an increase in user load. It helps plan capacity addition to your software system.
  11. Performance Testing Arsitektur Aplikasi Sebelum memilih tool testing, perlu diperhatikan

    arsitektur dari aplikasi yang dibuat. Dibawah ini adalah gambaran dasar dari arsitektur aplikasi untuk melihat bagaimana sebuah aplikasi digunakan.
  12. Security Testing Security testing dilakukan untuk menemukan kelemahan (vulnerability) dari

    aplikasi Security sendiri adalah topik yang sangat luas. Disini kita hanya akan membicarakan hal-hal yang bisa diotomasikan.
  13. Security Resources OWASP Foundation www.owasp.org OWASP (Open Web Application Security

    Project) adalah komunitas online yang bertujuan meningkatkan keamanan dari aplikasi/software. OWASP banyak direferensikan dan direkomendasikan untuk digunakan oleh professional yang berkecimpung di bidang keamanan.
  14. Security Testing Tool Berikut adalah contoh tools open-source yang dapat

    digunakan untuk melakukan security testing yaitu OpenVAS dan OWASP ZAP.
  15. Performance Testing Performance Testing dilakukan untuk memastikan sistem / aplikasi

    yang akan digunakan dapat memenuhi tingkat performa tertentu yang diminta oleh pengguna. Berikut ditunjukkan beberapa jenis performance testing yang sering dilakukan. •Load testing – checks the application’s ability to perform under anticipated user loads. The objective is to identify performance bottlenecks before the software application goes live. •Stress testing – involves testing an application under extreme workloads to see how it handles high traffic or data processing. The objective is to identify the breaking point of an application. •Endurance testing – is done to make sure the software can handle the expected load over a long period of time. •Spike testing – tests the software’s reaction to sudden large spikes in the load generated by users. •Volume testing – Under Volume Testing large no. of. Data is populated in a database and the overall software system’s behavior is monitored. The objective is to check software application’s performance under varying database volumes. •Scalability testing – The objective of scalability testing is to determine the software application’s effectiveness in “scaling up” to support an increase in user load. It helps plan capacity addition to your software system.
  16. Functional Testing Functional Testing Unit Test System Test Interface Integration

    Test Regression Apakah bisa diotomasikan? User Acceptance
  17. Functional Testing Ada biaya yang muncul dari setiap kegiatan testing

    dan sebaiknya test yang semakin mahal dilakukan setelah test yang lebih murah selesai dilaksanakan secara sukses. Gambar diatas menunjukkan jenis, scope dan tanggung jawab tim yang terlibat dalam melakukan testing.
  18. Unit Test Unit Test Sesuai namanya, unit test dilakukan terhadap

    bagian terkecil dari sebuah aplikasi atau program. Unit test dilakukan oleh developer dan umumnya dilakukan untuk memastikan fungsi/prosedur yang ditulis dapat berfungsi sesuai yang diinginkan. Unit test umumnya tidak dapat dilakukan oleh pengguna/user karena tidak ada GUI. Gambar diatas menunjukkan unit test yang dilakukan menggunakan tools MS Unit Test.
  19. Integration / End to End Test Integration Test Integration Test

    dilakukan untuk memverifikasi Unit/modul yang telah dibuat oleh developer dapat bekerja dengan unit/modul yang telah ada atau dibuat developer lainnya. Tentu saja unit yang akan diuji di integration test telah melewati tahap Unit Test dengan sukses. Tergantung dari skala nya, unit test ini bisa hanya bersifat one time atau end to end. Semakin banyak yang diintegrasikan maka semakin kompleks dan mahal test tersebut.
  20. UI Test (Automated) UI Testing GUI adalah komponen paling penting

    dari aplikasi seluler atau web apa pun. Bagaimanapun, berinteraksi dengan UI adalah cara pengguna mengakses fungsionalitas inti dari aplikasi apa pun. Proses pengujian UI aplikasi untuk memverifikasi fungsinya dikenal sebagai pengujian UI. Ini mencakup semuanya dengan benar mulai dari memverifikasi logika terkecil, alur kerja UI, navigasi, transisi, perhitungan, memvalidasi semua tombol, dll. Umumnya , tim QA melakukan tes ini secara manual. Namun, munculnya metodologi Agile telah mendorong tim untuk mengadopsi otomatisasi untuk siklus pengujian mereka agar rilis lebih cepat. Kita dapat melakukan UI testing dengan menggunakan selenium. Tentu saja ada produk lain baik open source maupun licensed yang juga dapat digunakan untuk UI testing.
  21. Automated Testing Strategy Tim developer professional sebaiknya menempatkan testing pada

    prioritas yang sama dengan pembuatan aplikasi. Kita telah review bersama bahwa Testing, apalagi Automated Testing adalah hal yang cukup kompleks dan memakan sumber daya yang cukup besar. Jika perusahaan anda telah memutuskan untuk melakukan automated testing, maka diperlukan strategi implementasi yang tepat dan investasi secara berkelanjutan. Automated Testing Lifecycle
  22. Decision to automate testing Perlu dipikirkan dari functional dan non-functional

    test yang kita bahas, bagian mana yang akan diotomasikan. Test berikut umumnya cocok untuk dilakukan secara otomatis: • Memakan waktu jika dilakukan manual • Memerlukan test yang banyak • Dilakukan di banyak jenis klien (browser, OS, hardware) • Ada definisi pass/fail yang jelas Test berikut umumnya tidak cocok dilakukan secara otomatis: • Hanya dilakukan 1 x • Berdasarkan persepsi visual • Tidak jelas kriteria pass/fail Automated Testing Lifecycle
  23. Test Tool Acquisition Jika kita memutuskan untuk menggunakan (misalnya) Selenium

    Apakah ada resource/orang yang bisa menggunakannya? Apakah sulit mendapatkan training? Berapa biayanya? Automated Testing Lifecycle
  24. Test Introduction Process Dimanakah Automated Testing ini akan dilakukan? Sejatinya,

    automated testing saat ini sering kali digunakan pada fase integration test, baik terbatas maupun end to end. Apakah ini akan dilakukan secara internal, atau saat di tempat pelanggan? Apakah ini dilakukan sebagai permintaan/requirement dari pelanggan? Automated Testing Lifecycle
  25. Test Planning, design & development Disini perusahaan anda telah berkomitmen

    untuk melakukan investasi pada automated testing. Maka Testing Engineer anda (Sebaiknya dedicated) akan mulai membuat testing environment, test tool dan juga sosialisasi penggunaan test environment dan prosedurnya. Automated Testing Lifecycle
  26. Execution and Management of Test Automated Testing telah diimplementasikan di

    perusahaan/tim anda dan live! Automated Testing Lifecycle
  27. Test Program, review and assessment Disini dilakukan kajian/review dari pelaksanaan

    automated testing. Selain dari sisi tools dan performance, ada baiknya juga dilakukan review dari sisi culture dan pelaksanaan dokumentasi misalnya dari test cases yang ada. Automated Testing Lifecycle