A Comparative Study on Mutation Analysis for Java Applications

Similar documents
Program-based Mutation Testing

(CONDITIONALS_BOUNDARY)

What is Mutation Testing? Mutation Testing. Test Case Adequacy. Mutation Testing. Mutant Programs. Example Mutation

Java Review Outline. basics exceptions variables arrays modulo operator if statements, booleans, comparisons loops: while and for

MuClipse Requirements Specification

White Box Testing III

What is software testing? Software testing is designing, executing and evaluating test cases in order to detect faults.

linaye/gl.html

On Code Coverage of Extended FSM Based Test Suites: An Initial Assessment

Introduction to Software Testing Chapter 4 Input Space Partition Testing

Introduction to Software Testing Chapter 5.1 Syntax-based Testing

Introduction to Software Testing Chapter 3, Sec# 3.3 Logic Coverage for Source Code

Applying Mobile Agent for Internet-based Distributed Speech Recognition

Improving the Effectiveness of Software Testing through Test Case Reduction

On Guiding the Augmentation of an Automated Test Suite via Mutation Analysis

Second assignment came out Monday evening. Find defects in Hnefetafl rules written by your classmates. Topic: Code Inspection and Testing

A Survey on Different Approaches for Efficient Mutation Testing

arxiv: v1 [cs.se] 4 Jul 2017

Mutation Testing. Leaving the Stone Age

Aspect-oriented Response Injection: an Alternative to Classical Mutation Testing

An analysis of Mutation testing and Code coverage during progress of projects

Introduction to Software Testing Chapter 2.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt

CMPSCI 521/621 Homework 2 Solutions

Honours/Master/PhD Thesis Projects Supervised by Dr. Yulei Sui

Test Cases Generation from UML Activity Diagrams

AUTOMATED GUI TESTING OF SOFTWARE APPLICATIONS USING UML MODELS

Class-Component Testability Analysis

Introduction to Linked Lists. Introduction to Recursion Search Algorithms CS 311 Data Structures and Algorithms

Case Study on Testing of Web-Based Application: Del s Students Information System

On Guiding the Augmentation of an Automated Test Suite via Mutation Analysis

public class TicketMachine Inner part omitted. public class ClassName Fields Constructors Methods

Mutating Object State and Implementing Equality

Python Programming For The Absolute Beginner, 3rd Edition PDF

Introducing SQL Query Verifier Plugin

Topics in Software Testing

CGS 3066: Spring 2015 JavaScript Reference

Profiling & Optimization

GENERATION TOOL FOR DBMS FOCUSED APPLICATIONS

A Development Of A Web-Based Application System Of QR Code Location Generator and Scanner named QR- Location

Software Testing. 1. Testing is the process of demonstrating that errors are not present.

17. Assertions. Outline. Built-in tests. Built-in tests 3/29/11. Jelle Slowack, Bart Smets, Glenn Van Loon, Tom Verheyen

17. Assertions. Jelle Slowack, Bart Smets, Glenn Van Loon, Tom Verheyen

Secure Authentication for Internet environment using Biometric and One-Time Password

CSE 70 Final Exam Fall 2009

3D Graphics Programming Mira Costa High School - Class Syllabus,

Memory Safety (cont d) Software Security

Profiling & Optimization

Web Application Testing in Fifteen Years of WSE

A New Mutation Analysis Method for Testing Java Exception Handling

Applying Kohonen Network in Organising Unstructured Data for Talus Bone

Structural Testing & Mutation

ISSN: [Keswani* et al., 7(1): January, 2018] Impact Factor: 4.116

Outcomes Week 2 Overview Describe the inputs, activities, and outputs of each step in the software development life cycle. Describe arithmetic, relati

Mobile Application Buying Ticket For LRT

ExMAn: A Generic and Customizable Framework for Experimental Mutation Analysis 1

EECS 481 Software Engineering Exam #1. You have 1 hour and 20 minutes to work on the exam.

Mobile Agent Routing for Query Retrieval Using Genetic Algorithm

The Need for a Holistic Automation Solution to Overcome the Pitfalls in Test Automation

International Journal of Advanced Research in Computer Science and Software Engineering

HOMEPAGE USABILITY: MULTIPLE CASE STUDIES OF TOP 5 IPTA S HOMEPAGE IN MALAYSIA Ahmad Khairul Azizi Ahmad 1 UniversitiTeknologi MARA 1

CS18000: Programming I

