Keduanya menggambarkan konsistensi perilaku aplikasi, tetapi "ketahanan" menggambarkan respons aplikasi terhadap inputnya , sementara "toleransi kesalahan" menggambarkan respons aplikasi terhadap lingkungannya .
Sebuah aplikasi kuat ketika dapat bekerja secara konsisten dengan data yang tidak konsisten. Sebagai contoh: aplikasi peta kuat ketika dapat mengurai alamat dalam berbagai format dengan berbagai kesalahan ejaan dan mengembalikan lokasi yang bermanfaat. Pemutar musik kuat ketika dapat melanjutkan decoding MP3 setelah menemukan bingkai cacat. Editor gambar kuat ketika dapat memodifikasi gambar dengan metadata EXIF tertanam yang mungkin tidak dikenali - terutama jika dapat membuat perubahan pada gambar tanpa merusak data EXIF.
Aplikasi tahan terhadap kesalahan saat aplikasi dapat bekerja secara konsisten di lingkungan yang tidak konsisten. Aplikasi database toleran terhadap kesalahan saat dapat mengakses pecahan alternatif saat primer tidak tersedia. Aplikasi web toleran terhadap kesalahan saat dapat melanjutkan menangani permintaan dari cache bahkan ketika host API tidak dapat dijangkau. Subsistem penyimpanan toleran terhadap kesalahan ketika dapat mengembalikan hasil yang dihitung dari paritas ketika anggota disk sedang offline.
Dalam kedua kasus, aplikasi diharapkan tetap stabil, berperilaku seragam, menjaga integritas data, dan memberikan hasil yang berguna bahkan ketika kesalahan terjadi. Tetapi ketika mengevaluasi ketahanan, Anda mungkin menemukan kriteria yang melibatkan data, sedangkan ketika mengevaluasi toleransi kesalahan, Anda akan menemukan kriteria yang melibatkan waktu aktif.
Satu tidak selalu mengarah ke yang lain. Aplikasi pengenalan suara seluler bisa sangat kuat, memberikan kemampuan luar biasa untuk mengenali ucapan secara konsisten dalam berbagai aksen regional dengan sejumlah besar kebisingan latar belakang. Tetapi jika itu tidak berguna tanpa koneksi data seluler yang cepat, itu tidak terlalu toleran terhadap kesalahan. Demikian pula, aplikasi penerbitan web bisa sangat toleran terhadap kesalahan, dengan banyak redudansi di setiap level, mampu kehilangan seluruh pusat data tanpa gagal, tetapi jika menjatuhkan tabel pengguna dan crash saat pertama kali seseorang mendaftar dengan tanda kutip di nama belakang mereka , itu tidak kuat sama sekali.
Jika Anda mencari literatur ilmiah untuk membantu menggambarkan perbedaan, Anda mungkin mencari di domain tertentu yang menggunakan perangkat lunak, daripada perangkat lunak secara umum. Penelitian aplikasi terdistribusi mungkin tanah subur untuk kriteria toleransi kesalahan, dan Google telah menerbitkan beberapa penelitian mereka yang mungkin relevan. Penelitian pemodelan data cenderung menjawab pertanyaan tentang ketahanan, karena para ilmuwan khususnya tertarik pada sifat ketahanan yang menghasilkan hasil yang dapat direproduksi. Anda mungkin dapat menemukan makalah yang menjelaskan aplikasi statistik yang mungkin bermanfaat, seperti dalam pemodelan iklim, pemodelan propagasi RF, atau pengurutan genom. Anda juga akan menemukan insinyur yang mendiskusikan "desain yang kuat" dalam hal-hal seperti sistem kontrol.
Whitepaper Sistem File Google menjelaskan pendekatan mereka terhadap masalah toleransi kesalahan, yang umumnya melibatkan asumsi bahwa kegagalan komponen adalah hal yang rutin sehingga aplikasi harus beradaptasi dengan mereka:
Proyek ini untuk kelas di Rutgers mendukung definisi berorientasi "kegagalan komponen" tentang "toleransi kesalahan":
Ada banyak makalah tentang "pemodelan kuat XYZ", tergantung pada bidang yang Anda selidiki. Sebagian besar akan menggambarkan kriteria mereka untuk "kuat" secara abstrak, dan Anda akan menemukan semuanya berkaitan dengan bagaimana model berurusan dengan input.
Laporan singkat dari ilmuwan iklim NASA ini menggambarkan ketahanan sebagai kriteria untuk mengevaluasi model iklim:
Makalah ini dari seorang peneliti MIT meneliti aplikasi protokol nirkabel, domain di mana toleransi kesalahan dan ketahanan tumpang tindih, tetapi penulis menggunakan "kuat" untuk menggambarkan aplikasi, protokol, dan algoritma, sementara mereka menggunakan "toleransi kesalahan" dalam merujuk pada topologi dan komponen: