TL;DR: The state of load testing research and practice is surveyed and current techniques that are used in the three phases of a load test are compared and contrast.
Abstract: Many large-scale software systems must service thousands or millions of concurrent requests. These systems must be load tested to ensure that they can function correctly under load (i.e., the rate of the incoming requests). In this paper, we survey the state of load testing research and practice. We compare and contrast current techniques that are used in the three phases of a load test: (1) designing a proper load, (2) executing a load test, and (3) analyzing the results of a load test. This survey will be useful for load testing practitioners and software engineering researchers with interest in the load testing of large-scale software systems.
TL;DR: Empirical studies demonstrate the effectiveness of directly optimizing the model performance measure for the learning-to-rank approach to construct defect prediction models for the ranking task.
Abstract: Software defect prediction can help to allocate testing resources efficiently through ranking software modules according to their defects. Existing software defect prediction models that are optimized to predict explicitly the number of defects in a software module might fail to give an accurate order because it is very difficult to predict the exact number of defects in a software module due to noisy data. This paper introduces a learning-to-rank approach to construct software defect prediction models by directly optimizing the ranking performance. In this paper, we build on our previous work, and further study whether the idea of directly optimizing the model performance measure can benefit software defect prediction model construction. The work includes two aspects: one is a novel application of the learning-to-rank approach to real-world data sets for software defect prediction, and the other is a comprehensive evaluation and comparison of the learning-to-rank method against other algorithms that have been used for predicting the order of software modules according to the predicted number of defects. Our empirical studies demonstrate the effectiveness of directly optimizing the model performance measure for the learning-to-rank approach to construct defect prediction models for the ranking task.
TL;DR: A fuzzy logic based phase-wise software defect density indicator prediction model is proposed using the top most reliability relevant metrics of the each phase of the SDLC to analyze the defect severity in different artifacts of SDLC of a software project.
Abstract: Display Omitted We present a fuzzy logic based approach for phase-wise software defects prediction.Top-most reliability relevant software metrics of SDLC are considered.The proposed model is validated on 20 real software projects.The sensitivity analysis of software metrics is presented.It is useful to analyze the defects severity in different artifacts of SDLC. ContextThe software defect prediction during software development has recently attracted the attention of many researchers. The software defect density indicator prediction in each phase of software development life cycle (SDLC) is desirable for developing a reliable software product. Software defect prediction at the end of testing phase may not be more beneficial because the changes need to be performed in the previous phases of SDLC may require huge amount of money and effort to be spent in order to achieve target software quality. Therefore, phase-wise software defect density indicator prediction model is of great importance. ObjectiveIn this paper, a fuzzy logic based phase-wise software defect prediction model is proposed using the top most reliability relevant metrics of the each phase of the SDLC. MethodIn the proposed model, defect density indicator in requirement analysis, design, coding and testing phase is predicted using nine software metrics of these four phases. The defect density indicator metric predicted at the end of the each phase is also taken as an input to the next phase. Software metrics are assessed in linguistic terms and fuzzy inference system has been employed to develop the model. ResultsThe predictive accuracy of the proposed model is validated using twenty real software project data. Validation results are satisfactory. Measures based on the mean magnitude of relative error and balanced mean magnitude of relative error decrease significantly as the software project size increases. ConclusionIn this paper, a fuzzy logic based model is proposed for predicting software defect density indicator at each phase of the SDLC. The predicted defects of twenty different software projects are found very near to the actual defects detected during testing. The predicted defect density indicators are very helpful to analyze the defect severity in different artifacts of SDLC of a software project.
TL;DR: A comprehensive safety engineering approach based on STPA is presented, including software testing and model checking approaches for the purpose of developing safe software, which can be embedded within a defined software engineering process or applied to existing software systems.
TL;DR: This chapter reviews the theory and application ofCombinatorial testing, focusing particularly on research since 2010, with a brief background providing the rationale and development of combinatorial methods for software testing.
Abstract: Combinatorial testing has rapidly gained favor among software testers in the past decade as improved algorithms have become available and practical success has been demonstrated. This chapter reviews the theory and application of this method, focusing particularly on research since 2010, with a brief background providing the rationale and development of combinatorial methods for software testing. Significant advances have occurred in algorithm performance, and the critical area of constraint representation and processing. In addition to these foundational topics, we take a look at advances in specialized areas including test suite prioritization, sequence testing, fault localization, the relationship between combinatorial testing and structural coverage, and approaches to very large testing problems.
TL;DR: A two-year study of eight pilot projects to introduce combinatorial testing in a large aerospace corporation found that the new methods were practical, significantly lowered development costs, and improved test coverage by 20 to 50 percent.
Abstract: A two-year study of eight pilot projects to introduce combinatorial testing in a large aerospace corporation found that the new methods were practical, significantly lowered development costs, and improved test coverage by 20 to 50 percent.
TL;DR: The Greenup, Powerup, and Speedup metrics (GPS-UP) are proposed to categorize software implementation and optimization efficiency and compare them to existing metrics such as Energy Delay Product (EDP).
Abstract: With recognizing power as a first-class citizen in the HPC community and the growth of software running on battery-driven devices, the need to evaluate software design based on the combined effects of energy and performance has become eminent. Despite of the numerous metrics to evaluate software performance, the study on how to evaluate software energy efficiency is still in its early stage. In this paper, we propose the Greenup, Powerup, and Speedup metrics (GPS-UP) to categorize software implementation and optimization efficiency. The GPSUP metrics transform the performance, power and energy of a program into a point on the GPS-UP software energy efficiency quadrant graph. We present eight categories of possible scenarios of software optimization, with examples on how to obtain them. Four categories are green (save energy), and four are red (waste energy). Moreover, we compare our metrics to existing metrics such as Energy Delay Product (EDP).
TL;DR: The detailed implementation of a number of agile software development methods, including automated software testing, and enhanced simulation-in-the-loop testing for multi-UAS virtual and live-fly capabilities are highlighted.
Abstract: As unmanned aerial systems (UAS) continue to increasingly require greater integration of sophisticated software systems, developing and utilizing best practices and principles of formal software systems engineering can enhance and ensure the safety, reliability, and performance of these systems. This paper highlights the detailed implementation of a number of such tools, including agile software development methods such as automated software testing, and enhanced simulation-in-the-loop testing for multi-UAS virtual and live-fly capabilities. Significant and tangible benefit to active field experimentation is demonstrated through description of these integrated approaches, impacting ongoing efforts in multi-UAS research, testing, and assessment practices.
TL;DR: A systematic classification of available security regression testing approaches based on a solid study of background and related work is presented to sketch which parts of the research area seem to be well understood and evaluated, and which ones require further research.
Abstract: The openness of modern IT systems and their permanent change make it challenging to keep these systems secure. A combination of regression and security testing called security regression testing, which ensures that changes made to a system do not harm its security, are therefore of high significance and the interest in such approaches has steadily increased. In this article we present a systematic classification of available security regression testing approaches based on a solid study of background and related work to sketch which parts of the research area seem to be well understood and evaluated, and which ones require further research. For this purpose we extract approaches relevant to security regression testing from computer science digital libraries based on a rigorous search and selection strategy. Then, we provide a classification of these according to security regression approach criteria: abstraction level, security issue, regression testing techniques, and tool support, as well as evaluation criteria, for instance evaluated system, maturity of the system, and evaluation measures. From the resulting classification we derive observations with regard to the abstraction level, regression testing techniques, tool support as well as evaluation, and finally identify several potential directions of future research.
TL;DR: This paper aims to propose a method to derive thresholds in the SPL context using two code smells (God Class and Lazy Class) detection strategies and shows that the method has better recall when compared with baseline.
Abstract: A software product line (SPL) is a set of software systems that share a common and variable set of components (features). Software metrics provide basic means to quantify several quality aspects of SPL components. However, the effectiveness of the SPL measurement process is directly dependent on the definition of reliable thresholds. If thresholds are not properly defined, it is difficult to actually know whether a given metric value indicates a potential problem in the component implementation. There are several methods to derive thresholds for software metrics. However, there is little understanding about their appropriateness for the context of SPLs. This paper aims to propose a method to derive thresholds in the SPL context. Our method is evaluated in terms of recall and precision using two code smells (God Class and Lazy Class) detection strategies. The evaluation of our method is performed based on a benchmark of 33 SPLs and the results were compared with a method (baseline) with the same purpose used in the context of SPLs (not proposed). The results show that our method has better recall when compared with baseline.
TL;DR: In this paper, a software testing service can determine a number of test instances to utilize to perform the tests, such as through the use of an on-demand computing service executing in a service provider network, the test instances can also be configured with the software under test and a test runner capable of performing the tests on the software.
Abstract: Technologies are disclosed herein for distributed software testing. A software testing service is disclosed that can receive tests for software under test. The software testing service can determine a number of test instances to utilize to perform the tests. The determined number of test instances can then be provisioned, such as through the use of an on-demand computing service executing in a service provider network. The test instances can also be configured with the software under test and a test runner capable of performing the tests on the software. The software testing service can place the tests on a queue, such as a queue provided by a queue service. The test runners executing on the test instances can dequeue the tests and perform the tests on the software. Once the testing of the software under test has been completed, the test instances can be de-provisioned.
TL;DR: A novel method "m-ACO" for test case prioritization for regression testing and the performance evaluation of the proposed method using Average Percentage of faults Detected is focused on.
Abstract: Intense and widespread usage of software in every field of life has attracted the researchers to focus their attention on developing the methods to improve the efficiency of software testing; which is the most crucial and cost intensive phase of software development. Software testing aims to uncover the potential faults in Application Under Test by running the test cases on software code. Software code keeps on changing as the uncovered faults during testing are fixed by the developers. Regression testing is concerned with verifying the modified software code to ensure that changes in software code does not induce any undesired effect on rest of the code. Test Case Prioritization is a regression testing technique which re-schedule the execution sequence of test cases to improve the fault detection rate and enhance the performance of regression test suite. This paper focuses on proposing a novel method "m-ACO" for test case prioritization and the performance evaluation of the proposed method using Average Percentage of faults Detected.
TL;DR: The vision of the integration of human factors engineering into the software development process is presented to improve the quality of software and to deal with human errors in a systematic way.
Abstract: In this paper, we present our vision of the integration of human factors engineering into the software development process. The aim of this approach is to improve the quality of software and to deal with human errors in a systematic way.
TL;DR: It is shown that indeed finding an efficient way of handling constraints during search is the key factor in wider applicability of CIT techniques.
Abstract: Combinatorial Interaction Testing (CIT) has gained a lot of attention in the area of software engineering in the last few years. CIT problems have their roots in combinatorics. Mathematicians have been concerned with the NP-complete problem of finding minimal covering arrays (in other words, minimal CIT test suites) since early nineties. With the adoption of these techniques into the area of software testing, an important gap has been identified - namely consideration of real-world constraints. We show that indeed finding an efficient way of handling constraints during search is the key factor in wider applicability of CIT techniques.
TL;DR: An overview of existing soft computing techniques, and critically analyzed the work done by the various researchers in the field of software reliability modeling capabilities is provided.
Abstract: To obtained solutions to problems quickly, accurately and acceptably, a large number of soft computing techniques have been developed, but it is very difficult to find out which one is the most suitable and can be used globally. In this paper, we have provided an overview of existing soft computing techniques, and then critically analyzed the work done by the various researchers in the field of software reliability. The probability of failure-free operation of a software system for a specified time in a specifies environment. Further to this, we have also compared soft computing techniques in terms of software reliability modeling capabilities.
TL;DR: A new reliability modeling and prediction approach that considers reliability-related architecture factors by explicitly modeling the system usage profile, and transforms the testing profile into the practical usage profile of components by representing the profile with input sub-domains.
Abstract: With the rise of component-based software development, its reliability has attracted much attention from both academic and industry communities. Component-based software development focuses on architecture design, and thus it is important for reliability analysis to emphasize software architecture. Existing approaches to architecture-based software reliability analysis don’t model the usage profile explicitly, and they ignore the difference between the testing profile and the practical profile of components, which limits their applicability and accuracy. In response to these issues, a new reliability modeling and prediction approach is introduced. The approach considers reliability-related architecture factors by explicitly modeling the system usage profile, and transforms the testing profile into the practical usage profile of components by representing the profile with input sub-domains. Finally, the evaluation experiment shows the potential of the approach. key words: software reliability, software architecture, scenario, component, profile
TL;DR: This paper presents a reliability modeling and prediction approach for component-based software systems that considers explicitly several factors which influence the system reliability, including error propagation, software fault tolerance mechanisms, and concurrently present errors.
TL;DR: Software Testing: Concepts and Operations is a great resource for software quality and software engineering students because it presents them with fundamentals that help them to prepare for their ever evolving discipline.
Abstract: Explores and identifies the main issues, concepts, principles and evolution of software testing, including software quality engineering and testing concepts, test data generation, test deployment analysis, and software test management This book examines the principles, concepts, and processes that are fundamental to the software testing function. This book is divided into five broad parts. Part I introduces software testing in the broader context of software engineering and explores the qualities that testing aims to achieve or ascertain, as well as the lifecycle of software testing. Part II covers mathematical foundations of software testing, which include software specification, program correctness and verification, concepts of software dependability, and a software testing taxonomy. Part III discusses test data generation, specifically, functional criteria and structural criteria. Test oracle design, test driver design, and test outcome analysis is covered in Part IV. Finally, Part V surveys managerial aspects of software testing, including software metrics, software testing tools, and software product line testing. * Presents software testing, not as an isolated technique, but as part of an integrated discipline of software verification and validation * Proposes program testing and program correctness verification within the same mathematical model, making it possible to deploy the two techniques in concert, by virtue of the law of diminishing returns * Defines the concept of a software fault, and the related concept of relative correctness, and shows how relative correctness can be used to characterize monotonic fault removal * Presents the activity of software testing as a goal oriented activity, and explores how the conduct of the test depends on the selected goal * Covers all phases of the software testing lifecycle, including test data generation, test oracle design, test driver design, and test outcome analysis Software Testing: Concepts and Operations is a great resource for software quality and software engineering students because it presents them with fundamentals that help them to prepare for their ever evolving discipline.
TL;DR: Challenges to widespread adoption of concolic testing in an industrial setting are discussed and further opportunities where concolicTesting can find renewed applicability are highlighted.
Abstract: Although concolic testing is increasingly being explored as a viable software verification technique, its adoption in mainstream software development and testing in the industry is not yet extensive. In this paper, we discuss challenges to widespread adoption of concolic testing in an industrial setting and highlight further opportunities where concolic testing can find renewed applicability.
TL;DR: Recurring problems in evaluating trace ability techniques are discussed, essential properties that evaluation methods should possess are identified, and guidelines for benchmarking software traceAbility techniques are provided.
Abstract: To comparatively evaluate automated trace ability solutions, we need to develop standardized benchmarks. However there is currently no consensus on how a benchmark should be constructed and used to evaluate competing techniques. In this paper we discuss recurring problems in evaluating trace ability techniques, identify essential properties that evaluation methods should possess, and provide guidelines for benchmarking software trace ability techniques. We illustrate the properties and guidelines using empirical evaluation of three software trace ability techniques on nine data sets.
TL;DR: A benchmarking tool that allows the user to measure the important performance metrics of any network function realized on any hardware and software combination, and then to compare the results on a web interface with those of all the setups collected in the database.
Abstract: With the soar of Software Defined Networking planning a network service becomes harder of a task than ever before. Selecting traditional network elements that provide the best value for money given the performance requirements and the allocated budget is not the only option today: one might also take the software solution on generic hardware alternative. The problem is that the set of available solutions and the possible combinations of software and hardware components in this nowadays' alternative is frustratingly vast while the decision maker lacks any clear benchmarking comparison between the existing options. Our solution presented in this paper provides an answer to this critical need: we propose a benchmarking tool that allows the user to measure the important performance metrics of any network function realized on any hardware and software combination, and then to compare the results on a web interface with those of all the setups collected in our database.
TL;DR: This keynote speech will provide a summary of the state-of-the-art of metamorphic testing.
Abstract: The test oracle problem is regarded as one of the most challenging problems in software testing. Metamorphic testing has been developed to alleviate this problem, which is done using the relations involving relevant inputs and their outputs. This keynote speech will provide a summary of the state-of-the-art of metamorphic testing.
TL;DR: This paper presents a formal development process, based on the Abstract State Machine method, that integrates most of the activities required by the standards and permits to obtain, through a sequence of refinements, more detailed models that can be formally validated and verified.
Abstract: Medical device software malfunctioning can lead to injuries or death for humans and, therefore, its development should adhere to certification standards. However, these standards establish general guidelines on the use of common software engineering activities without any indication regarding methods and techniques to assure safety and reliability. This paper presents a formal development process, based on the Abstract State Machine method, that integrates most of the activities required by the standards. The process permits to obtain, through a sequence of refinements, more detailed models that can be formally validated and verified. Offline and online testing techniques permit to check the conformance of the implementation w.r.t. the specification. The process is applied to the validation of the SAM medical software, that is used to measure the patients' stereoacuity in the diagnosis of amblyopia.
TL;DR: The main aim of this paper is to study various methods that can be used to predict the defects in software.
Abstract: This paper explains how to find the defects in the software using various techniques. We have analyzed different data sets which have been used in finding faults in various research papers. The main aim of this paper is to study various methods that can be used to predict the defects in software.
TL;DR: A software testing machine may be configured to provide an advanced symbolic execution approach to software testing that combines dynamic symbolic execution and static symbolic execution, leveraging the strengths of each and avoiding the vulnerabilities of each.
Abstract: An automatic software testing machine may be configured to provide an advanced symbolic execution approach to software testing that combines dynamic symbolic execution and static symbolic execution, leveraging the strengths of each and avoiding the vulnerabilities of each. One or more software testing machines within a software testing system may be configured to automatically and dynamically alternate between dynamic symbolic execution and static symbolic execution, based on partial control flow graphs of portions of the software code to be tested. In some example embodiments, a software testing machine begins with dynamic symbolic execution, but switches to static symbolic execution opportunistically. In static mode, instead of checking entire programs for verification, the software testing machine may only check one or more program fragments for testing purposes. Thus, the software testing machine may benefit from the strengths of both dynamic and static symbolic execution.
TL;DR: A hybrid algorithm is proposed which is used to resolve an optimal test case sequence selection as well as new test case generation for regression testing, which is achieved better results rather than other approaches.
Abstract: Regression testing is one of the testing methods, which is done to assure that the changes made in fixes or other improvement changes does not affect the previously developed functionality of the software. Due to the reasons mentioned below, the regression testing posses a significant place in the software testing. Since it reduces the gaps of an application, modification has to be created and tested, test the new modifications to check that the modification did not change the any other part of the application, test coverage must be enhanced without conciliation of timelines. Thus, the test case generation and test case selection is the import role in the SUT (Software Under Test). More techniques are proposed to overcome these issues however those techniques could not be achieved complete code coverage with less time duration. In this paper proposed a hybrid algorithm which is used to resolve an optimal test case sequence selection as well as new test case generation for regression testing. The experimental results are shown our proposed approach is achieved better results rather than other approaches.
TL;DR: This paper demonstrates how software testing can be efficient with management of data integrity factor to avoid major security issues by developing and proving the necessity of Component-Based Software testing prioritization framework.
Abstract: Test case prioritization includes testing experiments in a request that builds the viability in accomplishing some execution objectives. The importance amongst the most imperative testing objectives is the fast rate of fault recognition. Test case ought to run in a request that extends the likelihood of fault discovery furthermore that detects the most serious issues at the early stage of testing life cycle. In this paper, we develop and prove the necessity of Component-Based Software testing prioritization framework which plans to uncover more extreme bugs at an early stage and to enhance software product deliverable quality utilizing Genetic Algorithm (GA) with java decoding technique. For this, we propose a set of prioritization keys to plan the proposed Component-Based Software java framework. In our proposed method, we allude to these keys as Prioritization Keys (PK). These keys may be project size, scope of the code, information stream, and bug inclination and impact of fault or bug on overall system, which prioritizes the Component-Based Software framework testing. The integrity of these keys was measured with implementation of key assessment metric called KAM that will likewise be ascertained. This paper demonstrates how software testing can be efficient with management of data integrity factor to avoid major security issues. One of the main advantages of our approach is that domain specific semantics can be integrated with the data quality test cases prioritization, thus being able to discover test feed data quality problems beyond conventional quality measures.
TL;DR: Guided Random Testing (GRT) performs static analysis on software under test to extract relevant knowledge and further combines the information extracted at run-time to guide the whole test generation procedure.
Abstract: While being highly automated and easy to use, existing techniques of random testing suffer from low code coverage and defect detection ability for practical software applications. Most tools use a pure black-box approach, which does not use knowledge specific to the software under test. Mining and leveraging the information of the software under test can be promising to guide random testing to overcome such limitations. Guided Random Testing (GRT) implements this idea. GRT performs static analysis on software under test to extract relevant knowledge and further combines the information extracted at run-time to guide the whole test generation procedure. GRT is highly configurable, with each of its six program analysis components implemented as a pluggable module whose parameters can be adjusted. Besides generating test cases, GRT also automatically creates a test coverage report. We show our experience in GRT tool development and demonstrate its practical usage using two concrete application scenarios.