This is a repository copy of Mutation Testing for Jason Agents. White Rose Research Online URL for this paper:

The Path Not Taken: Maximizing the ROI of Increased Decision Coverage

The Visual Studio 2015 Checklist

MACHINE LEARNING BASED METHODOLOGY FOR TESTING OBJECT ORIENTED APPLICATIONS

TEST CASE EFFECTIVENESS OF HIGHER ORDER MUTATION TESTING

Universiti Teknologi Malaysia Car Ride or Rental

Code review guide. Notice: Read about the language that you will test its code, if you don t have an idea about the language this will be difficult.

Dealing with Bugs. Kenneth M. Anderson University of Colorado, Boulder CSCI 5828 Lecture 27 04/21/2009

Collaborative Framework for Testing Web Application Vulnerabilities Using STOWS

Algorithms & Datastructures Laboratory Exercise Sheet 1

An Automated Input Generation Method for Crawling of Web Applications

University of Maryland at College Park Department of Geographical Sciences GEOG 477/ GEOG777: Mobile GIS Development

Software Quality Assurance. David Janzen

egrapher Language Reference Manual

MAJOR: An Efficient and Extensible Tool for Mutation Analysis in a Java Compiler

Static program checking and verification

Comparing and Contrasting different Approaches of Code Generator(Enum,Map-Like,If-else,Graph)

Mutant Execution Cost Reduction

Introduction to Software Testing Chapter 2.3 Graph Coverage for Source Code. Paul Ammann & Jeff Offutt

Assertions, pre/postconditions

ICOM 4015-Advanced Programming. Spring Instructor: Dr. Amir H. Chinaei. TAs: Hector Franqui, Jose Garcia, and Antonio Tapia. Reference: Big Java

Web Security Vulnerabilities: Challenges and Solutions

Towards Mutation Analysis of Android Apps

IronWASP (Iron Web application Advanced Security testing Platform)

Subclassing for ADTs Implementation

AL AIN TEST CLOUD WEBSITE SYSTEM

Lecture Set 4: More About Methods and More About Operators

Introduction to Computing II (ITI 1121) Final Examination

Software Testing Lecture 1. Justin Pearson

Lessons Learned in Static Analysis Tool Evaluation. Providing World-Class Services for World-Class Competitiveness

A Fitness Function to Find Feasible Sequences of Method Calls for Evolutionary Testing of Object-Oriented Programs

\n is used in a string to indicate the newline character. An expression produces data. The simplest expression

Finding Dominant Parameters For Fault Diagnosis Of a Single Bearing System Using Back Propagation Neural Network

Natural Language to Database Interface

Advanced Java Testing. What s next?

Channel Allocation for Social Networking Features on Publish/Subscribe-based Mobile Application

Control Flow. COMS W1007 Introduction to Computer Science. Christopher Conway 3 June 2003

Quality Assurance of a Mobile Network Measurement Testbed Through Systematic Software Testing

Asst. Professor, Dept. of MCA, Siddaganga Institute of Technology, Tumakuru, Karnataka

Transcription:

1 UTM Computing Proceedings Innovation in Computing Technology and Applications Volume: 2 Year: 2017 ISBN: 978-967-0194-95-0 A Comparative Study on Mutation Analysis for Java Applications Nur Zatilzaida Binti Mohd Zahari 1 and Radziah Binti Mohamad 2 Department of Software Engineering, Universiti Teknologi Malaysia, Skudai, Johor, Malaysia 1 zatilzaida93@yahoo.com, 2 radziahm@utm.my Abstract. Java applications have the highest numbers of users. However, the quality of the java applications is a known problem. Thus, the better testing has been research to apply on java applications for better quality which is mutation analysis for java applications. First, identify the state-of-the-art mutation technique for java applications. Second, identify the mutation operators for java applications that will make the java applications have good quality. Finally, the suitable mutation operators will be implementing to the java applications test case. This is particularly problematic because lack of approach of mutation analysis for java applications. For these reasons, this research proposes suitable mutation operators for java applications. Keywords : Mutation Testing, Java Applications, Software Testing. 7. 1 Introduction When programmers develop a java applications there is some testing need to be done. The testing is to check whether the applications fulfill all the requirements and suitable to the user. The problem is some testing is ineffective. There is some faults can affect the applications in the future that cannot be capture during testing phase. The solution is to use mutation testing on java applications which is still immature and rarely used. Testing java applications using an automated testing tool between various mobile platforms has been conducted, but the results do not always match the actual mobile network, a network that makes the test becomes weaker and normal test does not support more than one smart device for testing java applications for mobile [10]. Testing mobile applications have many limitations according to the following issues which is different mobile operating system, mobile network traffic and variety of type of mobile devices. Furthermore, testing conduct on context-based on java applications is not many have been done. In addition, testing on context-based on java applications is also difficult to found. A variety of mobile platforms, limitations in the simulator, the boundaries of mobile hardware devices, multiple network types and configurations, and rapid application development of mobile applications make the java applications test become more challenging, time consuming and expensive process [1]. In particular, this research will propose to use the mutation analysis to java applications, highend testing techniques known to produce test powerful and robust [5]. The advantages and limitation will be compared and documented. The comparison between the different approaches of mutation testing but need to find the same fault will be documented. Mutation testing always use for testing on web applications not for both web and mobile applications which is java applications used to developed the applications. Thus, java applications are different from traditional software and others applications that use others language. When apply mutation testing on java applications, need to develop different testing technique because of the mutation testing on java applications still immature and lack of capability to support the testing. 2 Related Works Mutation testing will be applied to the java applications where the mutation testing is high end testing technique that is known for yielding powerful tests. Test than kill those mutants expected to have many faults in the use of the features [5].

