Тестирование - это проверка соответствия между реальным продуктом и ожидаемым с помощью конечного набора тестов, выбранных определенным образом.
При тестировании создается тестовая модель. Тест-кейсы, чек-листы. Каждый кейс должен состоять из шагов и хорошим тоном является создание двух трех шагов:
- открыл страницу;
- ввел логин и пароль;
- нажал на кнопку.
Два-три действия по минимуму. И если у нас возникает отклонение- у нас возникает ошибка, баг, дефект.
Из чего состоит тестирование:
Существует менеджмент тестирования, который занимается планированием. Он определяет сколько мы тестируем, каков объем нашего тестового набора, какие будут трудозатраты, какая требуется тестовая среда, сколько потребуется человеко-часов. Сюда относятся так же формирование мок-объектов (стабы, заглушки), если система взаимодействует с другими системами, то ей потребуются некоторые заглушки, которые нужно спланировать, какие ответы они должны давать, сколько их нужно и так далее.
Менеджеры определяют по своим метрикам как загружен тестировщик, загружен он или нет, компетентность, справляется тестировщик или нет.
Проектирование тестов. Большая часть работы тестировщика это проектирование тестов. И хорошо описанные тесты по хорошему сможет пройти даже школьник. Но проблема в том, что нам могут попасться не те ошибки, которые мы ожидали и вот здесь уже все-таки выполнять тесты должны тестировщики, а не школьники.
Анализ полученных результатов. Когда у нас все хорошо или система падает с ошибкой это понятно. А вот что бы предотвратить падения системы, обнаружения ошибки, чтобы пользователь не натворил чудес, тестировщик должен предугадать его действия. А это все постигается с опытом и с помощью анализа прошлых ошибок.
Очень часто возникает такая проблема, что ошибок очень много и устранять их все сразу не реально. Проблема состоит в том, что исправление одной ошибки с большой вероятностью влечет за собой возникновение новых ошибок, что требует повторного тестирования и проверки.
По сути тестировщики являются переводчиками того, что нагородили аналитики и заказчики. Так как заказчик иногда не понимает, что он сам хочет, а тут еще аналитик его может запутать. От аналитика на проектах по разработке тоже очень многое зависит. Он тоже должен обладать большим опытом и пониманием того, что хочет заказчик. А тестировщики пытаются разобраться с требованиями, проверить качество реализуемого программного обеспечения и найти как можно больше несоответствий с требованиями и отдать разработчикам на переделку.
А при AGILE требования создаются при каждом новом спринте, так же в AGILE минимум бюрократии и документооборота. Поэтому требования аналитик докладывает в устном виде, что приводит к некоторым трудностям. А требования для тестировщека это самое главное.
Три подхода к тестированию:
- формальный. Что мне сказали то я и сделал. Подход джуниора. Если джуниор хороший, то работа выполняется педантично, хорошо, но без энтузиазма. И над ним всегда должен быть кто-то.
- "мне сказали, я разобрался". Используются технологии, лайфхаки. Тормошит аналитика, тормошит разработчика. Это Мидл.
- "Увидел проблему разобрался" подход Сеньора.
И маленький анекдот. Джуниора нужно пинать, мидл справляется сам, а сеньор пинает джуниора.
Виды тестирования:
- ручное тестирование;
- автоматизированное тестирование;
Что бы приступить к автоматизированному тестированию, требуется хотя бы раз пройти ручное тестирование, согласно требованиям, чтобы понять как оно должно работать.
И есть такая проблема при автоматизированном тестировании - это то, что эту всю махину требуется поддерживать. И необходимо поддерживать капитально и при тесном согласовании с разработчиками. Изменил к примеру разработчик название одной переменной. На уровне интерфейса ничего не изменилось. А скрипт у нас падает, т.к. он у нас обращается к старой переменной.
Но зачем нам тогда требуется автоматизация тестирования? А потому что в основном мы тестируем Web-сервисы. Которые связаны через серверы с клиентом с помощью браузера, клиент-серверного приложения, мобильного приложения. А это означает, что у нас будет кроссплатформенность, кроссбраузерность и один и тот же тест нам придется проходить на всех устройствах и браузерах. Автоматизация с помощью специальных программ, таких как Selenium нам может в этом помочь.
Ручное тестирование это основа для автоматизации, нагрузочного тестирования, анализа и планирования. Не набравшись опыта с ручным тестированием лучше не браться за другие виды тестирования.
На этом первую часть закончу. Охота узнать Ваше мнение и если не сложно поставьте палец вверх.