Materi
Sebuah koperasi simpan pinjam di Yogyakarta memindahkan aplikasi kasirnya ke SQLite. Setiap uang yang berpindah harus meninggalkan jejak di tabel mutasi, dan total seluruh saldo hanya boleh berubah karena setoran atau pembayaran, bukan karena transfer antaranggota. Misi ini memeriksa kodemu lewat empat pemeriksaan: kondisi awal sebelum fungsi dipanggil, hasil pada skenario berhasil, hasil pada skenario gagal, dan konsistensi data akhir. Contoh konsistensi: total saldo sebelum dan sesudah transfer sama, dan jumlah baris mutasi sebuah transfer adalah nol.
Urutan kerja yang dipakai di semua latihan misi ini: periksa masukan yang bisa diperiksa tanpa basis data sebelum BEGIN; buka transaksi; jalankan pernyataan dan periksa rowcount pada setiap langkah yang harus mengenai tepat satu baris; bila ada yang gagal, ROLLBACK lalu laporkan kegagalannya; bila semuanya berhasil, COMMIT satu kali.