2 In this research, mutation testing will be reviewed from other related works and the suitable mutation testing technique and operators will be selected. The selected mutation testing technique and operators will be implements to the case study which is java applications. The result will determine the quality of the testing and the quality of the java applications. The existing works is the review about others work on mutation testing analysis. The review is about the mutation testing for applications that has been developed. The review of the applications is divided to web applications and mobile applications using java language and it is a java applications. a. Web Applications According to others [14], to get the strong test criteria, mutation analysis is fault-based techniques that provide the strong test criteria. This technique injects artificial fault into the software that being tested. Fault injection made by the mutation operators that represent the type of fault that want to explore. To expose the damage in the JS program, we need to define the mutation operator with a focus on the characteristics of the JavaScript and in order to conduct an analysis of the characteristics of the JavaScript; we define the mutation operator based on the analysis results [14]. To identify the common mistake in applications we suggest the following JavaScript -specific mutation operator to understand the common mistakes in JavaScript programs from the point of view of the programmer [12]. In conclusion, in order to implement mutation testing to the web applications, some mutation operators need to be defining based on the characteristics of the JavaScript. b. Mobile Applications Although mutation testing is one way to create more effective test suite, along with error detection to a new level for software developers, which creates a more effective test suite, testers can be more confident that the program sufficiently tested [17]. The categories of mutation operators for Java Agent Development framework (JADE) Mobile Agent System (MAS) are: Agent setup and creation, Mobility, Agent message passing, and Agent behavior [17]. Table 1 Show the list of JADE mutation operators [17]. Table 1 : JADE MUTATION OPERATORS From this finding, some of the mutation operators and technique from the existing works can be derive and implement to the case study. The suitable mutation operators will be selected from the related works and will be implemented to the case study. 8. 3 Result Mutation testing experiment for this research is based on the mutation testing for java applications. The java applications case study that has been used as an experiment is Coffee Maker applications. The mutation testing tools used to carry out the experiment for mutation testing for java applications is Pitest mutation testing tools. It is a good test if the mutation coverage for the test cases is 100%.

0 3 a Pitest Coverage Report Further discussion of the result for the mutation testing experiment on java applications will be discuss and analyse. Fig 1 shows the Pitest coverage report for mutation testing on Coffee Maker applications. The Pitest coverage report shows the percentage of the line coverage and mutation coverage. In this report it shows that line coverage is only 61%, which means some of the class in the applications where the line of code is not cover during mutation testing. Meanwhile for mutation coverage it only covers 38%. It means that our test is not as good as it should be. In order to achieve the good mutation testing, some changes in the mutation test cases need to be done until the mutation coverage reach 100% coverage. Figure 1. Pit Test Coverage Report for Coffee Maker. i. Coffee Maker Class Report: Fig 2 shows CoffeeMaker.java mutation report where the mutation coverage is 100%. The mutation coverage is 100% because the mutation test case for CoffeeMaker.java is all killed and it means that our mutation test cases for CoffeeMaker.java are good test cases. Mutations 3 1. replaced return of integer sized value with (x == 0? 1 : 0) 1 KILLED 4 1. mutated return of Object value for edu/ncsu/csc326/coffeemaker/coffeemaker::deleterecipe to ( if (x!= 2 null) null else throw new RuntimeException ) KILLED 6 1. removed call to 8 edu/ncsu/csc326/coffeemaker/inventory::addcoffee KILLED 8 1. mutated return of Object value for edu/ncsu/csc326/coffeemaker/coffeemaker::checkinventory to ( if (x!= null) null else throw new RuntimeException ) KILLED Figure 2. CoffeeMaker.java mutation report. ii. Main Class Report: Fig 3 shows Main.java mutation report where the mutation coverage for mutation testing is 0%. This is a very bad mutation test cases for mutation testing because the

