Жизненный цикл разработки ПО начинается со стадии анализа. Цель этой стадии – определение детальных требований к системе.
На данной стадии бизнес-аналитики формируют документацию, в которой написано как должно выглядеть и работать приложение. Также на этой стадии дизайнеры интерфейсов создают макеты будущего приложения. Данной документацией в дальнейшем будут пользоваться программисты и тестировщики. Программисты будут реализовывать требования, а тестировщики проверять, что разработчики сделали именно, что указывалось в документации.
На стадии проектирования программисты, руководствуясь требованиями, разрабатывают дизайн системы, т.е. планируют как будут реализовывать требования. Определяются технологии, инструменты, языки программирования, которые будут использоваться в проекте.
После того как требования и дизайн продукта утверждены, происходит переход к следующей стадии жизненного цикла – непосредственно разработке. Здесь начинается написание программистами кода программы в соответствии с ранее определенными требованиями. Frontend программисты разрабатывают пользовательский интерфейс, для этого они берут макеты, которые сделали дизайнеры и переводят их в компьютерный код, а backend разработчики создают логику работы приложения, а также занимаются базами данных, которые хранят всю информацию приложения.
Тестировщики занимаются поиском дефектов в программном обеспечении и сравнивают описанное в требованиях поведение системы с реальным. В фазе тестирования обнаруживаются пропущенные при разработке баги. При обнаружении дефекта, тестировщик составляет отчет об ошибке, который передается разработчикам. Последние его исправляют, после чего тестирование повторяется – но на этот раз для того, чтобы убедиться, что проблема была исправлена, и само исправление не стало причиной появления новых дефектов в продукте. Тестирование повторяется до тех пор, пока программа не будет работать согласно заявленным требованиям. Виды, методы и техники тестирования мы подробно рассмотрим дальнейших уроках.
Когда программа протестирована и в ней больше не осталось серьезных дефектов, приходит время релиза и передачи ее конечным пользователям. После выпуска новой версии программы в работу включается отдел технической поддержки. Его сотрудники обеспечивают обратную связь с пользователями, их консультирование и поддержку. В случае обнаружения пользователями тех или иных пост-релизных багов, информация о них передается в виде отчетов об ошибках команде разработки, которая, в зависимости от серьезности проблемы, либо немедленно выпускает исправление (т.н. hot-fix), либо откладывает его до следующей версии программы.
После того как мы нашли и завели баг в баг-трекинговой системе начинается жизненный цикл бага. Через какие стадии проходит баг:
Тестирование может показать наличие дефектов в программе, но не доказать их отсутствие. В то же время, даже если дефекты не были найдены в процессе тестирования, нельзя утверждать, что их нет.
Невозможно провести исчерпывающее тестирование, которое бы покрывало все комбинации пользовательского ввода и состояний системы, за исключениям совсем уж примитивных случаев.
Следует начинать тестирование на ранних стадиях жизненного цикла разработки ПО, чтобы найти дефекты как можно раньше.
Разные модули системы могут содержать разное количество дефектов – то есть, плотность скопления дефектов в разных элементах программы может отличаться. Большая часть дефектов находится в ограниченном количестве модулей.
Прогоняя одни и те же тесты вновь и вновь, Вы столкнетесь с тем, что они находят все меньше новых ошибок. Поскольку система эволюционирует, многие из ранее найденных дефектов исправляют и старые тесты больше не срабатывают. Чтобы преодолеть этот парадокс, необходимо периодически вносить изменения в используемые наборы тестов, корректировать их с тем, чтобы они отвечали новому состоянию системы и позволяли находить как можно большее количество дефектов.
Выбор методологии, техники и типа тестирования будет напрямую зависеть от природы самой программы. Тестирование проводится по-разному в зависимости от контекста. Например, сайт с большой посещаемостью должен пройти через серьезное тестирование производительности, чтобы показать возможность работы в условиях высокой нагрузки. Из тех же соображений для банковского ПО критически важна безопасность.
Тот факт, что тестирование не обнаружило дефектов, еще не значит, что программа готова к релизу.