Continuous test-driven development

Last updated

Continuous test-driven development (CTDD) [1] is a software development practice that extends test-driven development (TDD) by means of automatic test execution in the background, sometimes called continuous testing. [2]

Contents

Practice

In CTDD the developer writes a test first but is not forced to execute the tests manually. The tests are run automatically by a continuous testing tool running in the background. This technique can potentially reduce the time waste resulting from manual test execution by eliminating the need for the developer to start the test after each phase of the normal TDD practice: after writing the (initially failing) test, after producing the minimal amount of code for the test to pass and after refactoring the code.

Continuous testing tools

Related Research Articles

Test-driven development (TDD) is a software development process relying on software requirements being converted to test cases before software is fully developed, and tracking all software development by repeatedly testing the software against all test cases. This is as opposed to software being developed first and test cases created later.

eric (software)

eric is a free integrated development environment (IDE) used for computer programming. Since it is a full featured IDE, it provides by default all necessary tools needed for the writing of code and for the professional management of a software project.

Mantis Bug Tracker Bug tracking system

Mantis Bug Tracker is a free and open source, web-based bug tracking system. The most common use of MantisBT is to track software defects. However, MantisBT is often configured by users to serve as a more generic issue tracking system and project management tool.

In software engineering, behavior-driven development (BDD) is an agile software development process that encourages collaboration among developers, quality assurance testers, and customer representatives in a software project. It encourages teams to use conversation and concrete examples to formalize a shared understanding of how the application should behave. It emerged from test-driven development (TDD). Behavior-driven development combines the general techniques and principles of TDD with ideas from domain-driven design and object-oriented analysis and design to provide software development and management teams with shared tools and a shared process to collaborate on software development.

The following tables list notable software packages that are nominal IDEs; standalone tools such as source code editors and GUI builders are not included. These IDEs are listed in alphabetical order of the supported language.

Enthought, Inc. is a software company based in Austin, Texas, United States that develops scientific and analytic computing solutions using primarily the Python programming language. It is best known for the early development and maintenance of the SciPy library of mathematics, science, and engineering algorithms and for its Python for scientific computing distribution Enthought Canopy.


The Wing Python IDE family of integrated development environments (IDEs) from Wingware was created specifically for the Python programming language, with support for editing, testing, debugging, inspecting/browsing, and error checking Python code.

SonarQube Open-source platform for continuous inspection of code quality

SonarQube is an open-source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells on 17 programming languages. SonarQube offers reports on duplicated code, coding standards, unit tests, code coverage, code complexity, comments, bugs, and security recommendations.

DevOps is a set of practices that combines software development (Dev) and IT operations (Ops). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality. DevOps is complementary with Agile software development; several DevOps aspects came from the Agile methodology.

PyScripter

PyScripter is a free and open-source Python integrated development environment (IDE) for Windows. It is built with Delphi's Object Pascal and Python.

Ninja-IDE

NINJA-IDE, is a cross-platform integrated development environment (IDE) designed to build Python applications.

Concordion is a specification by example framework originally developed by David Peterson, and now maintained by a team of contributors, led by Nigel Charman.

Cucumber is a software tool that supports behavior-driven development (BDD). Central to the Cucumber BDD approach is its ordinary language parser called Gherkin. It allows expected software behaviors to be specified in a logical language that customers can understand. As such, Cucumber allows the execution of feature documentation written in business-facing text. It is often used for testing other software. It runs automated acceptance tests written in a behavior-driven development (BDD) style.

Spyder (software)

Spyder is an open-source cross-platform integrated development environment (IDE) for scientific programming in the Python language. Spyder integrates with a number of prominent packages in the scientific Python stack, including NumPy, SciPy, Matplotlib, pandas, IPython, SymPy and Cython, as well as other open-source software. It is released under the MIT license.

Wercker is a Docker-based continuous delivery platform that helps software developers build and deploy their applications and microservices. Using its command-line interface, developers can create Docker containers on their desktop, automate their build and deploy processes, testing them on their desktop, and then deploy them to various cloud platforms, ranging from Heroku to AWS and Rackspace. The command-line interface to Wercker has been open-sourced.

Neural Network Intelligence Microsoft open source library

NNI is a free and open source AutoML toolkit developed by Microsoft. It is used to automate feature engineering, model compression, neural architecture search, and hyper-parameter tuning.

References

  1. Madeyski, L. and Kawalerowicz, M. Continuous Test-Driven Development - A Novel Agile Software Development Practice and Supporting Tool, Proceedings of the 8th International Conference on Evaluation of Novel Approaches to Software Engineering (ENASE), 2013, Angers, France, 4–6 July 2013: p.260-267.
  2. Saff, D. and Ernst, M. D. Reducing wasted development time via continuous testing, Fourteenth International Symposium on Software Reliability Engineering, 2003, Denver, USA, 17–20 November 2003: p.281-292.
  3. "Infinitest". infinitest.github.io.
  4. "NCrunch for Visual Studio". www.ncrunch.net.
  5. "Save a file, autotest will run the matching tests! (Autotest without ZenTest): grosser/autotest". November 10, 2018 via GitHub.
  6. "AutoTest.NET is a tool for automatically running builds and test in the background when code changes. This practice gives you immediate feedback and helps facilitate real test driven development. -." February 19, 2019 via GitHub.
  7. "AutoTest.NET is a tool for automatically running builds and test in the background when code changes. This practice gives you immediate feedback and helps facilitate real test driven development. -." March 27, 2018 via GitHub.
  8. "Home". continuoustests.com.
  9. "Wallaby - Integrated Continuous Test Runner for JavaScript". wallabyjs.com.
  10. "PyCrunch TDD Assistant for Python". pycrunch.com.