7 4 mutation test cases is not all killed and it is all not covers by the mutation testing. It has no mutation coverage because of the error when derived the mutation test cases. In order to avoid this happen, many changes need to be done to the mutation test cases until the problem of no mutation coverage is solved. Then, mutation testing can be carry again until the mutation coverage is 100% for the best mutation testing. It is also important to make sure the mutation test case is suitable to the case study applications for mutation testing. When derived the mutation test cases, need to make the mutation test cases is not have any errors in coding so that the line of code of the mutation code will cover the mutation line coverage and this problem has never occurred. MUTATIONS 2 1. removed call to java/io/printstream::println 4 NO_COVERAGE 2 1. removed call to java/io/printstream::println 6 NO_COVERAGE 1. changed conditional boundary NO_COVERAGE 6 3 2. changed conditional boundary NO_COVERAGE 3. negated conditional NO_COVERAGE 4. negated conditional NO_COVERAGE 3 1. negated conditional NO_COVERAGE 2. removed call to edu/ncsu/csc326/coffeemaker/main::addrecipe NO_COVERAGE Figure 3.Main.java mutation report. iii. Inventory Class Report: Inventory.java mutation report is shown in Fig 4 where the mutation coverage is only 53%. The mutation test case for Inventory.java is not a good test cases because the mutation test case is not all killed. There is some mutation test cases survived. MUTATIONS 4 1. changed conditional boundary 4 SURVIVED 2. negated conditional KILLED 6 1. Replaced integer addition with subtraction 7 SURVIVED

5 8 0 1. replaced return of integer sized value with (x == 0? 1 : 0) KILLED 8 9 1. changed conditional boundary SURVIVED 2. negated conditional KILLED 1 10 1. Replaced integer addition with subtraction SURVIVED Figure 4. Inventory.java mutation report. iv. Recipe Class Report: Recipe.java mutation report is shown in Fig 5 where the mutation coverage for mutation testing is 53%. It is not a very good mutation test cases for mutation testing because the mutation test cases has some of the mutation test cases survived and has no mutation coverage. Even though, some of the mutation test cases has been killed, but if there is some of the mutation test cases is still survived it is still not a very good mutation test cases for the mutation testing. In order to get good mutation test cases for the mutation testing, some changes to the mutation test cases need to be done. The first change is to make the mutation test cases has 100% line coverage. Then the mutation test cases need to be change again until the mutation coverage reach 100% of mutation coverage for the mutation testing. So, the mutation test cases can be categorizing as a good mutation test cases for the mutation testing. MUTATIONS 44 1. replaced return of integer sized value with (x == 0? 1 : 0) KILLED 59 1. changed conditional boundary KILLED 2. negated conditional KILLED 71 1. replaced return of integer sized value with (x == 0? 1 : 0) SURVIVED 113 1. changed conditional boundary SURVIVED 2. negated conditional KILLED Figure 5. Recipe.java mutation report. v. Recipe Book Class Report: Fig 6 shows RecipeBook.java mutation report where the mutation coverage for mutation testing is 85%. This is considering a good mutation testing but not a very good mutation testing because some of the mutation test cases are survived. The survive mutation test case need to be changes until it be killed. Before mutation coverage reach 100% coverage it is still not a good mutation testing. If want a very good mutation testing, the mutation coverage need to be 100%.

