A.3. Jak provádět regresní testování pomocí Subversion

Občas nastane problém typu 'předtím to fungovalo, teď už ne...'. Zde přinášíme postup krok za krokem, jak vyhledat, kdy problém nastal. Toto není určeno příležitostným uživatelům.

Nejprve si musíte opatřit zdrojové kódy MPlayeru ze Subversion. Instrukce lze nalést v sekci Subversion stránky download.

Tak dostanete v adresáři mplayer/ obraz Subversion stromu na straně klienta. Nyní aktualizujte tento obraz k datu, které chcete:

cd mplayer/
svn update -r {"2004-08-23"}

Formát data je YYYY-MM-DD HH:MM:SS. Požití tohoto datového formátu zajišťuje, že budete schopni extrahovat patche podle data, kdy byly zapsány (commit) stejně, jak jsou v MPlayer-cvslog archivu.

A teď proveďte sestavení jako při normální aktualizaci:

./configure
make

Pokud to čte nějaký neprogramátor, nejrychlejší metodou, jak se dostat k bodu, kde problém nastal, je použití binárního vyhledávání – to je vyhledávání data poruchy opakovaným dělením vyhledávacího intervalu napůl. Například pokud problém nastal v 2003, začneme v polovině roku a ptáme se, "Už je tu problém?". Pokud ano, vraťte se na prvního dubna; pokud ne, běžte na prvního října a tak dále.

Pokud máte spoustu místa na disku (plná kompilace obvykle zabírá 100 MB a kolem 300–350 MB, pokud jsou zapnuty debugovací symboly), zkopírujte nejstarší známou funkční verzi před jejím updatem; to vám ušetří čas, pokud se budete vracet. (Obvykla je nutné spustit 'make distclean' před rekompilací starší verze, takže pokud si neuděláte záložní kopii originálního zdrojového stromu, budete v něm muset rekompilovat vše, až se vrátíte do současnosti.)

Pokud jste našli den, kdy k problému došlo, pokračujte v hledání pomocí archivu mplayer-cvslog (řazeného podle data) a preciznějším cvs update s uvedením hodiny, minuty a sekundy:

cvs update -PAd -D "2004-08-23 15:17:25"

To vám umožní lehce najít patch, který problém způsobil.

Pokud jste našli patch, který je příčinou problému, máte téměř vyhráno; ohlaste to do MPlayer Bugzilly nebo se přihlaste do MPlayer-users a pošlete to tam. Je šance, že autor navrhne opravu. Rovněž si můžete patch rozpitvat, dokud z něj nevytlučete, kde je chyba :-).