Many software projects include an extensive suite of example-based unit tests. The examples in the test suite can be used as an implicit specification of the behavior of the software. Inferring invariants from these examples may aid in the creation of property-based tests. However, the existing research on this topic is scarce and there is none conducted using the inference of invariants. In this thesis, we examine software projects with existing test suites. The Daikon invariant detector is used to infer invariants from test executions. The resulting invariants are then used to formalize properties to be used in property-based tests. The success of the process depends on a few variables. First, the tests have to be descriptive enough to allow any generalization to take place. Second, the Daikon invariant detector needs to be able to create an abstraction from the examples that are not too restrictive nor too lenient. Third, the format of the invariants needs to match available value generator constraints in property-based testing frameworks. Fourth, the resulting tests need to provide some benefit to the test suite. In all experiments, at least one of these requirements is not met. The conclusion is that inferred invariants are likely not useable in the creation of property-based tests. Furthermore, in instances where properties can be derived from invariants, the resulting tests do not practically improve the test suite. For the test suite to be improved, the abstraction of examples needs to describe properties of the software not contained in the existing tests. / Många mjukvaruprojekt använder sig av automatiserade enhetstester. Dessa är ofta baserade på flertalet enskilda exempel. Dessa kan ses som en implicit specifikation. Detta skulle kunna förenkla processen att skapa egenskapsbaserade tester. Tidigare forskning inom detta område är sällsynt och inga tidigare studier använder invarianter för att skapa egenskapsbaserade tester. Invariantdetektionsprogrammet Daikon används för att dynamisk utläsning av invarianter från exekvering av tester. Dessa användas sedan för att formalisera programegenskaper till egenskapsbaserade tester. Denna tekniks framgång är beroende av flera variabler. Befintliga tester måste vara tillräckligt deskriptiva för att kunna abstraheras till generalla egenskaper. Daikon behöver kunna utläsa invarianter from testexekveringen som varken är för generella eller för specifika. Invarianternas format behöver likna generatorfunktioner i egenskapsbaserade testramverk. De skapade egenskapsbaserade testerna behöver bidra positivt till programmets testsvit. I alla experiment fanns brister i åtminstone ett av dessa steg. Således är slutsatsen att automatiskt utlästa invarianter sannolikt inte är ett effektivt sätt att skapa egenskapsbaserade tester. Dessutom, i de fall då egenskapsbaserade tester skapats bidrar de inte till en förbättring av testsviten. För att förbättra testsviten måste de nya testerna beskriva egenskaper som inte redan testas av de befintliga testerna.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:kth-315989 |
Date | January 2022 |
Creators | Uggelberg, Richard |
Publisher | KTH, Skolan för elektroteknik och datavetenskap (EECS) |
Source Sets | DiVA Archive at Upsalla University |
Language | English |
Detected Language | Swedish |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Relation | TRITA-EECS-EX ; 2022:108 |
Page generated in 0.0034 seconds