6 MUTATIONS 1. changed conditional boundary KILLED 25 2. Changed increment from 1 to -1 KILLED 3. negated conditional KILLED 1. changed conditional boundary KILLED 2. changed conditional boundary SURVIVED 51 3. negated conditional KILLED 4. negated conditional KILLED 5. negated conditional KILLED 52 1. Changed increment from 1 to -1 KILLED 1. changed conditional boundary KILLED 2. changed conditional boundary SURVIVED 3. changed conditional boundary SURVIVED 4. negated conditional KILLED 5. negated conditional KILLED 6. negated conditional KILLED 7. negated conditional KILLED 8. replaced return of integer sized value with (x == 0? 1 : 0) KILLED 9. replaced return of integer sized value with (x == 0? 1 : 0) KILLED Figure 6. RecipeBook.java mutation report. 9. 4 Discussion From the analysis, there are some mutation operators that cover by some mutation testing tools. Not all mutation testing tools cover all mutation operators. Mutation operators that cover by Pitest testing tools are divided into two which is mutation operators activated by default and mutation operators deactivated by default. A. Type of mutation operators in Pitest Mutation operators that are available for pitest is divide into two sections which is activated by default and deactivated by default. Table II will shows the list of type of mutation operators that active by default meanwhile Table III will shows the list of type of mutation n operators that deactivated by default [3]. Both tables also show the example of original condition of source code and the mutated conditional of source code.

7 TABLE 11. TYPE OF MUTATION OPERATORS ACTIVATE BY DEFAULT. Mutator Original Mutated Conditional Conditional Condition <= < als Boundary Increment ++ -- s Invert return -i; return i; Negatives Math + - Negate ==!= Conditionals Return Boolean = Boolean = Values true false Void public int public int Method foo() { foo() { Calls int i = 5; int i = 5; } return i; dosomething(i); return i; } TABLE 111. TYPE OF MUTATION OPERATORS DEACTIVATED BY DEFAULT. Mutato Original Conditional Mutated r Conditional Constru Object o = new Object(); Object o = null; ctor Calls Inline int i = 42; int i = 43; Constant Non int i = int i = 0; Void somenonvoidmethod(); Method Calls Remov if (a == b) if (true) e Condition als

8 Experi private final int x = 5; private final int x = mental 0; Member Variable Experi public class A { public class A { mental Switch private static final int public String foo() VAR = 13 { public String foo() { return "13:42"; final int i = 42; } return "" + VAR + ":" } + i; } } B. Mutation operators for case study. Mutation operators that are generated for Coffee Maker case study are mutation operators that activated by default. The list of mutation operators that are generated are list in Table IV. The mutation operators that are generated in test cases for Coffee Maker case study is 247 mutation operators. From the generated mutation operators only 93 mutation operators out of 247 mutation operators that has been killed. Others mutation operators are survived and has no coverage for the mutation operators in the test cases. The mutation coverage for the mutation testing is represents in per cent. Thus, the mutation coverage for mutation testing on Coffee Maker case study is only 38 per cent. It means that our test is not as good as it should be. In order to achieve the good mutation testing, some changes in the mutation test cases need to be done until the mutation coverage reach 100% coverage. TABLE IV. LIST OF MUTATION OPERATORS FOR COFFEE MAKER CASE STUDY. Mutator Generated Killed Survived No Coverage Mutation Coverage (%) Conditionals 36 8 19 9 22 Boundary ditionals Boundary Increments 6 3 0 3 50 Void Method 78 7 2 69 9 Calls Return Values 39 28 4 7 72 Math 15 1 10 4 7 Negate 73 46 3 24 63

