{"id":2679,"date":"2014-05-20T16:23:59","date_gmt":"2014-05-20T14:23:59","guid":{"rendered":"https:\/\/sgaul.de\/?p=2679"},"modified":"2014-05-06T21:25:33","modified_gmt":"2014-05-06T19:25:33","slug":"ruby-testvollstaendigkeit-testen","status":"publish","type":"post","link":"https:\/\/sgaul.de\/2014\/05\/20\/ruby-testvollstaendigkeit-testen\/","title":{"rendered":"Ruby: Testvollst\u00e4ndigkeit testen"},"content":{"rendered":"

Eine Wissenschaft f\u00fcr sich im Test-Driven Development ist die Frage, wie jede einzelne Funktion getestet werden muss: Sind die Tests vollst\u00e4ndig, hat man jeden Spezialfall bedacht?\u00a0Hat man es zu gut gemeint und eine schwer \u00fcberschaubare, redundante Testsuite geschaffen?<\/p>\n

Einen recht ungew\u00f6hnlichen Weg\u00a0zur Beantwortung der ersten Frage geht Markus Schirp. Sein Gem Mutant<\/a> betrachtet Code und die zugeh\u00f6rigen, gr\u00fcnen Tests. Es ver\u00e4ndert nun\u00a0immer wieder bestimmte Teile des Applikations-Codes (nicht die Tests) und pr\u00fcft, ob die Tests dadurch\u00a0fehlschlagen. Tun sie dies nicht l\u00e4sst sich schlussfolgern, dass diese Stellen des Codes nicht vollst\u00e4ndig durch Tests abgedeckt oder tot sind.<\/p>\n

Die Code-\u00c4nderungen sind dabei vollautomatisch. Ifs werden durch Unless ersetzt, boolsche Default-Werte von Argumenten werden negiert oder ganze Statements weggelassen.\u00a0Solange die Tests dadurch fehlschlagen ist es egal wie viel Unsinn sich hieraus ergibt.<\/p>\n

Der Ansatz klingt auf jeden Fall interessant und erscheint um einiges aussagekr\u00e4ftiger als die \u00fcblichen Code-Coverage-Statistiken.\u00a0Ob er wirklich praxistauglich ist kann ich aufgrund mangelnder Erfahrung nicht beurteilen. Im Weg steht leider auch der etwas sperrige Einstieg. Ich konnte etwa keine Beispiele finden wie man Code mit Rails-Abh\u00e4ngigkeiten testet – und von diesem Code habe ich eine Menge. Ein Gem Mutant-Rails<\/a> gibt es zwar schon, ist aber mit einem entmutigenden \u201eThis gem does not yet work\u201c \u00fcberschrieben. Aber der Kurs scheint zu stimmen.<\/p>\n

Auf der Rails-Conf 2014 gab es einen Vortrag zu Mutant<\/a>. Dieser kratzt leider nur an der Oberfl\u00e4che, zeigt aber immerhin ein Live-Beispiel.<\/p>\n","protected":false},"excerpt":{"rendered":"

Eine Wissenschaft f\u00fcr sich im Test-Driven Development ist die Frage, wie jede einzelne Funktion getestet werden muss: Sind die Tests vollst\u00e4ndig, hat man jeden Spezialfall bedacht?\u00a0Hat man es zu gut gemeint und eine schwer \u00fcberschaubare, redundante Testsuite geschaffen? Einen recht ungew\u00f6hnlichen Weg\u00a0zur Beantwortung der ersten Frage geht Markus Schirp. Sein Gem Mutant betrachtet Code und… Ruby: Testvollst\u00e4ndigkeit testen<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[91],"tags":[527,553,552,595,596],"_links":{"self":[{"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/posts\/2679"}],"collection":[{"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/comments?post=2679"}],"version-history":[{"count":1,"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/posts\/2679\/revisions"}],"predecessor-version":[{"id":2680,"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/posts\/2679\/revisions\/2680"}],"wp:attachment":[{"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/media?parent=2679"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/categories?post=2679"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/tags?post=2679"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}