neděle 18. října 2009

Testování aplikací - panelová diskuze

Co se stane, když dáte dohromady javistu, dotnetaka, pythonistu a rubyistu a necháte je diskutovat o testování aplikací. Po pravdě řečeno jsem nevěděl co od toho čekat, ale rád jsem přijal pozvání, které mi adresoval Jarda Jirava na akci Testování aplikací - panelová diskuze. Spolu se mnou diskutoval ještě Karel Minařík (Ruby), Jan Král (Python), Borek Bernard (Flex, .NET) a Michael Juřek (.NET) za účasti osmdesáti posluchačů.

Na začátek musím předeslat, že akce byla opravdu povedená a moji spoluřečníci byli skvěle připraveni. Na internetu se objeví dokonce i audio záznam. Rád bych zde shrnul to nejzajímavější co jsem si z diskuze odnesl.

V případě dynamických jazyků jako Ruby nebo Python jsou testy alfou a omegou celého psaní. Testy zde zněla jako mantra takřka pro jakoukoliv softwárovou disciplínu. Test sloužil zároveň jako jeho design a měřidlo kvality kódu. Přístup Test first byl dosti často citován jako způsob pro to kde začít s kódem. Jak správně zaznělo z publika od Pavla Jetenského psát aplikace postavené nad staticky typovým jazykem ještě jde, ale dělat to za použití dynamického jazyka je problém.

Téma, na kterém jsme se zasekli, by vydalo určitě na samostatný článek. Jednalo se o přípravu dat pro testy. Jedna z pouček o psaní testů říká, že příprava vlastních dat pro test by neměla záviset na žádné aplikační logice. Líbilo se mi, že se nám doufám podařilo shodnout, že při psaní aplikací postavených nad databází je toto pravidlo pouze teorie a jakákoliv redundantní příprava dat postupem času dosti rychle ztrácí dech. Například kvůli tomu, že databázové schéma či aplikační omezení se stále vyvíjí a je těžké je držet konzistentní.

Z naší diskuze mě zaujalo ještě pár střípků

  • Carbon footprint - čím dřív začnete testovat na nižší úrovni abstrakce tím menší počet počítačů je potřeba (ekologický fundamentalismus dotažený k dokonalosti? ;-).
  • Pex - je rozšíření Visual Studia, které dokáže projít a zanalyzovat váš kód a na základě této znalosti vygenerovat odpovídající testy.
  • Borkova ilustrace složitosti psaní testů pro jednotlivé typy kódu. Nejjednoduší bylo povětšinou psát testy pro klasické knihovny oproti například desktopovým aplikacím. Dobrý argument na někoho kdo mi bude doporučovat jeho vlastní framework.