Документ взят из кэша поисковой машины. Адрес оригинального документа : http://old.master.cmc.msu.ru/lectures/AnalizeIT/Ch7_8.html
Дата изменения: Thu Jan 15 23:15:52 2004
Дата индексирования: Tue Oct 2 15:27:42 2012
Кодировка: Windows-1251
Часть VII - Уровни тестирования  
Перейти в оглавлению раздела

Часть VII

7.8 Уровни тестирования


     Как уже говорилось, цель тестирования конформности состоит в том, чтобы дать ответ на вопрос, удовлетворяет ли тестируемая реализация требованиям стандарта. Практические ограничения не позволяют осуществлять исчерпывающее тестирование реализации. Для того, чтобы более точно определять цели тестирования и, как следствие, проектные ограничения на разработку методов тестирования, в рассматриваемом стандарте (P2003) различается три основных уровня тестирования:

  • исчерпывающее (Exhaustive) тестирование
  • полное или тщательное (Thorough) тестирование
  • идентификационное (Identification) тестирование.

    Исчерпывающее тестирование предполагает проверку поведение каждого аспекта элемента, включая всевозможные комбинации поведения. Например, исчерпывающее тестирование некоторой пользовательской команды потребовало бы тестирование этой команды без использования опций, затем в случаях применения каждой опции, в случаях использования различных комбинаций каждой пары опций, и т.д. до тех пор, пока не будут протестированы все возможные комбинации опций.

    Из-за большого числа комбинаций тестов делает задача исчерпывающего тестирования, как правило, становится практически не реализуемой как по экономическим, так и по временным ограничениям.

    Например, в документе POSIX.1 определено 37 ошибочных условий. При этом одни ошибки могут порождать другие. Полная проверка комбинаций ошибочных ситуаций потребовала бы разработку огромного числа тестов (2 в 37-ой степени), что не представляется реальным.

    Функционально полного тестирования обычно используется в качестве разумной альтернативы исчерпывающему тестированию. При таком тестировании проверятся поведение каждого аспекта элемента (например, функции, команды, утилиты), но не проверяются комбинации условий тестирования.

    Например, чтобы выполнить полную проверку ошибочных условий из предыдущего примера, потребовалось бы разработать 38 тестов.

    Идентификационное тестирование предназначено в основном для проверки наиболее характерных свойств тестируемой системы. Например, оно может использоваться в семействах компиляторов для идентификации типа исходного языка, на котором написана программа, поступившая на вход такой системы программирования.

    Например, идентификационное тестирование компилятора языка C должно отличать его от компилятора любого другого языка, но не обязательно от другого компилятора C. Это бы не потребовало проверки синтаксиса и всех определенных в руководстве по компилятору C функций. Правильное идентификационное тестирование компилятора C должно было бы проверить минимальный набор программных конструкций, который необходим для распознавания компилятора C среди компиляторов других языков.

    Кроме как от требуемого уровня тестирования, сложность тестирования зависит и от сложности самих тестируемых элементов API.

    Различают три уровня сложности элементов:

  • простой
  • средний
  • сложный.

    Простыми являются те элементы, свойства которых полностью определены своим собственным описанием. Им, как правило, соответствует небольшое число утверждений, необходимых для тестирования конформности. Функциональность таких элементов не зависит от других элементов, определенных в стандарте. Примерами простых элементов могут служить утилита cat, описанная в стандарте POSIX 2, или функция close(), определенная в стандарте POSIX 1. К простым элементам следует применять полное тестирование.

    К средним по сложности относятся такие элементы, которые имеют значительное количество утверждений и могут зависеть от функциональности других элементов. Примерами средних по сложности элементов являются утилиты grep и sed из стандарта POSIX 2. В большинстве случаев к элементам данной сложности наиболее разумным является применение полного тестирования. Однако возможны случаи, когда такой подход может оказаться чрезмерно сложным для практической осуществимости.

    К сложным относят такие элементы, которые реализуют некоторый язык, зависят от функциональности средних по сложности элементов, взаимодействуют с аппаратурой и пр. Обычно для тестирования таких элементов требуется большое число тестов. Примерами сложных элементов могут служить утилиты sh и awk ОС UNIX. Для сложных элементов полное тестирование может оказаться практически нереализуемым

Предыдущая глава Оглавление Следующая глава