Verification dan Validation (V & V)
Verification: set of task that ensure software correctly implement a single function
Validation: Different set of task yang ensure bahwa software is traceable ke customer requirements
Siapa yang ngetes:
Developer
- Driven by delivery, test gently
Tester
- Must learn system first, Driven by quality, will attempt to break the system.
Misconceptions
- Dev should not do testing at all
- Software should be thrown to wall to strangers who will test mercilessly
- Testers get involved only on testing phase
Testing in the small and large
- Small: Component level to integration of entire system (outward)
- Large: Integration of entire system to component level (inward)
- Unit testing
- Software engineer -> module to be tested diuji pake test case -> result
- Interface
- Local Data Structure
- Boundary Condition
- Independent Path
- Error handling paths
- Integration Testing
- Top down, bottom up integration testing.
- Regression (dites selagi software evolve, pake test case yang sama kaya sebelumnya), smoke testing (Bikin build setiap periode waktu, tes sedemikian rupa supaya error muncul, integrasi build dengan build lainnya dan dites lagi dgn smoke testing)
- Two options: big bang (small system), incremental construction strategy
- Validation Test
Software kalo digabungin belum tentu benar karena interfacingnya mungkin salah, komponen mungkin conflict, dsb.
Test khusus untuk OO software
- Class testing (equivalent ke unit testing)
- Integration: Integrates set of classes required to respond to (1,2)/ Demonstrate(3)
- Thread
- One input/ event
- Use based
- One use case
- Cluster
- One collaboration
- Thread
Test khusus untuk webapp
Diuji oleh controlled number of end users
- Content
- UI (presentation, navigation, functionality)
- Functional Component
- Security
- Performance
Alpha 1 and beta testing 2
- Dev site oleh sejumlah representasi end user, developer ada untuk ngerekam error dan masalah usage
- Satu atau lebih end user site, developer gaada, customer yang ngereport masalah dan melaporkannya ke developer
System Testing
- Recovery
- Bisa nggak recover kalo sengaja dibikin fail dengan beberapa cara
- Security
- Mampu ga mekanisme dalam sistem melindungi dari penetrasi
- Stress
- Mampu ngehandle load yang abnormal (quantity, frequency, volume) ga demand resourcenya
Higher order testing
- Performance Testing
- Deployment Testing
Debugging
3/4 waktu untuk nyari masalah 1/4 waktu untuk fix
Symptom & cause
- Symptom muncul di satu tempat, penyebabnya bisa di tempat yang berbeda.
- Symptom mungkin hilang saat masalah yang ga berhubungan sama symptom itu diselesaikan
- Mungkin ga error tapi bikin symptom, mungkin kesalahan compiler, mungkin dari asumsi orang, mungkin ga selalu muncul (hanya saat tertentu saja
Bugs
Debugging cara
Bruteforce (print semua variabel, pada setiap langkah, liat yang diprint dan cari errornya), backtracking (dari symptom error, mundur terus 1 langkah ampe ketemu sumber errornya), cause elimination (induksi atau deduksi untuk mengisolasi sumber error)
Correcting error
- Error bisa direproduce ga di bagian lain program
- Fix yang gw buat bisa ngenalin error lagi ga
- Langkah apa yang bisa kita lakukan untuk prevensi error