Özet - Test temelleri
- C kursu
- İleri seviye
- Ders 72/83
- 5 dk
assert ve test çerçevesini birleştirerek bir hesap makinesi testi yazarsın.
Özet - Test temelleri
Bu grupta assert, basit bir test çerçevesi, test doblelleri, coverage ve setup/teardown desenini öğrendin. Şimdi tümünü birleştirerek bir hesap makinesi testi yazacaksın.
Program bir calc_add işlevi tanımlar; test_calculator işlevi assert ile onu sınar. Main testi çağırır ve başarı iletisi basar. Tüm çıktı deterministiktir: hesap doğru ise program "hesap: tamam" yazdırır.
Uygulama Hesap makinesi testi
int calc_add(int a, int b) yaz: return a + b;. void test_calculator(void) yaz: assert(calc_add(2, 3) == 5); ve assert(calc_add(0, 0) == 0);. main'de test_calculator(); çağır ve printf("hesap: tamam\n"); yazdır.
Başlangıç kodu
#include <stdio.h>
#include <assert.h>
// int calc_add(int a, int b) yaz: a+b döndür
// void test_calculator(void) yaz: assert ile sına
// main: test_calculator çağır ve "hesap: tamam" yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
#include <assert.h>
int calc_add(int a, int b) {
return a + b;
}
void test_calculator(void) {
assert(calc_add(2, 3) == 5);
assert(calc_add(0, 0) == 0);
}
int main(void) {
test_calculator();
printf("hesap: tamam\n");
return 0;
}Beklenen çıktı
hesap: tamam
Sonraki adımlar
Test temellerini öğrendin: assert, basit çerçeve, stub, coverage ve setup/teardown. Bunlar gerçek test çerçevelerinin çekirdeğidir.
İleri adımlar: Unity veya CMocka ile tam çerçeve kullanımı, mock ile etkileşim sınama, lcov ile HTML kapsam raporu ve parametreli testlerle aynı işlevi birçok girdiyle sınamak. Öğrendiğin desenler bu araçların temelini oluşturur.
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 assert hangi koşulda başarısız olur?
- Koşul doğruysa
- Her zaman
- Asla
- Koşul yanlışsa Doğru cevap
Açıklama: assert koşul yanlışsa programı durdurur.
2 Test araçlarını eşle
| Kavram | Anlamı |
|---|---|
assert |
Koşul denetler |
test_run |
Çerçeve çekirdeği |
stub_time |
Deterministik değer |
coverage_counter |
Dal sayacı |