Jika Anda berurusan dengan kode legacy dalam jumlah besar yang saat ini tidak diuji, dapatkan cakupan tes sekarang alih-alih menunggu penulisan ulang hipotetis besar di masa depan adalah langkah yang tepat. Mulai dengan menulis tes unit tidak.
Tanpa pengujian otomatis, setelah melakukan perubahan pada kode Anda perlu melakukan beberapa pengujian ujung ke ujung aplikasi secara manual untuk memastikan itu berfungsi. Mulailah dengan menulis tes integrasi tingkat tinggi untuk menggantikannya. Jika aplikasi Anda membaca file, memvalidasinya, memproses data dengan cara tertentu, dan menampilkan hasil tes yang Anda inginkan yang menangkap semua itu.
Idealnya Anda akan memiliki data dari rencana pengujian manual atau bisa mendapatkan sampel data produksi aktual untuk digunakan. Jika tidak, karena aplikasi sedang dalam produksi, dalam banyak kasus itu melakukan apa yang seharusnya, jadi hanya membuat data yang akan mencapai semua poin tinggi dan menganggap output sudah benar untuk saat ini. Ini tidak lebih buruk daripada mengambil fungsi kecil, dengan asumsi itu melakukan apa yang namanya atau komentar menyarankan itu harus dilakukan, dan menulis tes dengan asumsi itu berfungsi dengan benar.
IntegrationTestCase1()
{
var input = ReadDataFile("path\to\test\data\case1in.ext");
bool validInput = ValidateData(input);
Assert.IsTrue(validInput);
var processedData = ProcessData(input);
Assert.AreEqual(0, processedData.Errors.Count);
bool writeError = WriteFile(processedData, "temp\file.ext");
Assert.IsFalse(writeError);
bool filesAreEqual = CompareFiles("temp\file.ext", "path\to\test\data\case1out.ext");
Assert.IsTrue(filesAreEqual);
}
Setelah Anda mendapatkan cukup dari tes tingkat tinggi ini yang ditulis untuk menangkap operasi normal aplikasi dan kasus kesalahan yang paling umum jumlah waktu yang Anda harus habiskan menggedor keyboard untuk mencoba dan menangkap kesalahan dari kode melakukan sesuatu selain dari apa Anda pikir itu seharusnya dilakukan akan turun secara signifikan membuat refactoring masa depan (atau bahkan penulisan ulang besar) jauh lebih mudah.
Karena Anda dapat memperluas cakupan tes unit, Anda dapat pare down atau bahkan pensiun sebagian besar tes integrasi. Jika aplikasi Anda membaca / menulis file atau mengakses DB, menguji bagian-bagian itu secara terpisah dan mengejeknya atau meminta pengujian Anda dimulai dengan membuat struktur data yang dibaca dari file / database adalah tempat yang jelas untuk memulai. Sebenarnya menciptakan infrastruktur pengujian akan memakan waktu lebih lama daripada menulis serangkaian tes cepat dan kotor; dan setiap kali Anda menjalankan tes integrasi 2 menit alih-alih menghabiskan waktu 30 menit secara manual menguji sebagian kecil dari apa yang dicakup tes integrasi, Anda sudah mendapatkan kemenangan besar.