Захаров Виктор
Тестирование программного обеспечения. Основы
Настольная книга специалиста по тестированию
Первое издание
Бердск, 2024
Погрузитесь в увлекательный мир тестирования программного обеспечения вместе с книгой, которая является настоящим концентратом чистейших знаний для новичков и профессионалов! Автор делится секретами мастерства, подробно рассказывая о более 15 видах тестирования и более 20 методах проектирования тестов. И это только вершина айсберга знаний, изложенных в книге. Вы будете поражены глубиной информации и открытием знаний, о которых даже не догадывались. Книга насыщена ценнейшими советами, основанными на практическом опыте. Многочисленные примеры помогут быстрее освоить представленный в книге материал. Вооружившись знаниями из этой книги, вы будете уверенно разбираться в нюансах тестирования программного обеспечения и с лёгкостью применять знания на практике! Книга может по праву считаться настольной книгой специалиста по тестированию.
На момент написания данной книги я работаю в одной из крупнейших компаний на должности руководителя управления, отвечающего за качество программного обеспечения. За плечами у меня 17 лет опыта в области информационных технологий, из них 13 лет я руковожу подразделениями тестирования.
В процессе работы регулярно возникала необходимость подбора новых сотрудников. Проводя собеседования, я видел низкую квалификацию кандидатов и большие провалы в знаниях и навыках тестирования. На должность специалистов приходят плохо подготовленные кадры!
Многие проходят курсы по тестированию, которые в наше время не создаёт только ленивый. По заверениям многих учебных центров их обучающие курсы ведут сертифицированные специалисты (сертификат ISTQB[1]). Однако огромному их количеству рано учить, им надо учиться. Это я понял, когда знакомился с программами, материалами и лекциями преподаваемых курсов. Я был разочарован качеством!
Тогда я принял решение создать учебную программу, где все имеющиеся у меня знания будут чётко структурированы, где не окажется противоречий, где есть большой практический блок, способный помочь в обучении собственных сотрудников. После длительной кропотливой работы был разработан курс для начинающих специалистов по тестированию, содержащий фундаментальные основы по тестированию.
Создавался он около года: писались материалы, проводилась сверка со стандартами, разрабатывалось программное обеспечение для практической работы и так далее. В подготовке мне помогала супруга. Через год курс был готов. Новые сотрудники, приходящие в подразделение, начали обучаться, повышая квалификацию. Результат не заставил себя долго ждать.
Курс представлял собой концентрат чистейших знаний по тестированию. В ходе разработки было подготовлено и переработано множество материалов, и в процессе обучения сотрудников он постоянно совершенствовался. Мне пришла в голову мысль, что все имеющиеся у меня на руках и в голове знания и опыт необходимо передать всем желающим. Настал момент написания книги.
Сейчас вы читаете ту самую книгу, которая поможет вам постичь фундаментальные основы тестирования программного обеспечения. Написана она простым и доступным языком. Материал будет понятен даже неискушённому читателю. Книга интересна и полезна как новичкам, так и опытным специалистам – каждый найдёт для себя необходимые знания и советы!
Располагайтесь удобнее. Мы с вами начинаем постигать таинственный мир тестирования программного обеспечения. Вас ждут новые открытия и знания. В добрый путь.
История тестирования компьютерных программ началась в 1950-х годах, когда впервые появились компьютеры. В то время программисты[2] самостоятельно проверяли свои программы на работоспособность, чтобы убедиться, что они работают правильно. В эти годы появилось одно из определений: тестирование – это процесс проверки программы с целью демонстрации её правильной работы.
Первые серьёзные программы создавались для научных исследований и для нужд министерств обороны. Требовалась чёткая и бесперебойная работа, а также отсутствие ошибок. В связи с этим процесс решили формализовать и стандартизировать. Проверка работоспособности программ проводилась формализовано с фиксированием всех изучаемых данных и полученных результатов.
В 1960-е годы люди стремились охватить программы полностью, то есть проверять все возможные передаваемые программе данные и все варианты выполнения программ. К примеру, программа может складывать большие числа, и вместо проверки сложения нескольких чисел, пробовали все возможные варианты без исключения: 1 + 1, 1 + 2, 1 + 3… 2 + 10, 2 + 11… 1259 + 15, 1259 + 16… и так далее.
Миллионы проверок! Это оказалось нереально, поскольку существует много данных, которые необходимо вводить или передавать в программу, много вариантов обработки передаваемых данных, и на их проверку уйдут годы. Также в документах, где описано, как создавать программу, присутствовало большое количество ошибок, которые трудно было найти. Поэтому метод полной проверки отклонили и признали неработоспособным. Появился один из принципов тестирования – исчерпывающее тестирование невозможно.
До 1970-х годов проверка программы означала демонстрацию её правильной работы. Но это занимало много времени и не давало полной информации о качестве программы. Подход оказался неэффективным. В 1970-х годах произошли изменения: вместо демонстрации правильной работы программы использовали поиск существующих в ней ошибок. Удачной проверкой считалась та, с помощью которой обнаруживали ранее неизвестную ошибку. В эти годы появилось очередное определение тестирования – это процесс проверки программы с целью нахождения ошибок.
В 1980-е годы начинается формирование концепции тестирования, дошедшей до наших дней. Проверка программ включила в себя такое понятие как «предупреждение ошибок».
Предупреждение ошибок – это информирование о возможной ошибке до того, как она станет серьёзной проблемой.
Это помогает исправить ошибку прежде, чем программа попадёт к пользователям и станет критической. Одним из эффективных способов предотвращения ошибок является проектирование тестов. То есть перед тем, как проверять программу, необходимо продумать, какие проверки мы будем делать, далее зафиксировать их списком и только после этого проверять работоспособность программы по составленному списку проверок.
В эти же годы стало понятно: необходимо сформировать принципы и подходы тестирования. Это позволит решать конкретные задачи и формализует процесс, чтобы он стал управляемым, дающим возможность контролировать качество программ на протяжении всех этапов их создания. В дальнейшем мы познакомимся с каждым этапом.