<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">On Optimization of Test Parallelization with Constraints</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Masoumeh</forename><surname>Parsa</surname></persName>
						</author>
						<author>
							<persName><forename type="first">Adnan</forename><surname>Ashraf</surname></persName>
						</author>
						<author>
							<persName><forename type="first">Dragos</forename><surname>Truscan</surname></persName>
						</author>
						<author>
							<persName><forename type="first">Ivan</forename><surname>Porres</surname></persName>
						</author>
						<title level="a" type="main">On Optimization of Test Parallelization with Constraints</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">60F3EB00F15EB0CDBC2AAE7727CB9C52</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T01:13+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Traditionally, test cases are executed sequentially due to the dependency of test data. For large system level test suites, when a test session can take hours or even days, sequential execution does not satisfy any more the industrial demands for short lead times and fast feed-back cycles. Parallel test execution has appeared as an appealing option to cut down on the test execution time. However, running tests in parallel is not a trivial task due to dependencies and constraints between tests cases. Therefore, we propose an approach to parallelize test execution based on the available resources, constraints between tests, and the duration of tests that creates parallel test execution schedules that can be run in multiple testing environments simultaneously. We formulate and solve the problem as Ant Colony System, in order to find a nearoptimal solution.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>The number of test cases required to ensure the quality of a software system grows handin-hand with its complexity, and consequently, the total test execution time increases proportionally. For large software systems, test execution time becomes increasingly critical in automated regression testing, where a large suite of tests is executed frequently on continuous integration servers.</p><p>Different approaches like test selection, test prioritization or test case reduction are typically used to speed up test execution, especially in the context of regression testing <ref type="bibr" target="#b11">[YH12]</ref>. However, these improvements can be limited for large test suites.</p><p>Test suites are trivially parallelizable if tests are independent, that is, if one test does not rely on the system state established by a previous test and it is free of interference from other tests. An example of an interference is when two or more tests require exclusive access to a shared resource such as a database. However, one cannot always assume that these conditions hold and tests that pass when executed in a certain sequence may fail under trivial parallelization. A third, perhaps less obvious but even more important issue is what we refer to as state incompatibility. In this case, one test may leave the system in a state from which another test cannot proceed. One concrete example of this is a test that deletes data from a database that is expected by other tests. While such cases can often be handled by resetting the system under test to a known initial state, resets can be time-consuming and an efficient test execution approach should strive to minimize or even remove the need for system resets.</p><p>Although test designers may strive to create independent test cases, recent studies show that in practice tests are often not completely independent [ZJW + 14, BMDK15], while other researchers consider these useful and exploit test dependencies <ref type="bibr" target="#b9">[HM13]</ref>. As a conse-quence, there is a need to plan and schedule the execution of complex test suites in order to avoid undesired interactions between tests and time consuming system resets. Although it is possible to create a test schedule manually, this is not viable in practice if the number of tests is large. To address this issue, we propose an approach to build test schedules automatically by analyzing known dependencies among tests and their execution time. The dependencies between the tests can be derived automatically [ZJW + 14] or defined manually <ref type="bibr">[dep]</ref>. The scheduler is run before each integration testing while preparing the system under test. We aim to find the best possible groups and order of tests in each group to be distributed between a number of agents which share or do not share the same resources with the objective of reducing the total time that is required for all the tests to be executed. The other objective is to decrease the number of failed tests which are caused by the dependencies between the tests. We define the relations between the tests as a set of constraints in scheduling problems. The first objective of the work is to reduce the tests failing due to their state incompatibilities, interferences or dependencies while executing in parallel. The second objective is to minimize the test execution time of the entire test suite, by searching for the best possible ordering of tests between different agents.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Background and Related Work</head><p>Recent work exploits test case dependencies as a means for prioritization of test suites <ref type="bibr" target="#b9">[HM13]</ref>, online reduction of test suites <ref type="bibr" target="#b0">[AMPW15]</ref>, or for protocol conformance testing in the context of distributed systems <ref type="bibr" target="#b10">[MGM15]</ref>. Other works investigate how test dependencies can be detected in order to improve the independence of test cases <ref type="bibr" target="#b5">[GSHM15]</ref> or to shorten the test execution time by minimizing the number of database resets <ref type="bibr" target="#b6">[HKK05]</ref>. However, none of these works investigated approaches for executing tests in parallel.</p><p>Haftmann et al. propose an approach for running test cases in parallel <ref type="bibr" target="#b7">[HKL05]</ref>. The approach involves partitioning the test sequences between test executors and ordering the execution sequence on each executor, as an extension of their work in <ref type="bibr" target="#b6">[HKK05]</ref>, in which three scheduling strategies were proposed for resolving the test incompatibilities on database applications systems with minimum number of resets.</p><p>In the previously mentioned paper, the constraints that are taken into consideration are the incompatibility and interference constraints between the tests. However, we also cover the dependency constraint. Furthermore, the goal of reordering the tests in previous works is to reduce the system reset in order to reduce the test execution time, but we are aiming on generating a near optimal schedule which satisfy the constraint and reduce the total test execution time.</p><p>Since test scheduling optimization is a complex combinatorial optimization problem, it is computationally expensive to find an exact solution for a very large number of test cases. Therefore, we formulate it as a search problem and apply a highly adaptive online optimization [HLS + 13] approach called Ant Colony Optimization (ACO) <ref type="bibr" target="#b4">[DG97]</ref> to find a nearoptimal solution in polynomial time. There are a number of ant algorithms, such as, Ant System (AS), Max-Min AS (MMAS), and Ant Colony System (ACS) [DDCG99] <ref type="bibr" target="#b4">[DG97]</ref>. ACS <ref type="bibr" target="#b2">[DDCG99]</ref> was introduced to improve the performance of AS and it is currently one of the best performing ant algorithms. Therefore, in this paper, we apply ACS to the test scheduling optimization problem.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">The Test Scheduling Problem</head><p>In this section, we represent the problem of test scheduling by defining the dependencies, interference and state incompatibilities between the tests. We assume that we have at our disposal one or more test environments (T E) that can execute test cases. Each T E has a number of agents (AG). Each AG can run one test case at a time, in parallel with the other AGs. The AGs in a given T E have a shared system under test and state (memory, file system, database), while each T E is isolated from the other T Es and cannot collaborate or interfere with each other.</p><p>In Figure <ref type="figure">2</ref> we represent an abstraction of the problem by having two T Es. The first test environment T E 1 includes two AGs while the second test environment T E 2 contains three AGs. The number of test cases to be executed are 13 and each sequence of tests that are scheduled for each AG are represented in front of the agent with respecting the order. In this example, test 3 depends on test 1 and test 2 while test 9 is dependent on test 1 and test 8 ; and test 8 has interference with test 1 and test 2 . Furthermore, test 10 has state incompatibility with test 6 and interference with test 9 . The maximum execution time represents the time when all tests are completely executed on the AGs. The example constraints between the tests are represented in Figure <ref type="figure" target="#fig_0">1</ref>. The notations that are used in Figure <ref type="figure" target="#fig_0">1</ref> are explained later in this section.</p><p>The schedule for two different tests running in the same agent cannot overlap. Furthermore, in the case of test interference, we cannot schedule two tests interfering simultaneously in the same TE. We represent the test interference as a relation G inf where G inf = (T C, E inf ) where T C is the set of tests and E inf ⊆ T C × T C. It is assumed that tests share resources if they are executed on the same test environment.  </p><formula xml:id="formula_0">(t 1 , t 3 ) ∈ E dep , (t 2 , t 3 ) ∈ E dep (t 1 , t 9 ) ∈ E dep , (t 8 , t 9 ) ∈ E dep (t 1 , t 9 ) ∈ E inc , (t 10 , t 9 ) ∈ E inf (t 1 , t 8 ) ∈ E inf , (t 2 , t 8 ) ∈ E inf</formula><formula xml:id="formula_1">AG 1 AG 2 AG 3 AG 4 AG 5 T E 1 T E 2 0 t</formula><formula xml:id="formula_2">G inc = (T C, E inc ) , E inc ⊆ T C × T C.</formula><p>To optimise the test execution time, we need to minimise the maximum execution time of tests on the agents. Given the defined constraints the goal is to minimise the finishing time of each test which cause the minimum ending time of all the tests in each agent. This value is described as T ET or overall test execution time. By minimising T ET , we actually minimise our objective which is the maximum execution time of tests.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">ACS-Based Test Scheduling Optimization Algorithm</head><p>In this section, we present our ACS-based Test Scheduling Optimization algorithm (ACS-TSO). ACO is a multi-agent approach to difficult combinatorial optimization problems, such as, traveling salesman problem and network routing <ref type="bibr" target="#b2">[DDCG99]</ref>. It is inspired by the foraging behavior of real ant colonies. While moving from their nest to the food source and back, ants deposit a chemical substance on their path called pheromone. Other ants can smell pheromone and they tend to prefer paths with a higher pheromone concentration. Thus, ants behave as agents who use a simple form of indirect communication called stigmergy to find better paths between their nest and the food source. It has been shown experimentally that this simple pheromone trail following behavior of ants can give rise to the emergence of the shortest paths <ref type="bibr" target="#b2">[DDCG99]</ref>. It is important to note here that although each ant is capable of finding a complete solution, high quality solutions emerge only from the global cooperation among the members of the colony who concurrently build different solutions.</p><p>In the context of test case schedule, each test case is allocated to an agent. Therefore, ACS-TSO makes a set of tuples T , where each tuple t ∈ T consists of two elements: test case tc, and agent ag t := (tc, ag)</p><p>The output of the ACS-TSO algorithm is a test case schedule plan Ψ, which, when enforced, would result in a reduced overall test execution time. Thus, the objective function for the proposed ACS-TSO algorithm is</p><formula xml:id="formula_4">minimize f (Ψ) := max s ∈ ag {T ET s } (2)</formula><p>where Ψ is the test case schedule plan and T ET s is the test execution time on ag. Since the main objective of test case schedule is to minimize the overall test execution time, the objective function is primarily defined in terms of test execution time T ET on each ag.</p><p>Each of the nA ants uses a state transition rule to choose the next tuple to traverse. According to the following rule, an ant k chooses a tuple s to traverse next by applying</p><formula xml:id="formula_5">s := arg max u ∈ T k {[τ u ] • [η u ] β } (3)</formula><p>where τ denotes the amount of pheromone and η represents the heuristic value associated with a particular tuple. β is a parameter to determine the relative importance of the heuristic value with respect to the pheromone value. The expression arg max returns the tuple for which [τ ] • [η] β attains its maximum value. T k ⊂ T is the set of tuples that remain to be traversed by ant k. The heuristic value η s of a tuple s is defined as</p><formula xml:id="formula_6">η s :=      (T ET ag ) −1 • ∝ tc , if |D tc | = 0 |D tc |/|D all |• ∝ tc , if T ET ag = 0 |D tc |/|D all | • (T ET ag ) −1 • ∝ tc else (4) ∝ tc := T ET tc tc ∈ T C T ET tc (5)</formula><p>where D tc is the set of dependencies of test case tc in tuple s and T ET ag is the current test execution time of ag in tuple s. The heuristic value η is based on the product of the number of dependencies of the test case and the multiplicative inverse of the current test execution time of the agent in tuple s. Therefore, the tuples in which the test case has a higher number of dependencies and the agent has a shorter current test execution time receives the highest heuristic value. Moreover, in the calculation of heuristic value, we consider the execution time of each test in proportion of the execution time of all the tests, in which a test with higher execution time will get a higher heuristic value. The heuristic value favors dependent test cases over independent test cases. Therefore, a test case with a higher number of dependencies receives higher heuristic value than a test case with fewer dependencies. Similarly, the main reason for favoring agents with a shorter current test execution time is to minimize the overall test execution time.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1">Pheromone Distribution</head><p>The stochastic state transition rule in (3) prefers tuples with a higher pheromone concentration which leads in a reduced overall test execution time. ( <ref type="formula">3</ref>) is called exploitation <ref type="bibr" target="#b4">[DG97]</ref>.</p><p>It chooses the best tuple that attains the maximum value of [τ ] • [η] β . In addition to the stochastic state transition rule, ACS also uses a global and a local pheromone trail evaporation rule. The global pheromone trail evaporation rule is applied towards the end of an iteration after all ants complete their test suite schedule plans. It is defined as</p><formula xml:id="formula_7">τ s := (1 − α) • τ s + α • ∆ + τs , if s / ∈ Violations (1 − 3 * α) • τ s + α • ∆ + τs , if s ∈ Violations (6)</formula><p>where ∆ + τs is the additional pheromone amount that traditionally is given only to those tuples that belong to the global best test schedule plan Ψ + in order to reward them. However, we only add the additional pheromone to the subset of tuples that contribute to the global best test schedule plan and did not violate the constraints. Moreover, we define another global updating rule for the violated tuples to have higher decay pheromone in compared to the tuples that were not existed in the solution. The additional pheromone is defined as</p><formula xml:id="formula_8">∆ + τs := f (Ψ + ), if s ∈ Ψ + ∧ s / ∈ Violations 0, otherwise<label>(7)</label></formula><p>α ∈ (0, 1] is the pheromone decay parameter, and Ψ + is the global best test schedule plan from the beginning of the trial.</p><p>The local pheromone trail update rule is applied on a tuple when an ant traverses the tuple while making its test schedule plan. It is defined as</p><formula xml:id="formula_9">τ s := (1 − ρ) • τ s + ρ • τ 0<label>(8)</label></formula><p>where ρ ∈ (0, 1] is similar to α and τ 0 is the initial pheromone level, which is computed as the multiplicative inverse of the execution time of all the test cases.    The pseudocode of the proposed ACS-TSO algorithm is given in Figure <ref type="figure" target="#fig_2">4</ref>. The algorithm makes a set of tuples T using (1) and sets the pheromone value of each tuple to the initial pheromone level τ 0 by using (9) (line 2). Then, it iterates over nI iterations (line 3), where each iteration i ∈ nI creates a new generation of nA ants that concurrently build their test schedule plans (lines 4-24). Each ant k ∈ nA iterates its loop until all test cases in T C are allocated (lines 6-23).</p><formula xml:id="formula_10">τ 0 := ( tc ∈ T C T ET tc ) −1 (9)</formula><formula xml:id="formula_11">Ψ + := ∅, P := ∅ 2: ∀t ∈ T |τt := τ 0 3: for i ∈ [1, nI] do 4: for k ∈ [1, nA] do 5: Ψ k := ∅ 6: while all tc ∈ T C</formula><p>Afterwards, based on the state transition rule in (3) each ant chooses a tuple t to traverse next (line 7). The local pheromone trail update rule in (8) and ( <ref type="formula">9</ref>) is applied on t (line 8).</p><p>If ant k has not already allocated tc in t and tc is an independent test case, t is added to the ant-specific test schedule plan Ψ k if it cause no incompatibility and no interference in the solution and the test execution time of agent ag in t, T ET ag , is updated to reflect the impact of the test case schedule (line 18-21). However, if tc in t is a dependent test case (line 10), it is essential to allocate all test cases on which tc is dependent on the same test environment before allocating tc on ag in t. Therefore, the algorithm uses the set of test cases on which tc in t is dependent denoted as D tc from (4)(line 11-16).</p><p>However, to prevent multiple scheduling of the same test cases on the same test environment, the algorithm removes any test cases from D tc which are already allocated to ag in t (line 12). Then, it adds all tuples to the ant-specific test schedule plan Ψ k where tc is in D tc and ag is the same as in t (line 13). At this point, it is possible that a test case in D tc may be allocated to more than one server. Such a situation may arise when more than one dependent test cases are dependent on the same test case(s). (line 18-21).</p><p>Afterwards, when all complete their test schedule plans, all ant-specific test schedule plans are added to the set of test schedule plans P (line 24-26), each test schedule plan Ψ k ∈ P is evaluated by applying the objective function in (2), the thus far global best test schedule plan Ψ + is selected (line 28), and the global pheromone trail update rule in (6) and ( <ref type="formula" target="#formula_8">7</ref>) is applied on all tuples (line 29). Finally, when all iterations i ∈ nI complete, the algorithm returns the global best test schedule plan Ψ + (line 31).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Conclusions and Future Work</head><p>In this paper, we presented a novel approach for scheduling tests in parallel. The aim is to optimize the execution time of the tests in a test suite while satisfying incompatibility, dependency and interference constraints between the tests. In order to decrease the execution time we are looking for the best possible partitioning of tests in a number of groups and reordering of tests in each group to reduce the false positive and false negative test execution results. Since computing the exact solution is impractical for a large number of tests, we proposed a metaheuristics based approach to achieve an approximate solution in polynomial time. The time complexity of our proposed algorithm is not linear, however, the algorithm can be parallelised to accelerate the execution time. Currently, we require the algorithm to be run before each integration to take the possible modification of tests into consideration. We implemented the proposed algorithm in a Java based framework.</p><p>There is a difference between scheduling the tests and the traditional resource constrained scheduling that required us to propose a more general scheduling strategy rather than using one of the known algorithms. There is no notion of state in performing the tasks in resource constrained scheduling. If a task has been performed once, it will not be necessary to be performed again. However, in test scheduling, the state achieved on a test environment is important for the other tests. In this case, it is not enough that test has been executed before on another environment.</p><p>In the proposed approach, we defined the interference and incompatibility as hard constraints in which should be satisfied while the solution is constructed, and the dependency constraint as a soft constraint in which we aim at reducing in the next cycles. Moreover, we define the objective function to reduce the execution time of tests. For the future work, we may focus on incorporating SMT (Satisfiability Modulo Theories) solvers to tackle the problem to achieve an optimal schedule.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Fig. 1 :</head><label>1</label><figDesc>Fig. 1: Constraints for the example</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Fig. 3 :</head><label>3</label><figDesc>Fig. 3: Summary of concepts and their notations 3 1: Ψ + := ∅, P := ∅ 2: ∀t ∈ T |τt := τ 0 3:for i ∈ [1, nI] do 4: for k ∈ [1, nA] do 5: Ψ k := ∅ 6: while all tc ∈ T Care allocated do 7: choose a tuple t ∈ T to traverse by using (3) 8: apply local update rule in (8) on t 9: if ant k has not already allocated tc in t then 10: if Dtc of tc in t is not empty then 11: if test in Dtc is not already allocated to the same test environment as t then 12: if allocating test is not creating an interference or incompatibility in Ψ k then 13: add tuple (test,ag) to Ψ k where test is in Dtc and ag is the same agent as t 14: update T ETag of ag in t 15: end if 16: end if 17: end if 18: if allocating t is not creating an interference or incompatibility in Ψ k then 19: add t to Ψ k 20: update T ETag of agent ag in t 21: end if 22: end if 23: end while 24: if Ψ k is complete then 25: add Ψ k to P 26: end if 27: end for 28: Ψ + := arg max Ψ k ∈ P {f (Ψ k )} 29: apply global update rule in (6) on all s ∈ T 30: end for 31: return Ψ +</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Fig. 4 :</head><label>4</label><figDesc>Fig. 4: ACS algorithm for test execution time optimization (ACS-TSO)</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>Fig. 2: Test scheduling of the abstract exampleIn state dependency, some tests might be preconditions for other tests which requires them to be executed in order to succeed. This dependency can be represented as a relation (t 1 , t 2 ) ∈ E dep which implies that test t 1 should be executed before test t 2 .A third, perhaps less obvious but relevant constraint, is what we refer to as state incompatibility that occurs when one test leaves a T E in a state from which another test cannot proceed. We can represent the incompatibility relation as G inc where</figDesc><table><row><cell cols="2">τ (test2) δ(test3)</cell></row><row><cell cols="2">test 1 test 2 test 3</cell></row><row><cell cols="2">test 4 test 5 test 6</cell></row><row><cell cols="2">test 1 test 8 test 9</cell></row><row><cell cols="2">test 10 test 11 test 12</cell></row><row><cell>test 13</cell><cell>test 7</cell></row><row><cell></cell><cell>Maximum test execution time</cell></row></table></figure>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Acknowledgements</head><p>This work was supported by the Need for Speed (N4S) Program (http://www.n4s.fi).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Literatur</head></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">If A Fails, Can B Still Succeed? Inferring Dependencies between Test Results in Automotive System Testing</title>
		<author>
			<persName><forename type="first">S</forename><surname>Arlt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Morciniec</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Podelski</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Wagner</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Software Testing, Verification and Validation (ICST), 2015 IEEE 8th International Conference on</title>
				<imprint>
			<date type="published" when="2015-04">April 2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Vroom: Faster Build Processes for Java</title>
		<author>
			<persName><forename type="first">J</forename><surname>Bell</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Melski</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Dattatreya</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">E</forename><surname>Kaiser</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Software</title>
		<imprint>
			<biblScope unit="volume">32</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="97" to="104" />
			<date type="published" when="2015-03">Mar 2015</date>
		</imprint>
	</monogr>
	<note>IEEE</note>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Ant algorithms for discrete optimization</title>
		<author>
			<persName><forename type="first">Marco</forename><surname>Dorigo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Gianni</forename><surname>Di Caro Und Luca</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Gambardella</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Artif. Life</title>
		<imprint>
			<biblScope unit="volume">5</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="137" to="172" />
			<date type="published" when="1999-04">April 1999</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<ptr target="https://code.google.com/p/depunit/" />
		<title level="m">DepUnit</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Ant colony system: a cooperative learning approach to the traveling salesman problem</title>
		<author>
			<persName><forename type="first">M</forename><surname>Dorigo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">M</forename><surname>Gambardella</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Evolutionary Computation</title>
		<imprint>
			<biblScope unit="volume">1</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="53" to="66" />
			<date type="published" when="1997">1997</date>
		</imprint>
	</monogr>
	<note>IEEE Transactions on</note>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Reliable Testing: Detecting State-polluting Tests to Prevent Test Dependency</title>
		<author>
			<persName><forename type="first">Alex</forename><surname>Gyori</surname></persName>
		</author>
		<author>
			<persName><forename type="first">August</forename><surname>Shi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Farah</forename><surname>Hariri Und</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Darko</forename><surname>Marinov</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2015 International Symposium on Software Testing and Analysis, ISSTA 2015</title>
				<meeting>the 2015 International Symposium on Software Testing and Analysis, ISSTA 2015<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="223" to="233" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Efficient regression tests for database applications</title>
		<author>
			<persName><forename type="first">Florian</forename><surname>Haftmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Donald</forename><surname>Kossmann Und</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Er</forename><surname>Kreutz</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Conference on Innovative Data Systems Research (CIDR</title>
				<imprint>
			<date type="published" when="2005">2005</date>
			<biblScope unit="page" from="95" to="106" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Parallel Execution of Test Runs for Database Application Systems</title>
		<author>
			<persName><forename type="first">Florian</forename><surname>Haftmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Donald</forename><surname>Kossmann Und</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Eric</forename><surname>Lo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">VLDB</title>
				<editor>
			<persName><forename type="first">Klemens</forename><surname>Bhm</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Christian</forename><forename type="middle">S</forename><surname>Jensen</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Laura</forename><forename type="middle">M</forename><surname>Haas</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Martin</forename><forename type="middle">L</forename><surname>Kersten</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Chin</forename><surname>Per-Ke Larson Und Beng</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Hrsg</forename><surname>Ooi</surname></persName>
		</editor>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2005">2005</date>
			<biblScope unit="page" from="589" to="600" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Cloud engineering is Search Based Software Engineering too</title>
		<author>
			<persName><forename type="first">Kiran</forename><surname>Hls + ; Mark Harman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jeremy</forename><surname>Lakhotia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">David</forename><forename type="middle">R</forename><surname>Singer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Shin</forename><surname>White</surname></persName>
		</author>
		<author>
			<persName><surname>Yoo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Systems and Software</title>
		<imprint>
			<biblScope unit="volume">86</biblScope>
			<biblScope unit="issue">9</biblScope>
			<biblScope unit="page" from="2225" to="2241" />
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Using Dependency Structures for Prioritization of Functional Test Suites</title>
		<author>
			<persName><forename type="first">S</forename><surname>Haidry</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Miller</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Software Engineering</title>
		<imprint>
			<biblScope unit="volume">39</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="258" to="275" />
			<date type="published" when="2013-02">Feb 2013</date>
		</imprint>
	</monogr>
	<note>IEEE Transactions on</note>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">A Novel Distributed Testing Approach Based on Test Cases Dependencies for Communication Protocols</title>
		<author>
			<persName><forename type="first">Alberto</forename><surname>Marroquin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Douglas</forename><surname>Gonzalez Und</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Stephane</forename><surname>Maag</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2015 Conference on Research in Adaptive and Convergent Systems</title>
				<meeting>the 2015 Conference on Research in Adaptive and Convergent Systems<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="497" to="504" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Regression Testing Minimization, Selection and Prioritization: A Survey</title>
		<author>
			<persName><forename type="first">S</forename><surname>Yoo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Harman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Softw. Test. Verif. Reliab</title>
		<imprint>
			<biblScope unit="volume">22</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="67" to="120" />
			<date type="published" when="2012">Marz 2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Empirically Revisiting the Test Independence Assumption</title>
		<author>
			<persName><surname>Zjw + ; Sai</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Darioush</forename><surname>Zhang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jochen</forename><surname>Jalali</surname></persName>
		</author>
		<author>
			<persName><surname>Wuttke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Wing</forename><surname>Kivanc ¸mus ¸lu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Michael</forename><forename type="middle">D</forename><surname>Lam</surname></persName>
		</author>
		<author>
			<persName><surname>Ernst Und David Notkin</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2014 International Symposium on Software Testing and Analysis, ISSTA 2014</title>
				<meeting>the 2014 International Symposium on Software Testing and Analysis, ISSTA 2014<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2014">2014</date>
			<biblScope unit="page" from="385" to="396" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
