s-1
| Design of Mutation Operators for Testing Geographic Information Systems |
s-2
| Suilen H. Alvarado Laboratorio de Bases de Datos Campus de Elviña, Centro de investigación CITIC, Universidade da Coruña, 15071 A Coruña, Spain; s.hernandez@udc.es |
s-3
| Presented at the 2nd XoveTIC Congress, A Coruña, Spain, 5–6 September 2019. |
s-4
| Abstract: |
s-5
| In this article, we propose the definition of specific mutation operators for testing Geographic Information Systems. |
s-6
| We describe the process for applying the operators and generating mutants, and present a case study where these mutation operators are applied to two real-world applications. |
s-7
| Keywords: mutation operators; geographic information systems; mutation testing |
s-8
| 1. Introduction |
s-9
| Mutation-based testing [1] is a test technique that involves artificially introducing errors into a System Under Test (SUT). |
s-10
| A mutant is a copy of the system in which a change has been done that, in most cases, will lead to a behaviour different than expected. |
s-11
| The different mutants are generated automatically by the application of mutation operators. |
s-12
| In the state of the art, we have found mutation operators, both general purpose and specific to different technologies, languages and paradigms [2–9]. |
s-13
| However, these operators are not adequate when trying to test software features associated with specific domains. |
s-14
| In this article, we propose mutation operators specific to the domain of Geographic Information Systems (GIS) applications. |
s-15
| These operators reproduce programming errors that are litely to occur during the development of this type of applications. |
s-16
| In addition, we present the implementation of these operators and as proof of concept we apply these operators to two real-world GIS applications and we generate the mutants. |
s-17
| 2. Mutation Operators for GIS |
s-18
| As a previous step to designing the mutation operators, we analyzed the main technologies used specifically in the development of GIS, and we identified typical errors a programmer can introduce during the development. |
s-19
| These errors were formalized into mutation operators. |
s-20
| In order to apply these operators to a SUT, we rely on Java reflection and aspect-oriented programming. |
s-21
| Reflection allows us to obtain the list of classes and methods of the SUT, so the user can decide the methods to wish the operators will be applied. |
s-22
| Later, we capture information about the methods of the SUT to be mutated, together with the information of the mutation operators that were already defined. |
s-23
| From these data, we generate the mutation operator, in the form of on aspect, which will then be possible to interweave with the SUT which generates a mutant of the SUT. |
s-24
| Next, we describe the definition of two operators and two cases of application on real-world GIS applications. |
s-25
| ChangeCoordSys Operator (Listing 1): |
s-26
| It exchanges the coordinate system of a geometry, so it does not match the coordinate system that is being used in the user interface. |
s-27
| It simulates the error of not checking that the coordinate system is correct. |
s-28
| The error is introduced by directly modifying the coordinate system of geometry when recovering the wrapping of the figure. |
s-29
| Listing 1: A simplified definition of the ChangeCoordSys Operator. |
s-30
| This operator was applied to a mobile technology GIS application. |
s-31
| This application allows registering places of interest for the user. |
s-32
| These areas of interest are called Geofences. |
s-33
| A Geofence is determined by a geographical location expressed in terms of latitude, longitude, and a radius around that location. |
s-34
| By creating a Geofence with an erroneous location from its central location, the device will receive incorrect location notifications. |
s-35
| As a result, the user will see in the application’s map viewer the Geofences drawn in erroneous zones (Figure 1). |
s-36
| Figure 1. Original and mutant application. |
s-37
| BooleanPolygonConstraint Operator (Listing 2): |
s-38
| It introduces errors in the processing of geometries, manipulating the result of the operations that carry out the verification of different topological restrictions between geometries, such as intersects, covers or overlap. |
s-39
| Listing 2: A simplified definition of the BooleanPolygonConstraint Operator. |
s-40
| To test this operator it was applied to a land reparcelling system. |
s-41
| The objective of the land reparcelling is to reunify the lands of an owner to facilitate their exploitation. |
s-42
| In this application, the result of the operation between two polygons has been affected. |
s-43
| This error causes the incorrect display of the resulting geometry that should be drawn in the user interface after the operation applied to the two initial geometries (Figure 2). |
s-44
| Figure 2. Original and mutant application. |
s-45
| 3. Conclusions |
s-46
| In existing proposals, we can find both generic and specific mutation operators. |
s-47
| However, these are not adequate to cover errors in particular domains. |
s-48
| We have defined new operators specific to the GIS domain and a way to apply them to a SUT. |
s-49
| In addition, we have tested the operators defined in two GIS applications. |
s-50
| As future work, we intend to extend this approach to other domains, as well as to use the developed operators for the automatic improvement of sets of test cases. |