Показаны сообщения с ярлыком Модульное тестирование. Показать все сообщения
Показаны сообщения с ярлыком Модульное тестирование. Показать все сообщения

вторник, 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. Тестирование мобильных приложений. Структура главы аналогична предыдущей: архитектура сетей мобильной связи, стратегия тестирования мобильных приложений.

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