Реализиране на Unit тестове за SolidOpt

Цели

Да се реализират unit тестове върху функционалността на инструментариума SolidOpt. Да се изготви документация на тестваната функционалност.

Описание

Модулното тестване (Unit testing) е метод за валидиране и проверка на софтуера, при който програмистът тества отделните софтуерни модули на сорс кода дали са годни за използване. Модулът е най-малката част от приложението, която може да бъде тествана. В императивното програмиране модула може да бъде процедура, функция или метод.

Областта на дипломната работа е подобласт на осигуряване на качеството на софтуера (Quality Assurance). Дипломантите ще придобият по-широки познания по програмиране, разработване на тестови случаи за приложения, анализ на последователността на изпълнение, както и интеграцията им в система като SolidOpt.

Сложност

Средна/Висока.

Необходимо време

6-12 месеца.

Необходими предварителни познания

Необходими са познания в следните технологии:

  • NUnit
  • Code Coverage
  • .NET (основно C#)

Разяснения

Идеи и съществуващи решения

Добре е да се разгледат следните налични материали:

  • http://www.nullstone.com/
  • http://www.nullstone.com/htmls/category.htm
  • Добре е реализацията да се раздели на две части:
    1. Тестови случаи за SolidOpt;
    2. Съвкупност от много (сравнително) малки програми и тестови случаи за тях - SolidTest.

    Тестовите случаи на SolidOpt трябва да използват програмите от SolidTest, за да реализират проверките на работоспособността на алгоритмите за оптимизация. За целта тестовият случай трябва да приложи даден оптимизационен метод (или съвкупност от методи) върху една, няколко или върху всички програми от SolidTest, след което да провери работоспособността на програмите чрез техните тестови случаи. В същото време е добре да се приложат и тестове за производителност на оптимизационния метод, както и на оптимизираните програми преди и след оптимизацията.

  • SolidTest - трябва да съдържа достатъчно на брой програми (и/или библиотеки от класове) за да покрие необходимостта от тестов материал от няколко различни гледни точки:
    1. Езика за програмиране C#;
    2. Оптимизационните методи;
    3. Приложните области.

    Всяка от тези гледни точки трябва да бъде покрита с програми по предварително изготвена класификация. Големината и спецификата на програмите в SolidTest трябва да е съобразена със спецификата на гледната точка:

    • Първата гледна точка (C#) се характеризира със сравнително къси тестови програми, библиотеки или методи. Трябва да се следва основно синтаксиса на езика и да се пишат синтактично правилно конструирани програми, съдържащи основно елементи съответстващи на една (или комбинация от няколко) синтактични единици в езика в различни комбинации. Например, единичен if, if-else, вложени if-ове, if в цикъл, вложени цикли и т.н. Добре е да се помисли дали генерацията на програмите не може да стане автоматизирано чрез граматиката на езика ("работеща" в генериращ режим).
    • Втората гледна точка са оптимизационните методи (виж класификацията на nullstone). Тук тестовете са малко по-големи като обем и сложност. Програмите трябва да са проектирани и написани, така че да може чрез тях да може да се провери работоспособността на алгоритмите за оптимизация, за които е предвиден теста. Ако алгоритъма за оптимизация не е написан правилно, то трябва да се очаква тестовите програми да бъдат повредени т.е. някои от техните тестови случаи трябва да пропаднат.
    • Третата гледна точка е приложната област. Примери за такива области са: Компютърната графика, Математическите изчисления и други. Тук програмите трябва да са по-големи като обем. Тези програми може да бъдат търсени и сваляни готови от Интернет, но те трябва да са с подходящ лиценз. Ако те нямат тестови случаи то такива трябва да се добавят към програмата. Основните цели на тези програми са да се тестват оптимизационните методи върху по-комплексни приложения, както и да се натрупа информация за различни приложни области.

Ментори

А.Пенев, В. Василев

Материали

все още няма