1,345,902 research outputs found

    Best Practices for Test Driven Development

    Get PDF
    In his award-winning book, Test-driven Development By Example, Kent Beck wrote, Clean code that works...is the goal of Test-driven Development (TDD). TDD is a style of software development that first begins with the creation of tests and then makes use short, iterative development cycles until all test requirements are fulfilled. In order to provide the reader with sufficient background to understand the concepts discussed, this thesis begins by presenting a detailed description of this style of development. TDD is then contrasted with other popular styles, with a focus toward highlighting the many benefits this style offers over the others. This thesis then offers the reader a series of concrete and practical best practices that can be used in conjunction with TDD. It is the hope of the author that these lessons learned will aid those considering the adoption of this style of development avoid a number of pitfalls

    Test-driven development of embedded control systems: application in an automotive collision prevention system

    Get PDF
    With test-driven development (TDD) new code is not written until an automated test has failed, and duplications of functions, tests, or simply code fragments are always removed. TDD can lead to a better design and a higher quality of the developed system, but to date it has mainly been applied to the development of traditional software systems such as payroll applications. This thesis describes the novel application of TDD to the development of embedded control systems using an automotive safety system for preventing collisions as an example. The basic prerequisite for test-driven development is the availability of an automated testing framework as tests are executed very often. Such testing frameworks have been developed for nearly all programming languages, but not for the graphical, signal driven language Simulink. Simulink is commonly used in the automotive industry and can be considered as state-of-the-art for the design and development of embedded control systems in the automotive, aerospace and other industries. The thesis therefore introduces a novel automated testing framework for Simulink. This framework forms the basis for the test-driven development process by integrating the analysis, design and testing of embedded control systems into this process. The thesis then shows the application of TDD to a collision prevention system. The system architecture is derived from the requirements of the system and four software components are identified, which represent problems of particular areas for the realisation of control systems, i.e. logical combinations, experimental problems, mathematical algorithms, and control theory. For each of these problems, a concept to systematically derive test cases from the requirements is presented. Moreover two conventional approaches to design the controller are introduced and compared in terms of their stability and performance. The effectiveness of the collision prevention system is assessed in trials on a driving simulator. These trials show that the system leads to a significant reduction of the accident rate for rear-end collisions. In addition, experiments with prototype vehicles on test tracks and field tests are presented to verify the system’s functional requirements within a system testing approach. Finally, the new test-driven development process for embedded control systems is evaluated in comparison to traditional development processes

    The case for the development and use of "ecologically valid" measures of executive function in experimental and clinical neuropsychology

    Get PDF
    This article considers the scientific process whereby new and better clinical tests of executive function might be developed, and what form they might take. We argue that many of the traditional tests of executive function most commonly in use (e.g., the Wisconsin Card Sorting Test; Stroop) are adaptations of procedures that emerged almost coincidentally from conceptual and experimental frameworks far removed from those currently in favour, and that the prolongation of their use has been encouraged by a sustained period of concentration on “construct-driven” experimentation in neuropsychology. This resulted from the special theoretical demands made by the field of executive function, but was not a necessary consequence, and may not even have been a useful one. Whilst useful, these tests may not therefore be optimal for their purpose. We consider as an alternative approach a function-led development programme which in principle could yield tasks better suited to the concerns of the clinician because of the transparency afforded by increased “representativeness” and “generalisability.” We further argue that the requirement of such a programme to represent the interaction between the individual and situational context might also provide useful constraints for purely experimental investigations. We provide an example of such a programme with reference to the Multiple Errands and Six Element tests

    The Simplex Algorithm for the Rapid Identification of Operating Conditions During Early Bioprocess Development: Case Studies in FAb' Precipitation and Multimodal Chromatography

    Get PDF
    This study describes a data-driven algorithm as a rapid alternative to conventional Design of Experiments (DoE) approaches for identifying feasible operating conditions during early bioprocess development. In general, DoE methods involve fitting regression models to experimental data, but if model fitness is inadequate then further experimentation is required to gain more confidence in the location of an optimum. This can be undesirable during very early process development when feedstock is in limited supply and especially if a significant percentage of the tested conditions are ultimately found to be sub-optimal. An alternative approach involves focusing solely upon the feasible regions by using the knowledge gained from each condition to direct the choice of subsequent test locations that lead towards an optimum. To illustrate the principle, this study describes the application of the Simplex algorithm which uses accumulated knowledge from previous test points to direct the choice of successive conditions towards better regions. The method is illustrated by two case studies; a two variable precipitation example investigating how salt concentration and pH affect FAb' recovery from E. coli homogenate and a three-variable chromatography example identifying the optimal pH and concentrations of two salts in an elution buffer used to recover ovine antibody bound to a multimodal cation exchange matrix. Two-level and face-centered central composite regression models were constructed for each study and statistical analysis showed that they provided a poor fit to the data, necessitating additional experimentation to confirm the robust regions of the search space. By comparison, the Simplex algorithm identified a good operating point using 50% and 70% fewer conditions for the precipitation and chromatography studies, respectively. Hence, data-driven approaches have significant potential for early process development when material supply is at a premium

    Testes incrementais em um desenvolvimento guiado por testes baseados em modelo

    Get PDF
    Orientador: Eliane MartinsDissertação (mestrado) - Universidade Estadual de Campinas, Instituto de ComputaçãoResumo: O desenvolvimento de sistemas pode ser realizado seguindo diversos modelos de processo. Os métodos ágeis propõem realizar implementações iterativas e incrementais e testes antecipados, buscando uma validação antecipada do sistema. Algumas técnicas ágeis adicionam a característica de um desenvolvimento de sistema baseado em testes, como as técnicas de Desenvolvimento Baseado em Teste (do inglês Test Driven Development (TDD)) e Desenvolvimento Baseado em Comportamento (do inglês Behaviour Driven Development (BDD)). Recentemente algumas técnicas propõem a união de técnicas ágeis de desenvolvimento baseado em testes com técnicas consolidadas da área de testes, com o objetivo principal de auxiliar na etapa de criação de testes, que serão utilizados para guiar o desenvolvimento do sistema. Um exemplo é a técnica de Desenvolvimento Guiado por Testes Baseados em Modelo (do inglês Model-Based Test Driven Development (MBTDD)) que une os conceitos de Testes Baseados em Modelo (do inglês Model-Based Testing (MBT)) e Desenvolvimento Baseado em Teste (TDD). Portanto em MBTDD, testes são derivados de modelos que representam os comportamentos esperados do sistema, e baseado nesses testes, o desenvolvimento iterativo e incremental ocorre. Entretanto quando lidamos com processos iterativos e incrementais, surgem problemas decorrente da evolução do sistema, como por exemplo: como reutilizar os artefatos de testes, e como selecionar os testes relevantes para a codificação da nova versão do sistema. Nesse contexto, este trabalho explora um processo no qual o desenvolvimento ágil de sistema é guiado por testes baseados em modelos, com o enfoque no auxílio do reúso dos artefatos de testes e no processo de identificação de testes relevantes para o desenvolvimento de uma nova versão do sistema. Para tanto, características do processo de MBTDD são unidas com características de uma técnica que busca o reúso de artefatos de testes baseado em princípios de testes de regressão, denominada Testes de Regressão SPL Baseados em Modelo Delta (do inglês Delta-Oriented Model-Based SPL Regression Testing). Para realizar a avaliação da solução proposta, ela foi aplicada em exemplos existentes e comparada com a abordagem no qual nenhum caso de teste é reutilizadoAbstract: Systems can be developed following different process models. Agile methods propose iterative and incremental implementations and anticipating tests, in order to anticipate system validation. Some agile techniques add the characteristic of development based on tests, like in Test Driven Development (TDD) and Behaviour Driven Development (BDD). Recently some techniques proposed joining the agile techniques of development based on tests with techniques consolidated in the field of testing, with the main purpose of aiding in the test creation stage, which are used to guide the development of the system. An example is Model-Based Test Driven Development (MBTDD) which joins the concepts of Model-Based Testing (MBT) and Test Driven Development (TDD). Therefore in MBTDD, tests are derived from models that represent the expected behaviour of the system, and based on those tests, iterative and incremental development is performed. However, when iterative and incremental processes are used, problems appear as the consequence of the evolution of the system, such as: how to reuse the test artefacts, and how to select the relevant tests for implementing the new version of the system. In this context, this work proposes a process in which the agile development of a system is guided by model based tests, focusing on helping with the reuse of test artefacts and on the process of identifying tests relevant to development. To achieve this goal, MBTDD process characteristics are joined with characteristics from a technique that aims to find reusability of test artefacts based on principles of regression tests, called Delta-Oriented Model-Based SPL Regression Testing. To evaluate the proposed solution, it was applied to existing examples and compared to the approach without any test case reuseMestradoCiência da ComputaçãoMestra em Ciência da Computação151647/2013-5CNP

    Test-Driven Software Development

    Get PDF
    Tato bakalářská práce představuje agilní metodologii zvanou vývoj řízený testy a ilustruje její použití na ukázkovém příkladě pomocí testovacího nástroje. Během ilustrace jsou vysvětleny techniky sloužící k dosažení cíle softwarového projektu. Dále je diskutován vliv vývoje řízeného testy na kvalitu sofwarového produktu.This bachelor's thesis introduces an agil method called test-driven development and illustrates it by an example using a testing tool. The way to reach objectives of software project is explained during the illustration. Further, the effect of test-driven development on the quality of software product is discussed.

    Formal support for model driven development with graph transformation techniques

    Full text link
    Also published online by CEUR Workshop Proceedings (CEUR-WS.org, ISSN 1613-0073) In this paper we give an overview of our approach for Model Driven Development (MDD), based on graph transformation techniques. In MDD, models are the primary assets in the development process. They are not only used for documentation, but also for analysis, simulation, code and test cases generation. Thus, model transformation becomes a central activity. As models can be formally described as attributed, typed graphs, we can use formal graph transformation techniques for their manipulation. In this paper, we give an overview of the different kinds of model transformation and suitable graph transformation techniques. Moreover, graph transformation can be combined with meta-modelling for further expressivity. Some of these techniques have been recently implemented in the Metamodelling tool AToM3. We use the tool to introduce an example in the component-based modelling and simulation area

    Towards Test Driven Development for Computational Science with pFUnit

    Get PDF
    Developers working in Computational Science & Engineering (CSE)/High Performance Computing (HPC) must contend with constant change due to advances in computing technology and science. Test Driven Development (TDD) is a methodology that mitigates software development risks due to change at the cost of adding comprehensive and continuous testing to the development process. Testing frameworks tailored for CSE/HPC, like pFUnit, can lower the barriers to such testing, yet CSE software faces unique constraints foreign to the broader software engineering community. Effective testing of numerical software requires a comprehensive suite of oracles, i.e., use cases with known answers, as well as robust estimates for the unavoidable numerical errors associated with implementation with finite-precision arithmetic. At first glance these concerns often seem exceedingly challenging or even insurmountable for real-world scientific applications. However, we argue that this common perception is incorrect and driven by (1) a conflation between model validation and software verification and (2) the general tendency in the scientific community to develop relatively coarse-grained, large procedures that compound numerous algorithmic steps.We believe TDD can be applied routinely to numerical software if developers pursue fine-grained implementations that permit testing, neatly side-stepping concerns about needing nontrivial oracles as well as the accumulation of errors. We present an example of a successful, complex legacy CSE/HPC code whose development process shares some aspects with TDD, which we contrast with current and potential capabilities. A mix of our proposed methodology and framework support should enable everyday use of TDD by CSE-expert developers
    corecore