Testování nám pomáhá ověřovat funkčnost programu a tak se v něm zbavovat chyb. Pro jednotkové testování (testování modulů, funkcí) máme v Haskellu modul HUnit (dokumentace), pro automatické generování testů QuickCheck (dokumentace, příklady v knize Real World Haskell).
Pokud zjistíme, že náš program nefunguje dostatečně rychle, jak by měl, můžeme ho prověřit pomocí tzv. profileru, který dokáže najít slabá místa v programu. V Haskellu nám k tomu slouží GHC Profiler. Častým problémem je vytváření tzv. space leaku (hromadění paměti v důsledku nevyhodnoceného líného kódu), čemuž může pomoci přidání striktnosti (např. přes operátor $!
). Podrobný popis se nachází v knize Real World Haskell.
Dokumentace k programu může ulehčit orientaci v našem kódu jiným lidem, případně i nám samotným, když se k němu vrátíme po dlouhé době. V Haskellu slouží ke generování dokumentace program Haddock. Jestliže náš kód obsahuje více dokumentace než samotného kódu, vyplatí se nám použít dokumentované programování v Haskellu, výstup pak můžeme přeložit do dalších formátů přes sázecí systém LaTeX. Pro zjišťování informací o pokrytí kódu můžeme použít nástroj HPC (příklad použití).
\documentclass{article}
\begin{document}
In Bird-style you have to leave a blank before the code.
\begin{verbatim}
> main :: IO ()
> main = print $ fact 10
> fact :: Integer -> Integer
> fact 0 = 1
> fact n = n * fact (n-1)
\end{verbatim}
And you have to leave a blank line after the code as well.
\end{document}