как правильно выбрать тестовые данные
От: Alexander Pazdnikov  
Дата: 01.03.12 11:59
Оценка:
Здравствуйте, Коллеги.

Подскажите, пожалуйста, как правильно тестировать такие функции, перебором всех возможных вариантов или ещё как-то?
Ссылки на статьи и мат.часть очень приветствую.


/* С++ */

    static bool IsReadJournalDone(bool FullReadDone, bool SessionFullReadDone, bool ReadAlwaysFull, bool NeedFullRead, bool EventOld, bool EventNull)
    {
        /* определим надобность дальнейшего чтения журнала */

        if (SessionFullReadDone)
        {
            return true;
        }

        if (ReadAlwaysFull)
        {
            return false;
        }

        if (NeedFullRead && !FullReadDone)
        {
            return false;
        }

        if (EventNull)
        {
            return true;
        }

        return EventOld;
    }
Re: как правильно выбрать тестовые данные
От: abibok  
Дата: 01.03.12 17:49
Оценка:
Pairwise.
Re: как правильно выбрать тестовые данные
От: b-3 Россия  
Дата: 01.03.12 17:58
Оценка:
Здравствуйте, Alexander Pazdnikov, Вы писали:

AP> Здравствуйте, Коллеги.


AP>Подскажите, пожалуйста, как правильно тестировать такие функции, перебором всех возможных вариантов или ещё как-то?

AP>Ссылки на статьи и мат.часть очень приветствую.

AP> static bool IsReadJournalDone(bool FullReadDone, bool SessionFullReadDone, bool ReadAlwaysFull, bool NeedFullRead, bool EventOld, bool EventNull)

Рефакторингом в сторону избавления от булевских параметров?

Видя такую функцию, сразу приходит в голову мысль, что из 2^6 = 64 возможных вариантов программная логика предусматривает максимум пять или шесть возможных сочетаний, то есть 10%. Заменить часть этих состояний на enum-ы, часть на overload-ы и написать switch вместо ифов может быть и некрасиво, но с точки зрения "тестируй всё и считай code coverage" — самое то.
Забанен с формулировкой "клинический дисидент".
Re: как правильно выбрать тестовые данные
От: pagrus  
Дата: 01.03.12 20:33
Оценка:
AP>Подскажите, пожалуйста, как правильно тестировать такие функции, перебором всех возможных вариантов или ещё как-то?
AP>Ссылки на статьи и мат.часть очень приветствую.

Если идти от написанного кода, то необходимо покрыть возможные ветки исполнения кода — коих я насчитал шесть.
Ещё лучше в BDD стиле определить требования к методу, и покрывать их, а не имплементацию.
Re: статья и ссылка на матчасть
От: os24ever
Дата: 06.03.12 01:03
Оценка:
AP>Ссылки на статьи и мат.часть очень приветствую.

Черноножкин Сергей Константинович. "Методы и инструменты метрической поддержки разработки качественных программ".

"Предложен способ формального описания критериев тестирования с помощью понятий: множество требуемых элементов и покрытия данного множества, разработан комплексный критерий тестирования для Модула-2/Оберон-2-программ, включающий семь критериев структурного тестирования, три из которых предложены и сформулированы впервые; разработан простой язык описания тестовых условий для их описания и задания во вновь сформулированных критериях. Изучена проблема построения минимального дугового покрытия для ассемблерных и Модула-2-программ, разработан алгоритм его построения."


Диссертация есть в препринте, Google найдёт. Стоимость где-то ~500 р.
тестирование модула оберон oberon modula
Re[2]: статья и ссылка на матчасть
От: abibok  
Дата: 06.03.12 07:47
Оценка:
O>Диссертация есть в препринте, Google найдёт. Стоимость где-то ~500 р.

Традиционные для России теоретические рассуждения "о том, как должно быть", бесполезные для практического применения, но для наукообразия приправленные притянутой за уши математикой. Если нужно что-то подобное, но реально работающее — смотрите Pex.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.