Программный комплекс после сборки вполне может содержать ошибки, неувязки, ведущие к сбоям. И у лучшего программиста, эксперты отмечают не менее одной ошибки на тысячу кода программы (ПО), на устранение которой потребуется временные, вычислительные и, главное, – интеллектуальные усилия. Специалисту по тестированию («тестировщику») необходимо отработать множество тестов, чтобы обнаружить все ошибки – как сами тестировщики говорят, до «предпоследней». Задача, становящаяся почти невыполнимой при росте сложности и объема кода ПО. А таковыми являются практически все комплексные бизнес-приложения.
Выручает автоматизация, интеллектуализация, верификация. Автоматизированное тестирование (автотестирование) – процесс автоматизированной генерации (креативного подбора) данных по всем логическим ветвям программы («на все тестируемые случаи»), прогона программ, анализа результатов и реакции ПО, всего комплекса. Особенно важны экстремальные ситуации и случаи, когда невозможно выделить компоненты, уровни для автономной проверки корректности всего комплекса.
Востребованное современное направление
Грамотный «тестер» всегда был востребован. Почему так востребованы курсы тестирования программного обеспечения сегодня? – Для конкурентоспособного бизнеса актуальны оперативность, мобильность, непрерывное опережение конкурентов ниши. Здесь потребуются гибкие, креативные разработки, практики, методики. А необходимость комплекса методик, методологии приводит нас к автоматизированному тестированию.
Регулярное автотестирование дает уверенность в работе приложения согласно спецификациям (ТЗ), как предполагает бизнес, самоуправление бизнес-процессов. Обо всех возникающих проблемах будете узнавать оперативно. Всеми процессами сможете адаптивно управлять. Владельцам быстро откликающегося бизнеса стоит «вложиться» серьёзно в хорошо продуманные и структурированные решения от квалифицированных специалистов.
Цели, задачи и принципы автоматизации
Цель тестирования – проверка работоспособности комплекса, поиск латентных (скрытых) ошибок навигации, дизайна, обеспечение результативности и устойчивости.
Цели автоматизации тестирования:
- снижение затратности и длительности ручного тестирования;
- уменьшение времени отладки и генерации релизов;
- снижение количества дефектов и рисков, уязвимостей;
- оптимизация (улучшение) архитектуры.
Бизнес-логика тестируется обычно посредством пользовательского интерфейса. Это логически верно отражает бизнес-взаимодействия, но сама бизнес-логика реализуется же уровнями ниже. Неплохо, если можно будет обращаться напрямую на нужный уровень (а не последовательно иерархически), это даст тесты, более быстрые и надёжные.
Пользовательский интерфейс при этом проверим отдельными тестами. В небольшом количестве, но минимально достаточном. Основная надежда разработчиков «коробочных решений (программ, сервисов)» – автоматизация «за вас», в несколько «кликов», например, как в MachineLearning, DataMining, AI.
Тестировщики – аудиторы с расширенными правами и доступами, чем рядовой пользователя.
Большие преимущества и небольшие недостатки
Интеграционное автоматизированное тестирование, часто и невозможно реализовать по многим причинам, например, из-за упущений в требованиях заказчиков или необходимости добавления жизненно необходимого для бизнеса нового функционала (мобильной версии магазина онлайн, в частности).
Небольшой «недостаток» – потребуется мотивация, быстрая обучаемость, командная работа (team lead), совмещение задач (технических, управления), стратегическое прототипирование, мышление и др.
«Плюсы» автотестирования:
- «человеческий фактор» – исключен;
- скорость;
малозатратность; - автоматическая отчетность;
- вмешательство исключено и др.
«Минусы» таковы:
- повторяемость, однообразность;
- затратная поддержка при частой изменяемости приложений;
- дорогой инструментарий «автоматизатора»;
- мелкие ошибки могут «ускользнуть» и др.
Технологии автотестирования
Что должно обеспечивать автотестирование? Из многообразия выделим ключевые моменты современного развития технологии для бизнес-приложений – тестирование:
- производительности (стресс-устойчивое, нагрузочное);
- регрессионное (функциональность для бизнеса, заказчика);
- конфигурационное (для различных условий, архитектур, например, различных браузеров);
- функциональное (функциональность для технологии, приложений, комплекса);
- установочное (инсталляционное, для настройки продукта по требованиям бизнеса, заказчика).
Инструментарий автотестирования – разнообразен. Отметим лишь такие средства:
- QuickTestProfessional (от Hewlett-Packard) – платный, записывающий действия тестирующего пользователя (скрипты или скринкастинг);
- RationalFunctionalTester (от IBM) – платный, управляющий данными;
- Selenium (от OpenQA.org) – бесплатный.
Чем проект «долгосрочней», тем выгодней его автотестирование. Можно просчитать ROI (возвращаемость инвестиций). Учитывают и карьерный аспект – многие проходят курсы тестирования программного обеспечения, автоматизированного тестирования. Они дают компетенции в «баг-трекинге» («отслеживании ошибок»), во взаимодействиях с заказчиками/разработчиками.