Тестируемость программного обеспечения
![]() | Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( сентябрь 2014 г. ) |
Тестируемость программного обеспечения — это степень, в которой артефакт программного обеспечения (т. е. программная система, программный модуль, документ с требованиями или проектным документом) поддерживает тестирование в заданном контексте тестирования. Если тестируемость программного артефакта высока, то найти неисправности в системе (если они есть) путем тестирования проще.
Формально некоторые системы тестируемы, а некоторые нет. Эту классификацию можно осуществить, заметив, что для того, чтобы функциональность тестируемой системы «S» могла быть тестируемой, которая принимает входные данные «I», должен существовать вычислимый функциональный предикат «V» такой, что истинно, когда S, учитывая ввод I, выдает действительный результат, в противном случае — ложь. Эта функция «V» известна как функция проверки для системы с входом I.
Многие программные системы нетестируются или не поддаются немедленному тестированию. Например, ReCAPTCHA от Google без каких-либо метаданных об изображениях не является тестируемой системой. Однако Recaptcha можно немедленно протестировать, если для каждого отображаемого изображения имеется тег, хранящийся в другом месте. Имея эту метаинформацию, можно протестировать систему.
Таким образом, тестируемость часто рассматривается как внешнее свойство, возникающее в результате взаимозависимости тестируемого программного обеспечения и целей тестирования, используемых методов тестирования и ресурсов тестирования (т. е. контекста тестирования). Несмотря на то, что тестируемость не может быть измерена напрямую (например, размер программного обеспечения), ее следует считать внутренним свойством программного артефакта, поскольку она тесно коррелирует с другими ключевыми качествами программного обеспечения, такими как инкапсуляция, связь, связность и избыточность.
Корреляцию «тестируемости» с хорошим дизайном можно наблюдать, наблюдая, что код, который имеет слабую связность, тесную связь, избыточность и отсутствие инкапсуляции, трудно тестировать. [1]
Более низкая степень тестируемости приводит к увеличению усилий по тестированию . В крайних случаях отсутствие тестируемости может помешать тестированию частей программного обеспечения или требований к программному обеспечению вообще .
Предыстория [ править ]
Тестируемость, свойство, применимое к эмпирической гипотезе, включает в себя два компонента.Трудозатраты и эффективность тестов программного обеспечения зависят от множества факторов, в том числе:
- Свойства требований к программному обеспечению
- Свойства самого программного обеспечения (например, размер, сложность и тестируемость)
- Свойства используемых методов испытаний
- Свойства процессов разработки и тестирования
- Квалификация и мотивация лиц, участвующих в процессе тестирования
Тестируемость компонентов программного обеспечения [ править ]
Тестируемость компонентов программного обеспечения (модулей, классов) определяется такими факторами, как:
- Управляемость: степень, в которой можно контролировать состояние тестируемого компонента (CUT), как это требуется для тестирования.
- Наблюдаемость: степень, в которой можно наблюдать (промежуточные и окончательные) результаты испытаний.
- Изолируемость: степень, в которой тестируемый компонент (CUT) может быть протестирован изолированно.
- Разделение задач : степень, в которой тестируемый компонент несет единую, четко определенную ответственность.
- Понятность: степень, в которой тестируемый компонент документирован или понятен.
- Автоматизация: степень, до которой можно автоматизировать тестирование тестируемого компонента.
- Гетерогенность: степень, в которой использование разнообразных технологий требует параллельного использования различных методов и инструментов тестирования.
Тестируемость компонентов программного обеспечения можно улучшить за счет:
- Разработка через тестирование
- Проектируйте для тестируемости (аналогично проектированию для тестирования в области аппаратного обеспечения)
Тестируемость требований [ править ]
Чтобы быть тестируемыми, требования должны соответствовать следующим критериям:
- последовательный
- полный
- однозначный
- количественный (требование типа «быстрого времени ответа» не может быть проверено/проверено )
- верификация/проверяемость на практике (тест возможен не только теоретически, но и на практике при ограниченных ресурсах)
Рассматривая требование как аксиомы, проверяемость можно рассматривать, утверждая существование функции. (программное обеспечение)такой, что ввод генерирует выходные данные , поэтому . Следовательно, идеальное программное обеспечение генерирует кортеж который представляет собой набор ввода-вывода ,стоит для спецификации.
Теперь возьмите тестовый ввод , который генерирует выходные данные , это тестовый кортеж . Теперь вопрос в том, стоит или нет или . Если он есть в наборе, тестовый кортеж проходит, иначе система не сможет выполнить тестовый вход. Поэтому крайне важно выяснить: можем ли мы или не можем создать функцию, которая эффективно транслируется в понятие индикаторной функции множества для набора спецификаций. .
По идее, — функция тестируемости спецификации. .Существование должно не просто утверждаться, оно должно быть строго доказано. Следовательно, очевидно, что без алгебраической непротиворечивости такая функция не может быть найдена, и, следовательно, спецификация перестает называться проверяемой.
См. также [ править ]
Ссылки [ править ]
- ^ Шеллоуэй, Алан; Тротт, Джим (2004). Объяснение шаблонов проектирования, 2-е изд . п. 133 . ISBN 978-0321247148 .
- Роберт В. Биндер: Тестирование объектно-ориентированных систем: модели, шаблоны и инструменты, ISBN 0-201-80938-9
- Стефан Юнгмайр: Улучшение тестируемости объектно-ориентированных систем , ISBN 3-89825-781-9
- Вандерлей Соуза: Абстрактные шаблоны тестируемости , ISSN 1884-0760
- Борис Бейзер: [1] , Методы тестирования программного обеспечения.