Software Quality Assurance
Software Quality Assurance merupakan sebuah proses yang sistematis untuk memeriksa apakah sebuah software berjalan sebagaimana mestinya. Quality Assurance adalah proses sitematis untuk memeriksa apakah sebuah software telah dikembangkan sesuai dengan kebutuhan yang telah ditentukan sebelumnya. SQA terbagi menjadi 2 bagian yaitu, Quality Assurance Tester dan Quality Assurance Engineer. Keduanya memiliki keterikatan tugas satu sama lain, namun tedapat perbedaan tugas dan fungsinya. QA Tester memiliki tugas utama yaitu diantaranya melakukan pengujian terhadap perangkat atau emulator, membuat alur pengujian, serta membuat laporan hasil pengujian. Sementara QA Engineer bertugas untuk membuat porgram pengujian otomatis, membuat laporan pengujian, memberikan masukan atas aplikasi yang diuji, serta melakukan komunikasi dengan pihak-pihak yang berkepentingan, seperti pengembang UI/UX, back end atau product manager (PM). Untuk proses QA, dibutuhkan kemampuan-kemampuan:
- Mindset Pengujian
- Analisa & Pengujian Fungsional
- Perbaikan Proses
- Defect Management
- Pengujian Keamanan
- Pengujian Performa
- Otomasi
- User Acceptance Testing (UAT)
Kemudian untuk menjalankan proses software QA, diperlukan antara lain:
- Laptop (Linux OS/ Mac)
- Device utk pengujian
- Pengetahuan pemrograman
- Terbiasa dengan Git
Pengujian terhadap software sendiri terbagi menjadi dua jenis:
- Pengujian Manual
Hal ini biasanya dilakukan untuk mengecek aliran aplikasi, memeriksa cacat (desain atau pemrograman), pengujian di sistem operasi berbeda, serta uji migrasi dari versi aplikasi terdahulu
- Pengujian Otomatis
Pengujian ini terdiri dari pengujian regresi, pengujian otomatis yang dilakukan pada malam hari, pelaporan otomatis (melalui email atau tool kolaborasi seperti slack), automated build, dan automated publish.
QA tester maupun QA engineer harus selalu berpikiran terbuka. Dengan sikap terbuka untuk mempelajari hal-hal yang baru, diharapkan QA dapat memberikan kontribusi positif untuk menghasilkan produk software yang baik.
Proses SRE (Software Reliability Engineering)
Software Reliability Engineering (SRE) adalah disiplin untuk menciptakan sistem perangkat lunak yang sangat skalabel dan andal dengan menerapkan praktik rekayasa perangkat lunak untuk masalah infrastruktur dan operasi. Software Reliability Engineering difokuskan pada teknik rekayasa untuk mengembangkan dan memelihara sistem perangkat lunak yang keandalannya dapat dievaluasi secara kuantitatif. Untuk memperkirakan serta memprediksi keandalan sistem perangkat lunak, data kegagalan perlu diukur dengan benar dengan berbagai cara selama tahap pengembangan dan operasional perangkat lunak. SRE adalah engineer yang menjadi penghubung antara developer dan operation. SRE harus bisa menerapkan konsep software engineering dalam membangun infrastruktur aplikasi atau website agar lebih reliable. Peran dari SRE yaitu contohnya dapat mengatasi atau mencari alternatif ketika sebuah website atau aplikasi dikunjungi oleh banyak orang dalam waktu bersamaan aplikasi atau website agar tidak down dan tetap bisa berjalan sesuai fungsinya. SRE bekerja lebih di balik layar daripada developer. SRE menjadi garda terdepan saat website atau aplikasi ada problem. Secara umum, beberapa pilar IT yang harus dikuasai oleh SRE, yaitu
- Development
- Manajemen Konfigurasi
- Tes dan Integrasinya
- Administrasi sistem
- Customer support.
Manajemen konfigurasi, administrasi sistem, serta tes dan integrasinya merupakan bagian dari pekerjaan sehari-hari seorang SRE. Akan tetapi, dengan alasan sering berkolaborasi dengan developer, SRE wajib mengetahui prinsip development. Sementara itu, kemampuan customer support dibutuhkan untuk menunjang pelayanan pelanggan sebagai pengguna dari produk yang dijaga reliabilitasnya.