9 Conditionals Total 247 93 38 116 38 5 Conclusions From the findings, the research concluded that the mutation testing for java applications have been experimented based from the research studies. Several experiments has been be done in order to get the research findings which is analyze the mutation testing result from the mutation testing on java applications. Research constraints experienced during the completion of the research related to the topic of mutation testing on java applications is there are some obstacles that cause some types of tools had to be used in order to achieve the objectives of this research. Obstacles encountered during the experiment are among the tools used is the mutation testing tool did not correspond to the latest version. The tools or plugin is not suitable to the Eclipse development environment. Another hurdles is the JRE(Java Runtime Environment) library support the mutation testing tools also out-dated and not the current version. Many experiments need to be done according to the version of mutation testing plugin and JRE library that suitable to the latest version of Eclipse development environment. The research for mutation testing is not limited for java applications only. Further study can be done in the future related to this topic mutation testing for java applications but in different scope. The suggestions for improvements is the research topic can be related to this topic such as the mutation testing for mobile applications or smart watch applications as we all know this two applications is the most demanded applications by users. Acknowledgment In carrying out this thesis, I have been through thick and thin to explore and learn new things that I never knew. Throughout this thesis, I was able to learn something about mutation testing. Here, I want to express my gratitude to my supervisor Dr. Radziah Mohamad who has given a lot of instructions and guidance when I prepared this thesis. She gave a lot of encouragement words and support when I face with any problems during my research. References 1. Al-Ahmad, A. S., Aljunid, S. A., & Sani, A. S. (2013). Mobile Cloud Computing Testing Review. 2013 International Conference on Advanced Computer Science Applications and Technologies. doi:10.1109/acsat.2013.42. 2. Appelt, D., Nguyen, C. D., Briand, L. C., & Alshahwan, N. (2014). Automated testing for SQL injection vulnerabilities: an input mutation approach. Proceedings of the 2014 International Symposium on Software Testing and Analysis - ISSTA 2014. doi:10.1145/2610384.2610403. 3. Available mutators. (n.d.). Retrieved June 11, 2017, from http://pitest.org/quickstart/mutators/.. 4. Beginner's Guide to Mobile Application Testing. (n.d.). Retrieved June 11, 2017, from http://www.softwaretestinghelp.com/beginners-guide-to-mobile-applicationtesting/. 5. Deng, L., Mirzaei, N., Ammann, P., & Offutt, J. (2015). Towards mutation analysis of Android apps. 2015 IEEE Eighth International Conference on Software Testing, Verification and Validation Workshops (ICSTW). doi:10.1109/icstw.2015.7107450. 6. Hafiz, M., Ma, Y.S., & Offutt, J. (2005). Mutation Testing Tool for Java. 7. Haschemi, S., & Weißleder, S. (2010). A Generic Approach to Run Mutation Analysis. Testing Practice and Research Techniques Lecture Notes in Computer Science, 155-164. doi:10.1007/978-3-642-15585-7_15. 8. Hsueh, M., Tsai, T., & Iyer, R. (1997). Fault injection techniques and tools. Computer, 30(4), 75-82. doi:10.1109/2.585157.

10 9. Jia, Y., & Harman, M. (2011). An Analysis and Survey of the Development of Mutation Testing. IEEE Transactions on Software Engineering, 37(5), 649-678. doi:10.1109/tse.2010.62. 10. Malini, A., Venkatesh, N., Sundarakantham, K., & Mercyshalinie, S. (2014). Mobile application testing on smart devices using MTAAS framework in cloud. International Conference on Computing and Communication Technologies. doi:10.1109/iccct2.2014.7066751. 11. Ma, Y. S., & Offutt, J. (2016, July). Description of mujava s Method-level Mutation Operators. Retrieved June 11, 2017, from http://www.bing.com/cr?ig=5c8d7fbee3464734838305063037559c&cid=1b88 A48A95D960C93485AE1494DF619D&rd=1&h=nHl0W8N8Rng2SiVMk7TmdNn9 FP4CoeZmjLmqu9et1Lo&v=1&r=http%3a%2f%2fcs.gmu.edu%2f%7eoffutt%2fmu java%2fmutopsmethod.pdf&p=devex,5061.1. 12. Mirshokraie, S., Mesbah, A., & Pattabiraman, K. (2015). Guided Mutation Testing for JavaScript Web Applications. IEEE Transactions on Software Engineering, 41(5), 429-444. doi:10.1109/tse.2014.2371458. 13. Muccini, H., Francesco, A. D., & Esposito, P. (2012). Software testing of mobile applications: Challenges and future research directions. 2012 7th International Workshop on Automation of Software Test (AST). doi:10.1109/iwast.2012.6228987 14. Nishiura, K., Maezawa, Y., Washizaki, H., & Honiden, S. (2013). Mutation analysis for Java script web application testing. In Proceedings of the International Conference on Software Engineering and Knowledge Engineering, SEKE (January ed., Vol. 2013- January, pp. 159-165). Knowledge Systems Institute Graduate School. 15. Offutt, J., Ma, Y., & Kwon, Y. (2006). The class-level mutants of MuJava. Proceedings of the 2006 international workshop on Automation of software test - AST 06. doi:10.1145/1138929.1138945 16. Pan, J. (1999). Software Testing. Retrieved June 11, 2017, from https://users.ece.cmu.edu/~koopman/des_s99/sw_testing/ 17. Saifan, A. A., & Wahsheh, H. A. (2012). Mutation operators for JADE mobile agent systems. Proceedings of the 3rd International Conference on Information and Communication Systems - ICICS 12. doi:10.1145/2222444.2222460.