Тестирование программного обеспечения. Основы
Шрифт:
В 1990-е годы понятие «тестирование» означало не только проверку программы, но и планирование процесса проверки, создание, поддержку и выполнение тестов, а также окружений, в которых работала и проверялась программа. Тогда тестирование стало важной составляющей для поддержания и улучшения качества программ. Это дало развитие инструментам, используемым для поддержки процессов тестирования: многофункциональные системы и инструменты для автоматизации тестирования; инструменты формирования отчётов; системы написания и хранения тестов и проведения тестирования; системы для проверки работы программ под высокой нагрузкой.
В настоящее время тестирование является важным инструментом для гарантии качества программ и уверенности в их правильной работе. Оно
Кто он – специалист по тестированию
Мы пользуемся множеством различных программ каждый день, даже не задумываясь об этом. Например, покупая что-то в магазине, используются кассовые аппараты; снимая наличные деньги, мы используем банкоматы; посещая различные сайты, мы используем компьютеры, все это работает благодаря специальным программам.
Кто-то разрабатывает их, а кто-то проверяет работоспособность – тестирует. Специалистов, тестирующих программы, называют «специалистами по тестированию» или «тестировщиками». Есть профессиональный стандарт, где указано чёткое наименование профессии – «специалист по тестированию», поэтому в данной книге будем использовать термин оттуда.
Те, кто никогда не сталкивались с тестированием, иногда заблуждаются, думая, будто специалисты по тестированию – это люди, которые в процессе работы бессмысленно нажимают различные кнопки в проверяемой программе. Это не так. Тогда кто же он – этот специалист по тестированию?
Этот человек проверяет программы и в процессе проверки проводит их глубокий анализ и исследование. Он имеет аналитический склад ума, постоянно развивает навыки логически мыслить и анализировать большой объём информации, прежде чем решать поставленные перед ним задачи. Благодаря гибкости ума он моделирует различные ситуации, в которых программа может работать. И если она работает не так, как должна, а её ожидаемое поведение обязательно закреплено в специальной документации, специалист по тестированию должен сообщить программистам об ошибке. Специалисту по тестированию в этот момент понадобится важный для его профессии навык – умение чётко формулировать мысли и грамотно доносить информацию до других. Зачем нужен этот навык? Если программист не поймёт, что именно работает неправильно, он не сможет исправить ошибку или потратит на поиск непозволительно много времени.
Однако на этом работа специалиста по тестированию не заканчивается. Он следит за тем, чтобы программу или оборудование, в которое встроена программа, было удобно использовать. Например, если кто-то разместит монитор банкомата на уровне колен человека, пользоваться им будет затруднительно. Тестировщик должен сообщать о подобных недочётах тем, кто отвечает за проектирование удобства использования, чтобы исправить проблему до того, как такой банкомат перешёл в массовое производство. Аналогичная ситуация и с программами. Если с интерфейсом существуют значительные проблемы в удобстве её использования, специалист по тестированию должен сообщать об этом.
Он хорошо знает, как работает программа, которую проверяет. Порой даже лучше программистов, которые её создают. Если программа очень большая, команда программистов делится на группы. Каждая знает только ту часть, за разработку которой отвечает, а тестировщикам приходится изучать и знать функционирование всей программы целиком, чтобы проверять её работу комплексно. По опыту могу сказать: программисты ценят квалифицированных специалистов по тестированию, и когда у новых программистов возникают вопросы связанные с работой программы, они идут к ним за помощью. Встречались ситуации, когда новые программисты или аналитики [3] , изучая работу новой для них программы, обучались у опытных тестировщиков.
3
Аналитик – это специалист, который занимается изучением информации и делает выводы на основании этой информации. Он анализирует данные, чтобы понять, как должна работать программа в конкретных ситуациях. Не полный перечень занятий аналитика: общение с пользователями; выявление требований пользователей к программе, которую будут разрабатывать; документирование требований и их согласование; постановка задач программистам; демонстрация готовой программы пользователям.
Надо помнить, что на плечи специалистов по тестированию ложится ответственность за качество работы программ. И от качества их работы зависит очень многое: от размера прибыли компании до жизни людей. Практически каждая компания, связанная с разработкой программ, имеет в своём штате тестировщиков.
Зачем нужны специалисты по тестированию
Никто не идеален, все мы допускаем ошибки. Они могут быть как незначительными, так и очень серьёзными, некоторые имеют разрушительные последствия. Поэтому, когда мы создаём какой-либо продукт, в том числе компьютерные программы, необходима проверка, чтобы его использование было безопасным и эффективным. В этот момент и нужны специалисты по тестированию.
У многих возникает вполне закономерный вопрос: «Зачем привлекать специалистов по тестированию для проверки программ, если это могут делать программисты, разрабатывавшие её?». В некоторых компаниях, где нет специалистов по тестированию, так и происходит. Программисты сами и разрабатывают, и тестируют. Однако не всё так просто.
Во-первых, если программист сам занимается тестированием своей программы, у него будет меньше времени, чтобы фокусироваться на прямых обязанностях: разработке программы и устранении ошибок. Таким образом, время, которое уходит на разработку и тестирование в целом, значительно больше, чем если тестирование выполняется специалистами по тестированию. Конечно же программист проверяет программу перед тем, как передать её специалистам по тестированию, однако делает это поверхностно, чтобы удостовериться, что логика, которую он реализовал, работает. Если он этого не сделает, и программа, переданная на тестирование, не будет функционировать, специалисты по тестированию вернут её на доработку.
Во-вторых, программист не всегда может предусмотреть все возможные способы использования программы, поскольку его мышление отличается от мышления специалиста по тестированию. Последний задумывается обо всех возможных способах использования программы, в том числе, учитывая и возможные варианты её сломать, так как пользователь программы, если у него что-то не получается, может начать щелкать все по очереди, надеясь, что что-то заработает. Программист обычно думает, как правильно использовать программу, и может не предусматривать случаи, когда программа может сломаться. В результате, такой подход способен привести к пропуску критических ошибок, которые могут обнаружить конечные пользователи.
В-третьих, специалист по тестированию, используя различные техники, методы и виды тестирования проводит более тщательную проверку, ведь это его профессия, он совершенствует навыки годами.
Отсюда и вывод: специалисты по тестированию нужны везде, где есть программисты. Программисты разрабатывают, а специалисты по тестированию – тестируют.
Что мы знаем о программах
В предыдущих главах мы упоминали программы, которые разрабатываются и тестируются. В жизни вы слышали термин «программное обеспечение». Кто работает в сфере информационных технологий, могли ещё слышать термин «информационная система». Многие считают, что программа, программное обеспечение и информационная система – это одно и то же. Давайте попробуем открыть завесу тайны и понять, что означают данные термины.