11,717 research outputs found
A review paper: optimal test cases for regression testing using artificial intelligent techniques
The goal of the testing process is to find errors and defects in the software being developed so that they can be fixed and corrected before they are delivered to the customer. Regression testing is an essential quality testing technique during the maintenance phase of the program as it is performed to ensure the integrity of the program after modifications have been made. With the development of the software, the test suite becomes too large to be fully implemented within the given test cost in terms of budget and time. Therefore, the cost of regression testing using different techniques should be reduced, here we dealt many methods such as retest all technique, regression test selection technique (RTS) and test case prioritization technique (TCP). The efficiency of these techniques is evaluated through the use of many metrics such as average percentage of fault detected (APFD), average percentage block coverage (APBC) and average percentage decision coverage (APDC). In this paper we dealt with these different techniques used in test case selection and test case prioritization and the metrics used to evaluate their efficiency by using different techniques of artificial intelligent and describe the best of all
Automated Test Generation Based on an Applicational Model
Context: As testing is an extremely costly and time-consuming process, tools to automatically
generate test cases have been proposed throughout the literature. OutSystems
provides a software development environment where with the aid of the visual OutSystems
language, developers can create their applications in an agile form, thus improving
their productivity.
Problem: As OutSystems aims at accelerating software development, automating the
test case generation activity would bring great value to their clients.
Objectives: The main objectives of this work are to: develop an algorithm that generates,
automatically, test cases for OutSystems applications and evaluates the coverage
they provide to the code, according to a set of criteria.
Methods: The OutSystems language is represented as a graph to which developers can
then add pieces of code by dragging nodes to the screen and connecting them to the graph.
The methodology applied in this work consists in traversing these graphs with depth and
breadth-first search algorithms, employing a boundary-value analysis to identify the test
inputs and a cause-effect graphing to reduce the number of redundant inputs generated.
To evaluate these test inputs, coverage criteria regarding the control flow of data are
analysed according to node, branch, condition, modified condition-decision and multiple
condition coverage.
Results: This tool is able to generate test inputs that cover 100% of reachable code
and the methodologies employed help greatly in reducing the inputs generated, as well
as displaying a minimum set of test inputs with which the developer is already able to
cover all traversable code. Usability tests also yield very optimistic feedback from users.
Conclusions: This work’s objectives were fully met, seen as we have a running tool
able to act upon a subset of the OutSystems applicational model. This work provides
crucial information for assessing the quality of OutSystems applications, with value for
OutSystems developers, in the form of efficiency and visibility
Applying TSR techniques over large test suites
Tese de mestrado em Engenharia Informática (Engenharia de Software) Universidade de Lisboa, Faculdade de CiĂŞncias, 2020Com o aumento da necessidade de garantir a qualidade do software criado atualmente, tem sido cada vez mais indispensável dedicar parte do tempo de desenvolvimento (por vezes mais de metade) a testar o cĂłdigo desenvolvido. Apesar da elevada importˆancia desta tarefa, Ă© uma atividade que algumas vezes Ă© ignorada ou negligenciada, devido a ser um trabalho por vezes monĂłtono e cansativo. Esta Ă© uma área bastante explorada por investigadores que tentam, de diversas maneiras, automatizar algum deste processo e, tambĂ©m, reduzir o tempo e recursos necessários para efetuar esta tarefa. Nomeadamente, considera-se a proposta de tĂ©cnicas de redução de testes e ferramentas que as implementem, com o objetivo de agilizar esta tarefa, eliminando casos de testes desnecessários sem comprometer a cobertura dada pelo conjunto de testes original, bem como tĂ©cnicas de prioritização de testes, que reorganizam conjuntos de testes com o objetivo de executar os mais relevantes (de acordo com um determinado critĂ©rio) primeiramente, aumentando assim a sua capacidade de atingir algum objetivo. Neste contexto, destacam-se os testes de regressĂŁo, que permitem testar alterações ao software, verificando se as funcionalidades antigas continuam a funcionar com as alterações feitas. Salientam-se estes testes na medida em que sĂŁo considerados o tipo de testes de software mais cansativo, comportando elevados custos e nĂŁo evidenciando ganho claros a curto-prazo e, consequentemente, beneficiando particularmente das tĂ©cnicas descritas anteriormente. Com o surgimento destas tĂ©cnicas, Ă© inevitável surgirem algumas comparações, tentando escolher as que melhor se adequam a diferentes necessidades. O objetivo deste trabalho consiste em dar resposta a duas questões, particularmente interessantes dado o estado de arte atual: “Qual a melhor ferramenta de redução de testes?”(de acordo com parâmetros prĂ©-definidos) e “Se uma ferramenta de prioritização de testes for modificada, pode substituir de forma eficiente uma ferramenta de redução de testes?”. Para realizar a presente dissertação, foi estudado um grupo de ferramentas de redução de testes, de forma a ter uma melhor noção do estado de arte atual. Apesar de inicialmente terem sido encontradas onze ferramentas que poderiam vir a ser usadas com este propĂłsito, os testes realizados, assim como as propriedades de algumas ferramentas, restringiram a utilização da maioria delas, Assim, foram consideradas trĂŞs ferramentas: Evo- Suite, Testler e Randoop. De forma a tornar o objetivo deste trabalho mais enriquecido, foi tambĂ©m estudada uma ferramenta de prioritização de testes, Kanonizo. Para respondermos Ă s questões apresentadas, foi desenvolvida uma ferramenta que integra o conjunto de ferramentas de redução de testes seleccionado e que, dado um conjunto de projetos open-source, aplica as tĂ©cnicas destas ferramentas a cada um destes, efetuando assim a redução dos seus testes. Seguidamente, a ferramenta desenvolvida utiliza a ferramenta de prioritização Kanonizo para obter uma lista dos vários testes, ordenados consoante a sua importância; finalmente, sĂŁo eliminados os testes menos importantes, segundo um valor prĂ©-definido. De seguida, utilizando uma ferramenta de análise de cĂłdigo, neste caso a OpenClover, sĂŁo recolhidas mĂ©tricas referentes a cada conjunto de testes, para os projetos originais e igualmente para cada um dos reduzidos. Estas sĂŁo depois utilizadas para avaliar a eficácia da redução para cada ferramenta. A eficácia da redução pode ser influenciada por diversos fatores. No caso da nossa ferramenta, foram considerados o tamanho do ficheiro de testes, o nĂşmero de testes, o tempo de execução dos mesmos, a percentagem de cobertura total do cĂłdigo e a percentagem de cobertura de “ramos”no cĂłdigo. Por este motivo, decidiu-se adotar uma metodologia de Multi-Criteria Decision-Making, mais especificamente a Analytic Hierarchy Process que, segundo diversos critĂ©rios e valores de importância definidos entre eles, deduz a prioridade que cada critĂ©rio deve ter ao tentar atingir um objetivo comum, isto Ă©, que peso tem cada critĂ©rio no cálculo da pontuação de cada ferramenta. ApĂłs a finalização e aperfeiçoamento da ferramenta, foram realizadas experiĂŞncias que nos permitiram analisar a eficácia de cada ferramenta. Dada a facilidade de configuração da ferramenta, foram efetuadas diversas análises Ă s reduções efetuadas pelas ferramentas, alterando a importância de cada critĂ©rio considerado, visando verificar de que maneira estes influenciavam a escolha da melhor ferramenta. As pontuações de cada ferramenta de redução foram calculadas para seis cenários diferentes: um que replicasse as necessidades do ”mundo real”, dando portanto mais importância ao tempo de execução dos testes e cobertura atingida do que Ă dimensĂŁo dos testes em si; e um focando toda a importância para cada um dos sub-critĂ©rios definidos. Cada um destes cenários foi feito duas vezes - uma com os testes gerados pelo EvoSuite, e outra com os testes já existentes - com o objetivo de averiguar se as ferramentas de redução teriam um comportamento semelhante na presença de testes gerados automaticamente ou por humanos. Ignorando a ferramenta de prioritização, e tendo em conta o facto de que a EvoSuite sĂł poderia ser usada com testes gerados por si mesma, a ferramenta de redução que teve uma melhor pontuação foi a Testler, o que responde Ă nossa primeira questĂŁo do estudo. Quanto Ă segunda questĂŁo, apesar dos resultados terem mostrado indubitavelmente que a Kanonizo obteve pontuações melhores que as outras ferramentas analisadas, esta Ă© uma questĂŁo susceptĂvel Ă influĂŞncia de diversos fatores. No contexto das experiĂŞncias efetuadas, podemos dizer que a Kanonizo pode substituir qualquer uma das ferramentas de redução e, confiando nas pontuações, fazer um trabalho mais eficaz. No entanto, num contexto mais abrangente, torna-se difĂcil responder a esta questĂŁo sem considerar um nĂşmero mais elevado de ferramentas de redução de testes. Para mais, dependendo do algoritmo utilizado na ferramenta de prioritização, a redução feita por nĂłs pode nĂŁo ter qualquer critĂ©rio (no caso de algoritmos random), o que faria essencialmente com que estivĂ©ssemos a apagar mĂ©todos aleatoriamente, podendo causar grandes perdas em termos de cobertura de cĂłdigo. Quando falamos de “substituir”uma ferramenta de redução por uma de prioritização com uma abordagem semelhante Ă nossa, Ă© melhor utilizar algoritmos de prioritização que visem algum critĂ©rio, como dar prioridade a testes que cubram, por exemplo, linhas de cĂłdigo ainda nĂŁo cobertas, por exemplo, aumentando assim a probabilidade dos testes menos importantes serem redundantes e, consequentemente, apagados. Esta ferramenta foi desenvolvida de modo a que fosse facilmente modificável e expansĂvel, oferecendo assim uma maneira fácil para integrar novas ferramentas de redução de testes, permitindo realizar novas comparações Ă medida que estas ferramentas forem surgindo. Para alĂ©m disso, destaca-se tambĂ©m a simplicidade da configuração dos critĂ©rios a ter em conta quando calculamos a pontuação de cada ferramenta, e o valor que estes tĂŞm em comparação com os outros, possibilitando facilmente o cálculo de pontuações tendo em conta diversos cenários.Ao longo deste trabalho, o maior problema encontrado foi o estudo das ferramentas de redução. Para alĂ©m de algumas nĂŁo serem open-source, muitas das que eram nĂŁo iam de encontro aos nossos requisitos para integração na ferramenta, quer por linguagem de programação, quer por abordagem seguida, e muitas vezes a documentação encontrada estava desatualizada ou errada, dificultando todo o processo.With the growing need to assure the quality of the software created nowadays, it has become increasingly necessary to devote part of the development time (sometimes as much as half) to testing the developed code. Despite the high importance of this task, it is an activity that is sometimes ignored and neglected, due to it being, occasionally, a monotonous and tiring job. This is an area thoroughly investigated by researchers who try to automate some parts of this process, while also reducing the time and resources required for this task. In particular, we highlight the proposal of test reduction techniques and tools that implement them, with the goal of detecting unnecessary test cases without compromising the coverage given by the original test suite. The main objective of this work consists in answering two questions: “What is the best Test Suite Reduction tool?” (according to some criterion) and “Can a Test Case Prioritization tool be adapted to effectively replace a Test Suite Reduction tool?”. To answer these questions, we developed a framework that integrates a set of Test Suite Reduction and Test Cases Prioritization tools, with the possibility to integrate more, and that uses them, given a set of open source Java projects, to apply each of its techniques. We then gather test execution data about these projects and compare them to compute a score for each Test Suite Reduction tool, which is used to rank them. This score is achieved by applying a Multi-Criteria Decision-Making methodology, the Analytic Hierarchy Process, to weigh several chosen code metrics on the final score. To answer the second question we integrated a Test Case Prioritization tool into our framework, with which we will get a list of the less important test cases, that we will then remove, simulating a reduction
Test case prioritization approaches in regression testing: A systematic literature review
Context Software quality can be assured by going through software testing process. However, software testing phase is an expensive process as it consumes a longer time. By scheduling test cases execution order through a prioritization approach, software testing efficiency can be improved especially during regression testing. Objective It is a notable step to be taken in constructing important software testing environment so that a system's commercial value can increase. The main idea of this review is to examine and classify the current test case prioritization approaches based on the articulated research questions. Method Set of search keywords with appropriate repositories were utilized to extract most important studies that fulfill all the criteria defined and classified under journal, conference paper, symposiums and workshops categories. 69 primary studies were nominated from the review strategy. Results There were 40 journal articles, 21 conference papers, three workshop articles, and five symposium articles collected from the primary studies. As for the result, it can be said that TCP approaches are still broadly open for improvements. Each approach in TCP has specified potential values, advantages, and limitation. Additionally, we found that variations in the starting point of TCP process among the approaches provide a different timeline and benefit to project manager to choose which approaches suite with the project schedule and available resources. Conclusion Test case prioritization has already been considerably discussed in the software testing domain. However, it is commonly learned that there are quite a number of existing prioritization techniques that can still be improved especially in data used and execution process for each approach
- …