15 research outputs found

    Performance Outcomes of Test-Driven Development: An Experimental Investigation

    Get PDF
    Despite the growing popularity of test-driven development (TDD), there is no empirical confirmation of the benefits that this contemporary practice confers on its users. Prior research findings on its efficacy have largely been inconclusive. We conducted a laboratory experiment to assess the impact of TDD on software quality and task satisfaction. Additionally, we investigated the productivity aspect of TDD as compared to the traditional test-last method of software development. Results indicate that software quality and task satisfaction are significantly improved when TDD is used. Despite the additional requirements of testing, TDD is not more resource intensive than the test-last method. We also examined TDD’s impact on learning post hoc and discuss the implications of our findings and directions for future research

    Risk Identification and Preemptive Scheduling In Software Development Life Cycle

    Get PDF
    Software development has emerged as a disciplined discipline and the use of process models to develop the software has increased over time. Although the software industry is blessed with quite a few tool driven approaches, and the usage of technology is increasing yet the amount of risks faced by the software development life cycle have also increased to an extent. This paper focuses on the avoidance and mitigation strategies for the already identified and prioritized risk factors

    A Family of Experiments on Test-Driven Development

    Full text link
    Context: Test-driven development (TDD) is an agile software development approach that has been widely claimed to improve software quality. However, the extent to which TDD improves quality appears to be largely dependent upon the characteristics of the study in which it is evaluated (e.g., the research method, participant type, programming environment, etc.). The particularities of each study make the aggregation of results untenable. Objectives: The goal of this paper is to: increase the accuracy and generalizability of the results achieved in isolated experiments on TDD, provide joint conclusions on the performance of TDD across different industrial and academic settings, and assess the extent to which the characteristics of the experiments affect the quality-related performance of TDD. Method: We conduct a family of 12 experiments on TDD in academia and industry. We aggregate their results by means of meta-analysis. We perform exploratory analyses to identify variables impacting the quality-related performance of TDD. Results: TDD novices achieve a slightly higher code quality with iterative test-last development (i.e., ITL, the reverse approach of TDD) than with TDD. The task being developed largely determines quality. The programming environment, the order in which TDD and ITL are applied, or the learning effects from one development approach to another do not appear to affect quality. The quality-related performance of professionals using TDD drops more than for students. We hypothesize that this may be due to their being more resistant to change and potentially less motivated than students. Conclusion: Previous studies seem to provide conflicting results on TDD performance (i.e., positive vs. negative, respectively). We hypothesize that these conflicting results may be due to different study durations, experiment participants being unfamiliar with the TDD process..

    Test-Driven Development of an Embedded Data Acquisition Software

    Get PDF
    Testivetoinen kehitys on ohjelmistokehityksessä käytettävä menetelmä, jossa ohjelmoija kirjoittaa aina automaattisen yksikkötestin ennen varsinaisen toiminnallisuuden toteuttamista. Yksikkötestejä luodaan järjestelmän vaatimusten perusteella ja nämä testit ohjaavat ohjelmiston kehitystä. Vaikka testivetoinen kehitys on saavuttanut suosiota työpöytä- ja web-sovellusten kehityksessä, ei sitä ole kuitenkaan sovellettu laajasti sulautettujen järjestelmien kehityksessä. Tämän tutkimuksen tavoitteena on tutkia, miten testivetoista kehitystä voidaan hyödyntää sulautettuja järjestelmiä kehitettäessä. Tutkimus jakaantuu kahteen vaiheeseen: Ensimmäisessä vaiheessa tutustutaan testivetoiseen kehitykseen kirjallisuustutkimuksen avulla esittelemällä aiheeseen liittyvät käsitteet, teoriat ja menetelmät sekä tutkimalla aiempia kokemuksia ja tutkimuksia menetelmän käytöstä. Toisessa vaiheessa tutkitaan menetelmän käyttöä käytännössä tapaustutkimuksen avulla ja verrataan kokemuksia ensimmäisen osan tuloksiin. Tapaustutkimuksessa tutkitaan menetelmän käyttöä ohjelmistokehitysprojektissa, jossa Bitwise toteuttaa asiakkaalleen Kempille hitsauslaitteeseen liitettävän sulautetun tiedonkeruulaitteen ohjelmiston. Tutkimuksen tulokset osoittavat, että testivetoisen kehityksen hyödyntäminen sulautettujen ohjelmistojen kehityksessä on sekä mahdollista että hyödyllistä. Menetelmän käytöllä saavutettavat hyödyt liittyvät esimerkiksi koodin ulkoiseen laatuun, koodin sisäiseen laatuun, testaukseen, tuottavuuteen, dokumentointiin sekä psykologisiin ja sosiaalisiin vaikutuksiin. Sulautettuja ohjelmistoja kehitettäessä etuja ovat myös esimerkiksi laitteistoon liittyvien riskien ja kulujen vähentyminen ja koodin parempi siirrettävyys. Menetelmän käyttäminen ei ole silti ongelmatonta, sillä erityisesti sulautettujen ohjelmistojen erityispiirteet tuovat mukanaan omat haasteensa. Suurimpana ongelmana on kuitenkin menetelmän vaativuus, sillä menetelmän hyödyntäminen tehokkaasti vaatii kehittäjältä paljon harjoittelua.Test-driven development is a software development methodology in which a programmer always writes an automatic unit test before implementing the actual functionality. Unit tests are being created based on the system requirements and these tests guide the development of the software. Even though test-driven development has gained popularity among the desktop and web software developers, it has not been widely applied to embedded system development. The goal of this study is to investigate how test-driven development can be utilized in the development of embedded systems. The study is divided into two phases: In the first phase literature research is used to introduce terminology, theories and methodologies related to test-driven development and to examine previous experiences and studies concerning the use of the methodology. In the second phase the utilization of test-driven development in practice is investigated by means of a case study whose experiences are compared with the results of the first phase. The case study observes the use of the methodology in a software development project in which Bitwise implements the software for an embedded welding data acquisition device for Kemppi. The results of this study indicate that the utilization of test-driven development in the development of embedded systems is viable and beneficial. The benefits that can be obtained are related to, for example, external code quality, internal code quality, testing, productivity, documentation, and psychological and social effects. When developing embedded software the benefits also include, for instance, reduced hardware related risks and expenses, and better software portability. However, the use of test-driven development is not without problems, as particularly the characteristics of embedded software bring their own challenges. The biggest problem with the methodology is the level of difficulty, as much practice is needed to be effective with it

    Design of a Selective Continuous Test Runner

    Get PDF
    This study presents the design of a selective continuous test runner, which has not been done before. Previous studies present only a continuous test runner with random or semi-random test cases selection techniques. Here we present the concept of influence graph which is constructed directly by using source code and then use this influence graph to detect any influence on any test case and run the tests on the background. For that purpose three algorithms were designed; one for building the influence graph for the first time, another for enhancing the influence graph according to code modifications, and the third for marking relevant test cases for retesting. We created an Integrated Development Environment (IDE) for test purpose. The mentioned algorithms were implemented on this IDE. Experimental results show: (1) Influence graphs helped efficiently in detecting the changed test cases, (2) The proposed technique worked well with large projects, and (3) The selective continuous test runner helped in detecting logic deviations in a more effective and fast way than the regular test running schemas
    corecore