{"id":351,"date":"2013-02-07T21:40:14","date_gmt":"2013-02-07T21:40:14","guid":{"rendered":"https:\/\/www.michaelagreiler.com\/blog\/?p=10"},"modified":"2019-02-17T19:13:00","modified_gmt":"2019-02-17T18:13:00","slug":"analyzing-test-fixture-smells-with-testhound","status":"publish","type":"post","link":"https:\/\/www.michaelagreiler.com\/analyzing-test-fixture-smells-with-testhound\/","title":{"rendered":"Finding anti-patterns in test code with TestHound"},"content":{"rendered":"

Designing automated tests is a challenging task. One important concern is how to design test fixtures, i.e. code that initializes and configures the system under test so that it is in an appropriate state for running particular automated tests. Test designers may have to choose between writing in-line fixture code for each test or refactor fixture code so that it can be reused for other tests. Deciding on which approach to use is a balancing act, often trading off maintenance overhead with slow test execution. Additionally, over time, test code quality can erode and test smells can develop, such as the occurrence of overly general fixtures, obscure in-line code and dead fields. Test smells are poor solutions to recurring implementation and design problems in test code. Until now, no support has been made available to developers during the analysis and adjustment of test fixtures.<\/span>
\nTo address this shortcoming, we developed a TestHound. TestHound automatically analyzes test fixtures to detect fixture-related smells and guides improvement activities.<\/p>\n

Publication<\/strong>
\nMore details on TestHound can be found in the associated publication.
\nAutomated Detection of Test Fixture Strategies and Smells
\nMichaela Greiler, Arie van Deursen, Margaret-Anne Storey
\nProceedings of the International Conference on Software Testing, Verification and Validation, pages xxx-xxx.
\nIEEE, Luxembourg, March 2013.<\/p>\n

Updated on February 17th, 2019 <\/p>","protected":false},"excerpt":{"rendered":"

Designing automated tests is a challenging task. One important concern is how to design test fixtures, i.e. code that initializes<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"spay_email":"","jetpack_publicize_message":""},"categories":[38],"tags":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/paHqvV-5F","jetpack-related-posts":[{"id":59,"url":"https:\/\/www.michaelagreiler.com\/best-practices-avoiding-test-smells\/","url_meta":{"origin":351,"position":0},"title":"Best practices for avoiding test smells","date":"January 19, 2019","format":false,"excerpt":"An important challenge in creating automated tests is how to design test fixtures, i.e., the setup code that initializes the system under test before actual automated testing can start. Test designers have to choose between different approaches for the setup, trading off maintenance overhead with slow test execution. Over time,\u2026","rel":"nofollow","context":"In \"Research\"","img":{"src":"https:\/\/i1.wp.com\/www.michaelagreiler.com\/wp-content\/uploads\/2019\/02\/AllSmellTypes.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3835,"url":"https:\/\/www.michaelagreiler.com\/test-suite-comprehension-for-modular-dynamic-systems\/","url_meta":{"origin":351,"position":1},"title":"Test Suite Comprehension for Modular and Dynamic Systems","date":"February 22, 2020","format":false,"excerpt":"Test suite comprehension became more difficult over the last decade as test suites have grown substantially. Especially for modular and dynamic systems, where the system functionality can change at runtime, testing is aggravated. In addition to enabling dynamic reconfigurations, modular systems are conglomerates of several sub-systems, with different owners. Those\u2026","rel":"nofollow","context":"In \"Testing\"","img":{"src":"https:\/\/i1.wp.com\/www.michaelagreiler.com\/wp-content\/uploads\/2020\/02\/PhD-Thesis-Cover.jpg?fit=1200%2C689&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":3271,"url":"https:\/\/www.michaelagreiler.com\/build-analytics-platform\/","url_meta":{"origin":351,"position":2},"title":"How to build your Own Analytics Platform for Engineering Data","date":"September 10, 2019","format":false,"excerpt":"Today, I show you how you can build an analytics platform to analyze your engineering data. Now you might wonder why you would like to even build an engineering data platform, and maybe even what that is. Let me start with an example: Automated tests.","rel":"nofollow","context":"In \"Data Analytics\"","img":{"src":"https:\/\/i0.wp.com\/www.michaelagreiler.com\/wp-content\/uploads\/2019\/08\/Data-Analytics-Platform.jpg?fit=1024%2C512&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.michaelagreiler.com\/wp-json\/wp\/v2\/posts\/351"}],"collection":[{"href":"https:\/\/www.michaelagreiler.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.michaelagreiler.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.michaelagreiler.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.michaelagreiler.com\/wp-json\/wp\/v2\/comments?post=351"}],"version-history":[{"count":1,"href":"https:\/\/www.michaelagreiler.com\/wp-json\/wp\/v2\/posts\/351\/revisions"}],"predecessor-version":[{"id":657,"href":"https:\/\/www.michaelagreiler.com\/wp-json\/wp\/v2\/posts\/351\/revisions\/657"}],"wp:attachment":[{"href":"https:\/\/www.michaelagreiler.com\/wp-json\/wp\/v2\/media?parent=351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.michaelagreiler.com\/wp-json\/wp\/v2\/categories?post=351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.michaelagreiler.com\/wp-json\/wp\/v2\/tags?post=351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}