BC/NW 2006, №2, (9) :3.4
ОБЕСПЕЧЕНИЕ КАЧЕСТВА ПРОГРАММНЫХ СРЕДСТВ
НА ОСНОВЕ АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
А.А. Котлячков
(Москва, Московский Государственный Технологический
Университет «СТАНКИН», Россия)
Электронные
технологии широко пронизывают все сферы жизни. Российский рынок программного обеспечения
(ПО) находится в постоянном развитии. Хороший программный
продукт делает и разработчика и потребителя конкурентоспособнее. Поэтому задача обеспечения качества ПО выливается в
задачу согласования критериев качества со всеми участниками процесса и нахождения оптимального решения. Такую роль берет на себя группа тестирования, так как
тестирование призвано по своей сути
сделать вывод о качестве продукта с точки зрения конечного пользователя.
Тестирование преследует две цели: с одной стороны, выявить ошибки ПО, с
другой – доказать, что ошибок в программе нет. В современной программной индустрии этап тестирования один из основополагающих, в частности, в каскадной модели технологии проверки ПО (рис.1). Каскадное тестирование основывается на двух методах – статическом и динамическом.
Статические методы (СМ) предполагают выявление дефектов в программном
продукте без прогона программного кода, т.е. проверка программы происходит без
запуска машины. СМ включают, помимо изучения спецификации и требований к
системе, получение данных для составления плана
проведения испытаний [1]. Этот этап можно назвать
анализом требований к системе. В планирование испытаний входит определение объема, подходов, ресурсов и расписания действий. На
этапе проектирования тестов происходят установка цели тестирования,
спецификация входных данных, создание архитектуры тестов для их упорядочения по группам. Тестирование программного продукта начинается с выявления и изучения требований к системе. Динамические методы тестирования – методы реализации тестов, т.е. прогоны программного продукта и сравнение поведения системы с ожидаемым.
Динамическое
тестирование (ДТ) включает непосредственно проверку
спроектированных тестов и анализирует всевозможные тестовые случаи.
При планировании отладки и испытаний ПО следует учитывать следующие факторы: скорость выявления дефектов, скорость устранения дефектов и удовлетворенность машинным временем. Первый фактор зависит от укомплектованности и квалификации испытателей, второй – от укомплектованности группы программистов-отладчиков, третий – от технической оснащенности организации.
Cлова «отладка» и «тестирование» часто используются как синонимы, но под ними подразумеваются разные виды деятельности. Тестирование – деятельность, направленная на обнаружение ошибок; отладка же направлена на установление точной природы известной ошибки, а затем – на исправление этой ошибки. Эти два вида деятельности связаны –
результаты тестирования являются исходными данными для отладки. Следует учитывать, что исчерпывающего тестирования
– для каждого входного значения, для каждой последовательности, для каждой комбинации входных данных – быть не может,
особенно в таких программах, как
системы реального времени, операционные системы и программы управления данными,
которые сохраняют «память» о предыдущих входных данных [3]. Поэтому
исчерпывающее тестирование для всех
входных данных любой сложной программной системы неосуществимо.
Эти рассуждения, естественно, приводят ко второму фундаментальному принципу тестирования: тестирование – это проблема в значительной степени экономическая. Поскольку исчерпывающее тестирование
невозможно, мы должны ограничиться чем-то меньшим. Каждый тест должен давать
максимальную отдачу по сравнению с нашими затратами.
Разработка
тестов должна начинаться с момента согласования требований к продукту и продолжаться
параллельно с его отладкой. Конечно, к началу этапа тестирования создаются
тестовые наборы, содержащие тысячи тестов, и их полный прогон на этапе
тестирования представляет проблему. Решение ее лежит в области автоматизации
разработки. Хорошо спланированное, автоматизированное тестирование требуется по
нескольким причинам. Во-первых, организации, которые не автоматизируют свои тесты, значительно увеличивают вероятность серьезных
поломок системы, приводящих к задержкам, дорогостоящим устранениям
ошибок и потенциально непоправимой потере репутации в глазах покупателей. Во-вторых, природа современных
клиент/серверных приложений способствует быстрой разработке сверхсложных
систем, которые не могут быть адекватно протестированы с использованием
традиционных ручных методов. Автоматизация требуется для того, чтобы управлять
ускоренным процессом тестирования, анализировать и отслеживать обнаруженные
дефекты, выполнять анализ риска, постоянно улучшать как тестирование, так и
процесс разработки. На рис. 2 представлена обобщенная структура автоматизации
тестирования программных продуктов, в
которой создается и сохраняется следующая информация:
·
Статистика тестового цикла. Она
включает: результаты пропуска каждого теста из тестового набора и их сравнение
с эталонными величинами. Кроме того, сюда заносятся факты,
послужившие основанием для принятия решения о продолжении или окончании тестирования. И, наконец, критерий покрытия и степень его удовлетворения, достигнутые в цикле тестирования.
Такие параметры, как интенсивность обнаружения ошибок и надежность разрабатываемого ПО, тесно связаны со временем тестирования -
по мере обнаружения большого количества ошибок и дефектов
в ПО, качество разрабатываемого продукта повышается.
Таким образом, автоматизация тестирования – неотъемлемая часть системы обеспечения качества программного продукта и связанных с ним
процессов. Фактически она уже давно является стандартом в отрасли обеспечения
качества, поскольку позволяет существенно снизить себестоимость проведения
работ и повысить надежность результатов.
Вместе с тем существует ряд исследований, которые в принципе не могут
быть выполнены вручную. К примеру, многие из функциональных и нагрузочных
тестов при их проведении вручную потребовали бы использования
десятков и даже сотен компьютеров, за каждым из которых в течение всего времени проведения теста должен находиться оператор. Воссоздать реальные условия и масштабность промышленной среды,
имитировать одновременные действия сотен и даже тысяч пользователей позволяют решения для автоматизации тестирования. Все более усложняясь, тестирование программного обеспечения должно использовать инструментальные средства и методики автоматизированного тестирования,
чтобы справляться с встающими задачами.
К достоинствам автоматизации можно причислить следующие моменты: во-первых, можно производить нагрузочное тестирование,
невозможное при тестировании ручными методами. Во-вторых, есть возможность
резко снизить трудоемкость тестирования, сокращая время на каждый прогон
тестовых сценариев. В-третьих, автоматизация тестирования позволяет снизить
монотонность труда при неоднократном регрессионном
тестировании, увеличивая тем самым общую производительность труда[4].
К недостаткам автоматизации тестирования программных
продуктов можно отнести их высокую стоимость.
Литература
1.
Липаев В.В. Качество Программных Средств. Янус-К, Москва,
2002, 400 с.
2.
Роберт
Калбертсон, Крис Браун, Гэри Кобб. Быстрое
тестирование. Вильямс, Москва, 2002, 384 с.
3.
Элфрид Дастин,
Джефф Решка, Джон Пол. Автоматизированное тестирование программного обеспечения. Лори, Москва, 2003, 264 с.
4.Котляров В.А.
Основы тестирования программного обеспечения/Курс лекций. Интернет. Университет
информационных технологий: www.intuit.ru.
5.
Винниченко И.В. Автоматизация
процессов тестирования. Питер, Санкт-Петербург, 2005, 208 с.