вторник, 18 июня 2013 г.

Книжная полка. Гленфорд Майерс "Искусство тестирования программ"

Прочитал книгу Гленфорда Майерса "Искусство тестирования программ", третье издание. Книга отличная, рекомендую.


Технико-тактические характеристики:
Год издания: 2012
Страниц: 272
Переплет: Твердый переплет
Формат: 170х240 мм, увеличенный
ISBN: 978-5-8459-1796-6
Скорость чтения - средняя
Ориентировочное время на прочтение: 8 - 10 часов

Многие из вас, наверняка знакомы с задачей Майерса про треугольники из первого издания книги, вышедшего в далеком 1979-м году. Прошло более 30 лет, а эту задачу до сих пор дают на собеседовании начинающим и не очень тестировщикам. Сейчас и книг по тестированию стало намного больше, чем было раньше, но Майерс по-прежнему остается среди тех авторов, книгу которого можно советовать всем, кто связан с качеством программного обеспечения.

Большой плюс книги Майерса - ее объем: всего 270 страниц, на разбор самых важных 11 тем. Ничего лишнего, написанного для "утолщения" книги. Все углубления в тему к месту. Великолепная книга для закладывания "фундамента".

В аннотации книги автор рекомендует эту книгу трем категориям: программистам, менеджерам проектов и студентам ИТ-специальностей. Занимательно, что тестировщиков в этом списке нет :) Но кто, если не мы, объяснит этим трем категориям важность тестирования, заразит "качеством" всю команду? Кроме того, продвинутых знаний программирования для освоения приведенных в книге примеров, не требуется. Да и "командного" подхода к тестированию и чисто менеджерских глав в этой книге нет. А что касается третьей категории - студентов ИТ-специальностей - то среди них есть как будущие программисты, так и будущие тестировщики. Главное - что проблема качества это проблема не только тестировщика, но и всей команды. Поэтому либо читаем все вместе проектной командой, либо читаем сами, а затем "помогаем" менеджеру и программистам в борьбе за качество.

На мой взгляд, это одна из лучших книг, с которых можно начинать вообще знакомство с тестированием: не такая простая и прикладная, как Савин, и не такая сложная и теоретизированная, как Бейзер, и не такая "процессная", как Блэк. Можно читать как от начала и до конца, так и отдельные главы книги, выделяя то, что вам нужно именно сейчас или пропуская то, в чем, как вам кажется, у вас знаний достаточно. Я читал книгу от первой и до последней страницы без пропусков, и ниже расскажу вам о содержании по порядку, а вы уже решайте, как вам удобнее читать. Есть и третий вариант чтения: сначала читаем в конце каждой главы резюме, а потом решаем, стоит ли читать всю главу :).

Глава 1. Тест для самопроверки. Короткое, на пару страниц, введение и вышеупомянутая задача про треугольники.

Глава 2. Психологические и экономические аспекты тестирования. Психология, связанная с определением тестирования; невозможность полного тестирования и использование стратегий "белого" и "черного" ящика; десять принципов тестирования ПО. Это базовые вещи, с которых надо начинать знакомство с тестированием.

Глава 3. Инспекции, сквозные просмотры и обзоры программ. Интересная глава, созвучная с соответствующим материалом про инспекции кода в сертификации ISTQB Foundation Level, плюс контрольные списки возможных ошибок в коде для инспекций - можно взять в готовом виде, как есть в книге, и использовать.

Глава 4. Проектирование тестов. Самая объемная глава, целых 45 (!) страниц :) Наиболее общие техники белого ящика (покрытие операторов, покрытие решений и покрытие логики) и черного ящика (эквивалентное разбиение, граничные значения, причинно-следственные диаграммы). Для новичков можно посоветовать читать целиком, затем, по необходимости, "добивать" эти темы Канером и уже упомянутым ISTQB с примерами вопросов по тест-дизайну. Для более продвинутых тестировщиков я бы рекомендовал обратить внимание на причинно-следственные диаграммы: великолепный пример построения диаграммы с использованием базовых знаний математической логики, не сильно усложненный, как у Бейзера, но и не слишком упрощенный, где диаграмма "притягивается за уши" к тривиальному примеру.

Глава 5. Модульное тестирование. Пожалуй, лучшая практическая и "уникальная" глава в книге: чаще всего объяснения про МТ сводятся к простым примерам, например, как в Википедии: пишем тесты для функции сложения, используем предикат Assert. И да, модульные тесты должны писать программисты - гуглим. Майерс предлагает использовать методики белого ящика для проектирования тестов, а затем дополнить набор тестов тестами "черного ящика". В дополнение к проектированию, очень важно, как мы объединяем модули в работающую программу - для этого используем неинкрементное или инкрементное тестирование (автор показывает преимущества и недостатки обоих методов и предлагает использовать инкрементное тестирование,  на следующем шаге мы выбираем одну из возможных стратегий инкрементного тестирования - восходящее или нисходящее тестирование).
Хорошая новость для тех, кто хочет ознакомиться с этой главой - в бесплатном доступе есть возможность пролистать ее - http://oz.by/books/more10264179.html

Глава 6. Высокоуровневое тестирование. Рассматривается процесс разработки ПО как Получение требований -> Постановка целей -> Внешняя спецификация -> Проект системы -> Проект структуры программы -> Спецификация интерфейсов модулей -> Код. Затем мы используем три взаимодополняющий подхода, которые позволяют предотвращать и (или) обнаруживать ошибки:
  • повышение точности разработки
  • в конце каждого этапа вводим стадию верификации
  • ориентируем конкретные процессы тестирования на конкретные процессы разработки
Третьему подходу и посвящена эта глава: рассматривается функциональное, системное, приемочное тестирование. Отдельно рассматривается инсталляционное тестирование и планирование и контроль тестирования. Модель Майерса напоминает V-модель тестирования ПО c небольшими отличиями.

Глава 7. Тестирование удобства использования. Общие рекомендации по тестированию юзабилити БЕЗ привязки к особенностям интерфейса различных ОС, user interface guide'ам и моделям GOMS в сочетании с законами Фитса и Хика. В книге рассматриваются только основы и процесс тестирования удобства использования с использование анкет.

Глава 8. Отладка. Глава скорее для программистов. Неэффективность метода "грубой силы" и принципы эффективной отладки, разбитые на 2 этапа: локализацию ошибок и их устранение.

Глава 9. Тестирование в среде гибкой разработки. Общие принципы Agile-методологий. Экстремальное программирование и тестирование. И все. Не рассматривается тестирование в скрам-командах, автоматизированное тестирование.

Глава 10. Тестирование интернет-приложений. Рассматривается архитектура e-commerce приложений, проблемы тестирования в веб, стратегия тестирования веб-приложений на трех уровнях: слой представления, бизнес-логика, слой данных.

Глава 11. Тестирование мобильных приложений. Структура главы аналогична предыдущей: архитектура сетей мобильной связи, стратегия тестирования мобильных приложений.

Общий вывод - отличная книга, рекомендую к прочтению начинающему и продолжающему тестировщику, без "воды". "Классические" темы преподнесены отлично, новые темы (юзабилити, гибкая разработка, интернет- и мобильные приложения) даны обзорно, лишь для ознакомления.

Комментариев нет:

Отправить комментарий