• Български
  • English

Implementation of Unit tests SolidOpt

Goals

To implement unit tests on the functionality of the framework SolidOpt. To prepare documentation of tested functionality.

Description

This is the working title of the topic appropriate for the diploma thesis in FMI at University of Plovdiv.

Details

Unit testing is a method of validation and verification of the software developer that tested various software modules of source code that are fit for use. The module is the smallest part of the application, which can be tested. In imperative programming module can be a procedure or function.

The field of the diploma thesis is sub field of quality assurance of the software. Graduates or undergraduates will gain extensive knowledge in programming, development of test cases for applications, the execution flow analysis and their integration into the system such as SolidOpt.

Required knowledge

It is appropriate to have knowledge in the following technologies:

  • NUnit
  • Code Coverage
  • .NET

Ideas and existing solutions

It is good to be considered:

  • http://www.nullstone.com/
  • http://www.nullstone.com/htmls/category.htm
  • The implementation can be divided into two parts:
    1. Test cases for SolidOpt;
    2. Many (relatively) small programs and test cases for them - SolidTest.

    The SolidOpt test cases should use the programs from SolidTest to check the optimization algorithms. The test case should apply given optimization method (or composition of methods) onto one or all programs in SolidTest. After that it should check the programs with their test cases. In the meantime it is good to be applied tests for efficiency of the optimization method and the optimized applications before and after the optimization.

  • SolidTest - it should contain enough programs (and/or libraries of classes) to cover the need of test cases in couple of view points:
    1. Programming language C#;
    2. Optimization methods;
    3. Domains.

    Each viewpoint should be covered with programs with previously prepared classification. Magnitude and specificity of SolidTest programs must comply with:

    • First point of view (C#) - Test cases should follow the programming language syntax and the test cases should be just syntactically correct programs, containing elements of one (or combination of several) syntax entities. For example simple if, if-else, if inside if, if in loop, nested loops, etc. This can be done automatically by making the programming language grammar to work in generating mode.
    • Second point of view is the optimization methods (see nullstone classification). Here the test cases are larger and more complex. The programs should be designed and written to check the optimization algorithms. If the algorithm is not written correctly the test cases of the test programs should fail.
    • Third point of view is the domain. Examples for domains are: Computer Graphics, Matematical Calculs, etc. Here the programs should be larger. These programs can be already implemented by somebody else and they can be imported directly as test cases. However, they should be with appropriate license. If the programs lack test cases they should be written. The main goal of these programs is to test the optimization methods onto more complex applications and to gain information about different domains.