Абрамова Ю.В.

группа компаний «РЕЛЭКС», г.Воронеж

Воронежский государственный университет, Россия

История тестирования и его парадокс

Тестирование - процесс исследования программного обеспечения с целью проверки его соответствия требованиям и получения информации о качестве продукта. Первые программные системы тестировались строго формализовано с записью всех тестовых процедур, тестовых данных, полученных результатов.

Полное тестирование программного обеспечения невозможно из-за того, что:

·       имеется большое количество всевозможных входных значений,

·       исправление каждой ошибки порождает новые  (с некоторой долей вероятности).

Виды тестирования

По знанию системы

·       Тестирование чёрного ящика (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)

В случае краткосрочных проектов есть смысл автоматизировать только часто повторяющиеся или простые части тестов, а сложные проверки проводить вручную.

Принципы тестирования

1. Тестовые дaнные

         Существует только два типа данных: реальные и синтезированные данные. В действительности надо использовать оба типа, поскольку их различная природа будет способствовать выявлению разных дефектов в программном обеспечении. Реальные данные исходят из некоего реального источника. Возможно, они были получены из существующей системы, конкурирующей системы или некоего прототипа, и представляют типичные пользовательские данные. Большие сюрпризы возникают, как только вы открываете значение термина «типичный». При этом скорее всего являются дефекты и недоразумения в анализе требований. Синтезированные данные генерируются искусственно, возможно, с определенными статистическими ограничениями.

Синтезированные данные могут понадобиться по одной из следующих причин:

ñ    требуется большое количество данных, больше, чем содержится в любом из имеющихся образцов, реальные данные могут использоваться в качестве образца для генерации большего набора данных и позволяют добиться уникальности определенных полей;

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