kefukar yazdı: Mesela program testi yapan programlar falan var mı?
bu işi yapacak olan yine sizsiniz
zamanında microsoft şöyle bir uygulama izledi.
programcılar programlarını yazıp test grubuna gönderiyordu. test grubuda programcıların yazdığı progamları test ediyorlardı. test grubu "
kara kutu" adı verilen bir test yöntemi kullanıyordu ve bunun yanında testleri otomatik hale getiren bir çok araç gerece sahiptiler. (otomatik veri girişi yapan araçlar vs.)
sonuç tahmin edebileceğiniz gibi birçok böcek içeren programlarla sonuçlandı. hatta bu böceklerden dolayı microsoftta bir ürün piyasaya hiç çıkmadan üretimden kaldırılmak zorunda kaldı. Zaten bu olay bardağı taşıran son damla oldu. "
Bu hata neden kaynaklandı?" sorusuna testçilerin verdiği cevap "
hata programın kodlarından kaynaklanıyor" olurken programcıların cevabı ise "
test grubunun bu hatayı bulması gerekirdi" oldu. Bunun üzerine fikir alış verişinde bulunan yöneticilir "
kodun testinin yine programcı tarafından yapılması gerekir" fikrini kabul ettiler. Çünkü testçilerin kodları görüp kodun içinde yer alan böcekleri temizleme şansları yoktu. Onlar sadece programa rastgele veriler girip bunların sonuçlarını kontrol ederek programdaki böcekleri temizlemeye çalışıyorlardı.
Şu anda microsoftta ve diğer büyük yazılım firmalarında 2 çeşit kaynak kod yer alıyor.
1-kaynak kodun ticari sürümü
2-kaynak kodun hata ayıklama sürümü
ticari sürüm daha performanslı ve daha hızlı çalışırken hata ayıklama sürümü daha hantal ama böceklere karşı daha hassas bir şekilde çalışıyor. Programcılar ve testçiler genelde test işlemlerini bu hata ayıklama sürümünde yaparak böceklerin ortaya çıkmalarını sağlıyorlar. Herşey yolundaysa kaynak kodun ticari sürümü derlenip piyasaya çıkıyor.
Bu işi nasıl yapıyorlar sorusuna gelince basit derleyici direktifleri ile.
DEBUG adlı bir değişken bilirtip
şeklinde kodlar yazarak bu işi kolay bir şekilde hallediyorlar. Piyasaya çıkacağı vakit DEBUG direktifini tanımsız hale getirip ticari sürüme dönebiliyorlar.
Delphi tarafında ise en basit çözüm olarak
Assert komutunu kullanabilirsiniz. Assert, mantıksal bir ifadenin durumuna göre ekrana showmessage tarzı bir mesaj vermenizi sağlar. Assertin önemi
$ASSERTIONS ON/OFF şeklinde derleyicinin bu komutu gözardı edip etmemesinin size bağlı olması.
Asserti ne zaman kullanmalıyız?
Birşeylerin yolunda gitmediğini belirtmek için gerekli durumlarda kullanmalıyız.
mesela
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
A: TStringList;
begin
A := TStringList.Create;
try
Split(' ', 'your delphi guide', A);
ShowMessage(a[0]); //your
ShowMessage(a[1]); //delphi
ShowMessage(a[2]); //guide
finally
A.Free;
end;
end;
}
procedure Split
(const Delimiter: Char;
Input: string;
const Strings: TStrings);
begin
Assert(Assigned(Strings),'Hop dur vatandaş !');
Strings.Clear;
Strings.Delimiter := Delimiter;
Strings.DelimitedText := Input;
end;
yukarıdaki koda baktığınız zaman Assert(Assigned(Strings)); ifadesi geçersiz bir Strings değişkenine rastladığı zaman uyarı verecektir. Komutun kullanıldığı yerde Strnigs değişkeninin muhakkak geçerli bir değere işaret ediyor olması gerekir aksi takdirde programın bir yerinde yanlış bir şeyler oluyor demektir.
Assert biraz hamallık gibi geliyorsa bu işi biraz daha otomatik hale getiren DUnit tarzı bir test otomasyonu kullanabilirsiniz.
bu şekilde yaptıktan sonra diğer testlere gerek var mı?
şüphesiz. sadece bu tarz bir geliştirme yöntemi olmadan programcı olmayan kişilerin programı veri girerek test etmeleri çok fazla bir şey ifade etmez. kaldıkı % 100 test etmekte zaten imkansızdır.
http://sadettinpolat.blogspot.com/2005/ ... mclar.html
http://www.cs.hacettepe.edu.tr/~turgay/ ... torial.pdf
viewtopic.php?t=3924&highlight=assert

google --> assert + delphi

google --> dunit

google --> tdd + delphi
v.s.