2018
DOI: 10.1007/978-3-319-94460-9_8
|View full text |Cite
|
Sign up to set email alerts
|

Erlang Code Evolution Control

Abstract: The main goal of this work is to show how SecEr can be used in different scenarios. Concretely, we demonstrate how a user can run SecEr to obtain reports about the behaviour preservation between versions as well as how a user can use SecEr to find the source of a discrepancy. The use cases presented are three: two completely different versions of the same program, an improvement in the performance of a function and a program where an error has been introduced. A complete description of the technique and the to… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1

Citation Types

0
11
0
1

Year Published

2018
2018
2019
2019

Publication Types

Select...
2
1
1

Relationship

3
1

Authors

Journals

citations
Cited by 4 publications
(12 citation statements)
references
References 18 publications
0
11
0
1
Order By: Relevance
“…e method follows the schema shown in Input: A program P, an executable program slice S of P, a slicing criterion C for S, and the maximum number of nodes MN to be removed at a time. Output: A quasi-minimal slice of P. Figure 3, where we use two program slicers in Phase 1 called Slicerl [15] and e-Knife; CutEr [24] as a test-case generator; SecEr [25] as a test-case validator; and Cover [26] as a coverage meter to decide when to stop generating test cases.…”
Section: Implementation Of the Methods For Erlangmentioning
confidence: 99%
See 1 more Smart Citation
“…e method follows the schema shown in Input: A program P, an executable program slice S of P, a slicing criterion C for S, and the maximum number of nodes MN to be removed at a time. Output: A quasi-minimal slice of P. Figure 3, where we use two program slicers in Phase 1 called Slicerl [15] and e-Knife; CutEr [24] as a test-case generator; SecEr [25] as a test-case validator; and Cover [26] as a coverage meter to decide when to stop generating test cases.…”
Section: Implementation Of the Methods For Erlangmentioning
confidence: 99%
“…However, in our case, these inputs must be complemented with very speci c outputs to form the test cases: the sequences of values the slicing criterion is evaluated to. In our case, this is done by a tool called SecEr [25] (which implements function seq in Algorithm 1). Given a…”
Section: Test-case Validationmentioning
confidence: 99%
“…For instance, Travis CI can be easily integrated in a GitHub repository so that each time a pull request is performed, the test suite is launched. Point of interest (POI) testing [9,11,12] (briefly described in section 2) is an alternative and complementary approach that creates an automatic test suite to do regression testing: (i) An alternative approach because it can work as a standalone way without the need of using other techniques. Therefore, POI testing can check the evolution of the code even if no test suite has been defined.…”
Section: Introductionmentioning
confidence: 99%
“…SecEr reports that no discrepancies exist $ ./secer -f string0.erl -li 2 -var Res -oc 1 -f string1.erl -li 2 -var Res -oc 1 -funs [main/2] -to 15Function: tokens/2 ----------------------------Generated test cases: 7044Both versions of the program generate identical traces for the defined points of interest----------------------------Listing 1.9. SecEr reports discrepancies after modifying optimized string.erlFunction: tokens/2 ----------------------------Generatedtest cases: 6576 Mismatching test cases: 5040 (76.64%) POIs comparison: + {{'string0.erl',2,{var,'Res'},1}, {'string1.erl',2,{var,'Res'},1}} Unexpected trace value => 5040 Errors Example call: tokens([12,4,5],[2,3,2,5,0,1]) ------Detected Error ------Call: tokens([12,4,5],[2,3,2,5,0,1]) Error Type: Unexpected trace value POI: ({'string0.erl',2,{var,'Res'},1}) trace:[[[12,4]]] POI: ({'string1.erl',2,{var,'Res'},1}) trace:[[4,[12,4]]] ---------------------…”
mentioning
confidence: 99%
“…(2,6) ------Detected Error ------Call: main(2,6) Error Type: Unexpected trace value POI: ({'happy0.erl',9,{var,'Happy'},1}) trace: [false,false,false,false,false,true,false,false,true,false,false,true,false,false,false,false, false,true,false,false,false,true,false,false,false,false,true] POI: ({'happy1.erl',17,{var,'Happy'},1}) trace: [false,false,false,false,false,false,false,false,true,false,false,true,false,false,false,false, false,true,false,false,false,true,false,false,false,false,true,false,false,true]…”
unclassified