Analysis of emerging features of C# language towards mutation testing
Anna Dereziska · 2010
Evolution of programming languages brings emerging programming features aimed at improving programming efficiency and dependability. All programming mechanisms should be taken into account in development of high quality test suites. Tests case generation and qualification can be supported by a mutation approach. Mutation technique inserts simple changes into a program under test. Faults injected into a source code are defined by mutation operators. Using these operators, many mutated programs, so-called mutants, are generated in a systematic way. Evaluating the adequacy of a test suite, mutants are run against test cases from the suite. A mutant is killed when at least one test case causes it to fail. Mutants that generate exactly the same output as the original program cannot be killed by any test and are called equivalent mutants. Ability to kill mutants is a criterion for generation and selection of test cases. Standard (traditional) mutation operators are dealing with mistakes common to all general purpose languages, e.g. misusing of relational, logical, arithmetical operators, of variables, constants, etc. [28]. Apart from these operators used in functions of structural programming languages or methods of object-oriented ones, other specialized operators were developed, like intraand inter-class mutation operators dealing with objectoriented features for Java [13,17] or C# [4-6], mutations of SQL queries [27], concurrent constructs [2] and others. A survey of mutation testing techniques and problems concerning different programming and specification languages can be found in [12]. A basic core of programming languages is usual stable, but a whole language can evolve gaining new features. They can correspond to new possibilities of architecture and operating systems or try to make a programmers work more effective and reliable. The continuous evolution is especially characteristic for C# language. With the release of Visual Studio 2005 the C# language has been updated to version 2.0. A new version 3.0 of the language and its compiler is available in VS 2008 [21,26]. In both cases several new features and enhancements were introduced. __________