5 research outputs found

    Uma abordagem reativa de construção de linhas de produto de software baseada em TDD e refatoração

    Get PDF
    Dissertação (mestrado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Ciência da Computação, Florianópolis, 2014Linhas de Produto de Software (LPS) trazem diversos benefícios, como a diminuição do tempo de entrada no mercado, a redução dos custos de desenvolvimento, o aumento da produtividade e a melhora da qualidade do produto final. Uma das práticas que auxilia na garantia de qualidade é a prática de testes. No entanto, ainda existem desafios e lacunas na utilização desta prática no desenvolvimento de LPSs. Nem todas as técnicas de testes utilizadas no desenvolvimento de um produto único podem ser aplicadas em LPSs e, portanto, novas adaptações e propostas são necessárias. Além disso, o desenvolvimento tradicional de LPSs também demanda um alto investimento inicial de longo prazo e oferece riscos para mercados dinâmicos, onde mudanças são difíceis de prever. Entretanto, já existem propostas para levar as vantagens de LPSs para mercados dinâmicos por meio da utilização de práticas de desenvolvimento ágil de software, essa união é denominada Engenharia de Linha de Produto Ágil (ELPA). Esta dissertação visa a elaboração de uma abordagem para a construção de LPSs, utilizando a ELPA. Nesta proposta as práticas ágeis de Desenvolvimento Dirigido por Testes (Test-Driven Development - TDD) e Refatoração conduzem a criação de uma LPS de abordagem reativa sem a tentativa de prever variações futuras. Para dar suporte à prática de testes unitários no desenvolvimento reativo de LPSs, foi desenvolvido um framework de testes com a proposta de adaptar padrões de testes unitários que facilitem a verificação da exatidão das aplicações geradas. Os padrõesde teste Framework de Automação de Testes e Testes Dirigidos por Dados fornecem a reutilização da lógica de testes e a automação dos mecanismos de implementação, reduzindo o esforço necessário para testar as variações de cada aplicação. A proposta foi avaliada através de um exemplo que mostrou a aplicação da abordagem e do framework de testes em uma LPS que foi construída de forma reativa a partir de uma aplicação existente. Como resultado foi visto um alto grau de reuso de testes, com 89% de reuso na segunda aplicação, após a modificação de três features, 97% na terceira aplicação, após a adição de uma feature e modificação de outra, e 100% na quarta aplicação onde nenhuma feature foi adicionada ou modificada, e a aplicação foi construída com variantes existentes.Abstract: Software Product Line (SPL) brings benefits such as lower time-to market, less development costs, increased productivity, and improved quality. The quality assurance can be reached through the testing area, however this area still has challenges and gaps in the SPL development. Since not all testing techniques used in a single product development can be applied to SPL, thus some adaptations and new proposals are required. Traditional SPL also requires a high initial investment and offers long-term risks to dynamic markets where changes are difficult to predict. Currently, proposals bring the advantages of SPL for dynamic markets through the use of agile software development practices, which is called Agile Product Line Engineering (APLE). This work presents the development of the necessary steps for building SPL using the APLE. In this proposal the agile practices Test-Driven Development (TDD) and Refactoring lead a reactive development of SPL without attempting to predict future variations. It is also proposed to adapt unit test patterns in the context of SPL. The test patterns Test Automation Framework and Data-Driven Tests provide the reuse of test logic and automation of the implementation mechanisms, reducing the effort required to test variations of each application. The result of this adaptation is a testing framework to be used during application engineering to configure tests through parameterized tests and verify the correctness of generated applications. Thus, this work shows how the agile practices TDD and Refactoring may cause a SPL to evolve and acquire variation points on demand. The proposal was evaluated through an example of a SPL that was built with a reactive approach from an existing application. As a result, it was obtained a high degree of tests reuse, with 89% of reuse in the second application after modifying three features, 97% in the third application after adding one feature and modifying another one, and 100% of reuse in the fourth application where no feature was added or modified, and the application was built with existing variants

    Metody prowadzenia testów jednostkowych w standardzie C++14 z wykorzystaniem biblioteki GMOCK

    Get PDF
    The article presents one of the problems encountered when using the C ++ 14 standard along with the Google Mock library. Based onthe introduced problem, possible solutions were discussed, as well as an improved scheme for the TDD approach was presented.W artykule przedstawiono jeden z problemów występujących podczas korzystania ze standardu C++14 wraz z biblioteką Google Mock. Na podstawie wprowadzonego problemu omówiono możliwe rozwiązania, a także zaprezentowano poprawiony schemat dla podejścia TDD

    Model Generation to Support Model-Based Testing Applied on NASA DAT - An Experience Report

    Get PDF
    Model-based Testing (MBT), where a model of the system under tests (SUT) behavior is used to automatically generate executable test cases, is a promising and versatile testing technology. Nevertheless, adoption of MBT technologies in industry is slow and many testing tasks are performed via manually created executable test cases (i.e. test programs such as JUnit). In order to adopt MBT, testers must learn how to construct models and use these models to generate test cases, which might be a hurdle. An interesting observation in our previous work is that the existing manually created test cases often provided invaluable insights for the manual creation of the testing models of the system. In this paper we present an approach that allows the tester to first create and debug a set of test cases. When the tester is happy with the test cases, the next step is to automatically generate a model from the test cases. The generated model is derived from the test cases, which are actions that the system can perform (e.g. a button clicks) and their expected outputs in form of assert statements (e.g. assert data entered). The model is a Finite State Machine (FSM) model that can be employed with little or no manual changes to generate additional test cases for the SUT. We successfully applied the approach in a feasibility study to the NASA Data Access Toolkit (DAT), which is a web-based GUI. One compelling finding is that the test cases that were generated from the automatically generated models were able to detect issues that were not detected by the original set of manually created test cases. We present the findings from the case study and discuss best practices for incorporating model generation techniques into an existing testing process

    Framework de verificação estática e dinâmica de código : uma abordagem baseada em valor

    Get PDF
    Trabalho de Conclusão de Curso (graduação)—Universidade de Brasília, Faculdade UnB Gama, 2017.A produção de código e a implementação de testes unitários, bem como a realização de inspeções de código, estão instrinsecamente conectados. Testes unitários e inspeções, enquanto práticas complementares da verificação de software, foram concebidas com a intenção de aprimorar a identificação de defeitos existentes no código fonte do software. Nesse sentido, também é válido notar que a qualidade do código fonte influi na qualidade de uso do software, sendo esta contemplada pelo usuário. Mediante este cenário, durante a execução da primeira parte do plano metodológico elaborado neste estudo, concebeu-se um framework que reúne um conjunto de atividades e práticas que favorecem a implementação de testes unitários e realização de inspeções correlacionado aos conceitos da Engenharia de Software Baseada em Valor, que aborda o alinhamento entre a missão do projeto e as atividades técnicas de desenvolvimento de software. Neste trabalho, o objetivo é apresentar a avaliação da efetividade do framework concebido na primeira parte deste estudo mediante o uso de um procedimento técnico denominado pesquisa-ação. Foram executados dois ciclos de pesquisa-ação para coletar os dados de execução dos projetos adotados para utilização do framework. Ao final será possível contemplar um framework de avaliação da qualidade de código comprovadamente adequado para uso em qualquer organização que faça uso de metodologias ágeis.Code production and implementation of unit tests, as well as code inspections, are insensitively connected. Unit tests and inspections, as complementary software verification practices, were designed with the aim of improving the identification of defects in the software source code. In this sense, it is also worth noting that the quality of the source code influences the quality of use of the software, which is contemplated by the user. Through this scenario, during the execution of the first part of the methodological plan elaborated in this study, a framework was conceived that brings together a set of activities and practices that favor the implementation of unit tests and conducting inspections correlated to the concepts of Software Engineering Based on Value, which addresses the alignment between the project’s mission and the technical activities of software development. In this work, the objective is to present the evaluation of the effectiveness of the framework conceived in the first part of this study through the use of a technical procedure called action research. Two action research cycles were executed to collect the execution data of the projects adopted to use the framework. At the end it will be possible to contemplate a code quality evaluation framework that is proven to be suitable for use in any organization that uses agile methodologies

    An analysis of unit tests of a flight software product line

    No full text
    This paper presents an analysis of the unit testing approach developed and used by the Core Flight Software System (CFS) product line team at the NASA Goddard Space Flight Center (GSFC). The goal of the analysis is to understand, review, and recommend strategies for improving the CFS' existing unit testing infrastructure as well as to capture lessons learned and best practices that can be used by other software product line (SPL) teams for their unit testing. The results of the analysis show that the core and application modules of the CFS are unit tested in isolation using a stub framework developed by the CFS team. The application developers can unit test their code without waiting for the core modules to be completed, and vice versa. The analysis found that this unit testing approach incorporates many practical and useful solutions such as allowing for unit testing without requiring hardware and special OS features in-the-loop by defining stub implementations of dependent modules. These solutions are worth considering when deciding how to design the testing architecture for a SPL
    corecore