Абрамова Ю.В.
группа
компаний «РЕЛЭКС», г.Воронеж
Воронежский
государственный университет, Россия
История тестирования и его парадокс
Тестирование - процесс исследования
программного обеспечения с целью проверки его соответствия требованиям и
получения информации о качестве продукта. Первые программные системы
тестировались строго формализовано с записью всех тестовых процедур, тестовых
данных, полученных результатов.
Полное тестирование программного обеспечения
невозможно из-за того, что:
· имеется большое количество всевозможных входных значений,
· исправление каждой ошибки порождает новые (с некоторой долей вероятности).

Виды
тестирования
По знанию
системы
· Тестирование чёрного ящика (black box)
Методы
тестирования черного ящика:
o эквивалентное разбиение,
o анализ граничных значений,
o анализ причинно-следственных связей,
o предположение об ошибке.
· Тестирование белого ящика (white box)
Область
применения:
o юнит-тесты,
o мутационное тестирование.
· Тестирование серого ящика (gray box)
Грамотное
сочетание черного и белого ящика в зависимости от тестируемого продукта.
По степени
автоматизации
· Ручное тестирование (manual testing)
Методы ручного тестирования:
o классы эквивалентности,
o анализ граничных значений,
o анализ документации и use case-ов.
Техники ручного
тестирования:
o тестирование по тест-плану,
o тестирование свободного поиска,
o парное тестирование (pairwise).
· Автоматизированное тестирование (automated testing)
два основных
подхода к автоматизации тестирования:
o тестирование на уровне кода (в частности, модульное тестирование),
o GUI-тестирование (имитация действий пользователя с помощью специальных
тестовых фреймворков).
· Полуавтоматизированное тестирование (semiautomated testing)
В случае краткосрочных проектов есть смысл
автоматизировать только часто повторяющиеся или простые части тестов, а сложные
проверки проводить вручную.
Принципы тестирования
Существует только два типа данных:
реальные и синтезированные данные. В действительности надо использовать оба
типа, поскольку их различная природа будет способствовать выявлению разных
дефектов в программном обеспечении. Реальные данные исходят из некоего
реального источника. Возможно, они были получены из существующей системы,
конкурирующей системы или некоего прототипа, и представляют типичные пользовательские
данные. Большие сюрпризы возникают, как только вы открываете значение термина
«типичный». При этом скорее всего являются дефекты и недоразумения в анализе
требований. Синтезированные данные генерируются искусственно, возможно, с
определенными статистическими ограничениями.
Синтезированные данные могут понадобиться по одной
из следующих причин:
ñ требуется большое
количество данных, больше, чем содержится в любом из имеющихся образцов,
реальные данные могут использоваться в качестве образца для генерации большего
набора данных и позволяют добиться уникальности определенных полей;
ñ требуются данные для
того, чтобы выделить определенные граничные условия. Эти данные могут быть
полностью синтезированными: поля, содержащие дату 29 февраля 1999 г., огромные
размеры записей или адреса с иностранными почтовыми индексами.
ñ требуются данные,
которые демонстрируют определенные статистические свойства. Эти данные могут
быть синтезированы на основе реальных данных, либо на каком-нибудь
предположении.
2.
Принципы тестирования:
ñ Тестирование
демонстрирует наличие дефектов
ñ Полное тестирование
невозможно
ñ Раннее тестирование
ñ Плотность дефектов
ñ Парадокс пестицида
ñ Зависимость тестирования
от контекста
ñ Заблуждение об
отсутствии ошибок
В
заключение хотелось бы отметить, что на данный момент существует множество
видов тестирования, подходов, методов и технологий, в которых достаточно сложно
разобраться начинающему тестировщику. Однако самым важным я считаю наличие
стратегии тестирования, которая позволяет выбрать необходимый вид тестирования
и использовать различные техники, а при достижении определенного уровня
(тестированием в проекте и тестировщиком в тестировании) — грамотно подобрать
инструмент для автоматизации.
Литература:
1. Калбертсон
Роберт, Браун Крис, Кобб Гэри Быстрое тестирование.— М.: «Вильямс», 2002.—
374с.— ISBN 5-8459-0336-X
2.
Бейзер Б. Тестирование чёрного ящика. Технологии
функционального тестирования программного обеспечения и систем.— СПб.: Питер,
2004.— 320с.— ISBN
5-94723-698-2
3. К.Бек Экстремальное
программирование: разработка через тестирование. Библиотека программиста. -
Спб.: Питер, 2003. - 224 с. ISBN 5-8046-0051-6.
4. Г.Майерс «Искусство
тестирования программ» - М.: Финансы и статистика, 1982. - 176с. ББК 32.973 М14
5. Э.Дастин, Дж.Рэшка,
Дж.Пол «Автоматизированное тестирование программного обеспечения» - М.: «ЛОРИ»,
2003. - 567с. ISBN 5-85582-186-2.
6. И.Винниченко
«Автоматизация процессов тестирования» - Спб.: Питер, 2005 — 203 с. ISBN
5-469-00798-7.
7. Р.Савин «teстирование
dot COM или Пособие по жесткому
обращению с багами в интернет-стартапах» - М.: Дело, 2007. - 312с. ISBN
978-5-7749-0460-0.
8. Дж.Макгрегор, Д.Сайкс
«Тестирование объектно-ориентированного программного обеспечения» Практическое
пособие. - К.: ООО «ТИД «ДС», 2002. - 432с. ISBN 966-7992-12-8.
9. Ron Patton “Software Testing”, Sams Publishing – 2005г. 408
с. ISBN 0-672-32798-8
10.
С.
Канер, Дж.Фолк «Тестирование программного обеспечения. Фундаментальные
концепции менеджмента бизнес-приложений.» К.: Издательство «ДиаСофт», 2001г. -
544 с. ISBN 966-7393-87-9.
11.
Луиза
Тамре «Введение в тестирование программного обеспечения»- М.: Издательский дом
«Вильямс», 2003г. - 368с. ISBN 5-8459-0394-7ю