54
Введение в тестирование программного обеспечения ЕСЛИ ВЫ ЧТО-НИБУДЬ МОЖЕТЕ УЗНАТЬ ИЗ ЭТОГО, ТО ЭТО - ПРОВЕРИТЬ СВОЙ КОД ТАК, КАК БУДТО ЖИЗНЬ ЗАВИСИТ ОТ НЕГО.

Ицхак Цал-Крупп, Павел Фесенко - Software testing

  • Upload
    -

  • View
    165

  • Download
    10

Embed Size (px)

Citation preview

Page 1: Ицхак Цал-Крупп, Павел Фесенко - Software testing

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

программного обеспечения

ЕСЛИ ВЫ ЧТО-НИБУДЬ МОЖЕТЕ УЗНАТЬ ИЗ ЭТОГО,

ТО ЭТО - ПРОВЕРИТЬ СВОЙ КОД ТАК, КАК БУДТО ЖИЗНЬ ЗАВИСИТ ОТ НЕГО.

Page 2: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Программное обеспечение проникло во

все аспекты нашей жизни

Page 3: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Беспилотный грузовик

грузовик Freightliner Inspiration компании Daimler получил разрешение на перевозки

по дорогам общего пользования штата Невада

Page 4: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Неисправности программного

обеспечения

Мы разрабатываем программы, которые

содержат дефекты

• Сколько? Какие?

Трудно предсказать будущее, однако ... Это

весьма вероятно, что программное

обеспечение будет развиваться в будущем не

будет значительно лучше.

Page 5: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Что такое компьютерный "баг“ ?

В 1947 году в Гарвардском университете

работал компьютер под названием Mark II.

Этот компьютер занимал целую комнату.

механические реле для реализации как 50 регистров с плавающей

запятой, так и для арифметического устройства

светящиеся вакуумные трубки

техники программирования компьютера с помощью изменения

конфигурации

Жук (bug), забравшись в Harvard Mark II, привел к ошибкам при

проведении операций с плавающей точкой.

Запись в лабораторном журнале гласила:

«Сегодня обнаружен первый настоящий баг».

Page 6: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Bugs также известны, как ...

ошибки

заблуждение

проблема

инцидент

аномалия

дисперсия

дефект

отказ

несоответствие

погрешность

огреха

особенность

программы :-)

Page 7: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Ariane 5 – Европейское космическое

агенство

4 июня 1996 года, полет Ариан-5

закончился отказом.

Лишь около 40 секунд после стартовой

последовательности, на высоте 3700 м,

носитель свернул с траектории полета,

распалася и взорвался

Page 8: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Ариан-5 - Основная причина

Ariane 5 Полет 501 Отказ,

Доклад по расследованию причин:

программный сегмент для преобразования числа с плавающей запятой в знаковое 16-битное целое было выполнено со значением входных данных вне диапазона представления 16-разрядного целого числа.

Эта ошибка во время выполнения (выход из диапазона, переполнение), которая возникла в обоих (активном и резервном) компьютерах примерно в то же время, не была обнаружена и оба компьютера отключились.

Это привело к полной потере управления ориентацией. Ариан-5 оказался бесконтрольным и аэродинамические силы свернули его с пути.

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

Page 9: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Mariner 1 (1962 г.) : Ошибка в коде для

космической программы

Код был написан на Фортране и имел ошибку:

DO 3 I = 1.10 вместо ... DO 3 I = 1,10

компилятор воспринял это как допустимое

выражение, поскольку в ФОРТРАНе (DO3I = 1.10 )

Другой вариант:

Математик написал на бумаге формулу с "NOT-R", т.е.

букву R с чертой над ней;

программист не заметил черту, и использовал "R"

вместо "NOT-R".

Page 10: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Проблемы военной авиации

F-18 разбился из-за пропущенного условия else в блоке If...

then ... поэтому не было возможности перехода.

В симуляции F-16 программаная ошибка

пыталась перевернуть виртуальный

самолет всякий раз, когда он пересекал

экватор. Это происходило из-за

пропущенного минуса для указания

южной широты.

Page 11: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Therac-25: Фатальная радиация

В 1986 году человек в Техасе получил от 16,500- 25000 рад в менее чем 10 сек, на площади около 1 см(вместо 180 рад,)

Он потерял левую руку, и умер от осложнений 5 месяцев спустя.

Терак-25 – аппарат для лучевой терапии (онкология).

В 1985-87 гг. 6 человек получили смертельную дозу облучения (количество пациентов, также подвергшихся переоблучению, но выживших, точно не известно).

Page 12: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Therac-25: ОшибкиБыла разработана специальная мультизадачная ОС реального времени для компьютера PDP-11/23 с 32Kбайт и написанная на языке ассемблера

Неправильная синхронизация процессов

Если в пределах 8 сек. курсор покидает командную строку и - после быстрого редактирования параметров - успевает вернуться на нее, то Keyboard Handler этого события просто не заметит,.

дозиметр давал показания в "условных единицах"

Программная блокировка

Во время установки и подгонки параметров подпрограмма Set Up Test вызывается несколько сотен раз. Проверка - переменная F$mal равна 0 . Иначе цикл повторяется.

Эта переменная – однобайтовая : каждый 256-й проход она сбрасываться в ноль. А ведь этот ноль - свидетельство, что все параметры, наконец, установлены.

Page 13: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Авария в энергосистеме в США и

Канаде (2003)

Около 10 млн человек в

Канаде (примерно треть

населения)

40 млн человек в США

Денежный ущерб

составил 6 миллиардов

долларов.

Page 14: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Авария в энергосистеме в США и Канаде (Причины )

В Кливленде, Огайо не подстригли деревья под проводами.

Линии электропередачи в Кливленде нагрелись, провисли и коснулись

деревьев. Произошло короткое замыкание.

Электростанция в Кливленде вышла из строя.

Из-за ошибки в компьютерной системе и нехватки персонала, другие

центры управления не были извещены.

Произошло цепное отключение около 100 других электростанций.

баг в программе, отвечающей за систему оповещения

Две части системы «соревновались» за один ресурс и не могли разрешить

конфликт (ошибка проектирования под названием «состояние гонки»), из-за

этого система оповещения не сработала.

остановка системы оповещения была «тихой». Не было произведено никаких

звуковых или визуальных оповещений.

Page 15: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Происшествие на авианосце USS

Yorktown

21 сентября 1997 года движущая система USS Yorktown

полностью остановилась, оставив авианосец

беспомощным в воде на 3 часа, когда один из членов

экипажа корабля ввѐл ноль в бортовую систему

управления базами данных, а система попыталась

произвести операцию деления на ноль. Программное

обеспечение было установлено в ходе проекта по

использованию компьютеров для уменьшения

необходимого количества людей в экипажах некоторых

кораблей.

Page 16: Ицхак Цал-Крупп, Павел Фесенко - Software testing

ЦРУ дает Советам газа (1982) миллионы долларов, значительный ущерб для

советской экономики

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

Этот сбой относится к разряду запрограммированных - по одной из версий агенты ЦРУ

намеренно внесли изменения в исходники канадского программно-технического

комплекса, приобретенного Советским Союзом для того, чтобы управлять своими

газопроводами. Приобретение было частью стратегического плана СССР по хищению

или получению доступа к секретным технологиям США. Когда ЦРУ получило

информацию об этой покупке, в качестве контрмер оно приступило к программному

саботажу,

Page 17: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Обвал на Уолл-стрит (1987)

Всего за один день,"Черный понедельник" (19 октября 1987 года), котировки Dow Jones упали на 508

пунктов, потеряв 22,6% своей стоимости. Фондовый индекс S&P 500 упал на 20,4%(500 млрд долларов ).

Это были самые большие потери за всю историю Уолл-стрит, которые произошли в течение одного дня.

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

стабильных времен и условий ведения бизнеса,

биржевые игроки стремились избавиться от акций и облигаций. Это породило панику на бирже.

Поскольку инвесторы обратились в массовое бегство, компьютерная программа биржевой торговли

начала генерировать поток ордеров на продажу, рынок зашатался и... рухнул,

последовал сбой системы, который сделал инвесторов

слепыми, фактически в эти часы они не могли что-либо

контролировать и влиять на ситуацию, они не знали что

они продают и по какой цене.

Page 18: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Патриот не защищает своих солдат (1991)

25 февраля 1991 года, во время первой войны

в Персидском заливе американской системе

противоракетной обороны Patriot,

установленной в Саудовской Аравии, не

удалось перехватить атаку иракских ракет

Скад (Scud). Ракетами были уничтожены

армейские казармы и солдаты, которые в них

находились во время атаки.

28 солдат погибли, 100 получили ранения

Page 19: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Патриот не защищает своих

солдат (1991) Ошибка программного обеспечения, из-за некорректного округления (при

переводе десятых долей секунды в секунды) было неправильно рассчитано время, в результате чего система Patriot просто проигнорировала приближающиеся ракеты Scud. Погрешность составила всего около 0,34 секунды, но за это время ракета преодолевает расстояние в полкилометра.

Page 20: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Ошибка операции деления у Pentium (1993)

чип процессора Intel Pentium периодически допускал незначительные ошибки при делении чисел с плавающей точкой в пределах определенного диапазона.

Например, деление 4195835.0/3145727.0 давало результат 1,33374 вместо 1,33382, (погрешность 0,006%.)

реальные неудобства от ошибка испытали лишь несколько пользователей

Из 5 миллионов дефектных чипов, находящихся в обращении, Intel первоначально предложила заменить чипы Pentium только тем потребителям, которые смогли бы доказать, что им действительно необходима такая высокая точность вычислений. В конце концов, Intel заменила чипы для всех, кто обратился с жалобой.

Потери: 475 млн долларов и престиж компании Intel.

floating-point unit (FPU), математический сопроцессор. использовались специальные таблицы деления, которые и хранились в математическом сопроцессоре, и в которых просто недоставало около пяти тысяч записей

Page 21: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Y2K (1999)

Потери: 500 млрд долларов.

Для экономии памяти компьютера, программное обеспечение часто сохраняло год в формате даты-времени в виде двух цифр, например "99" вместо "1999".

Поэтому при пересечении векового порога программа вполне могла интерпретировать "00" как исторические "1900", а не современные "2000".

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

Page 22: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Последствия плохого качества

Standish Group обследовала 350 компаний, более 8000 проектов в

1994 году

31% отменена до завершения, 9-16% были прерваны из-за стоимости

и бюджета

исследование в США (1995): 81 млрд долларов США тратят в год на

проекты по разработке программного обеспечения

исследование Национальный институт стандартов и технологий NIST

(2002): ошибки стоят $ 59.5 млрд. в год. Раннее обнаружение может

сохранить $ 22 млрд.

Page 23: Ицхак Цал-Крупп, Павел Фесенко - Software testing

ТестированиеОпределения и Цели

Page 24: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Определение Тестов

Тестирование программного обеспечения:

Методы выполнения программы с целью нахождения так

много дефектов как возможно и / или получения

достаточной уверенности в тестируемой программе (или

системе)

"Программа тестирования может показать наличие ошибок, но

никогда не докажет их отсутствие "(Дейкстра)

Page 25: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Базовые определения тестирования Ошибки: Люди совершают ошибки

Неисправность: Неисправность - это результат ошибки в

программном обеспечении, документация, коде и т.д.

Отказ: Отказ происходит, когда срабатывает неисправность

Многие люди используют вышеперечисленные три термина

заменяя один другим. Этого следует избегать

Аварии: последствия отказов - появление Отказ может или не может

быть очевидным для пользователя

Цепочка зависимости основных понятий надежности

Page 26: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Мотивации Независимо от того, как строги мы,

программное обеспечение будет иметь неисправности

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

Невозможно проверить в отпущенное время все варианты, возможные при эксплуатации -на основе неполного тестирования, мы должны быть достаточно уверены, что система имеет желаемое поведение

Тестирование больших систем является комплексным - это требует стратегию и соответствующую технологию и часто неэффективно на практике

Page 27: Ицхак Цал-Крупп, Павел Фесенко - Software testing
Page 28: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Обзор процесса тестирования

Page 29: Ицхак Цал-Крупп, Павел Фесенко - Software testing

тестирование

Эффективность показывает количество ненайденных

багов.

Помогает локализовать неисправность для дебаггинга.

Повторяемость позволяет понять как неисправность

может быть проверена.

Автоматизация также уменьшет стоимость и время

тестирования.

Систематический настолько, чтобы быть предсказуемым

в плане его влияния на надежность

Page 30: Ицхак Цал-Крупп, Павел Фесенко - Software testing

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

Процесс тестирования программного обеспечения

Является средством, в котором тестовые деятельности, люди, методы и инструменты обьединяются для проверки продукта

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

Люди - это тест-менеджеры, руководители и тестеровщики, отвечающие за выполнение тестов

Инструменты - аппаратные средства или программное обеспечение, используемое для автоматизации всех или части ручных тестов деятельности

Качество и эффективность тестирования программного обеспечения, прежде всего, определяется качеством процесса испытаний используется.

- [Тестирование в реальном мире, Эдвард комплект]

Page 31: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Тестовая деятельность Тестирование как деятельность может быть

сгруппировано в:

Подготовка испытания

Планирование испытаний

Дизайн и разработка тестов

Выполнение теста и управления дефектами

Подведение итогов тестов

планирование производстворазработкаисследование

завершениеразработкапланированиеисполнение

Page 32: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Выполнение тестов• Основные виды деятельности:

– Запуск тестов

– Исследование, протоколирование и проверка

дефектов

– Монитор выполнения тестов

– Продолжить создание автоматизации

Phases

Выполнение теста является основным видом деятельности обнаружение дефектов

Unit & Integration

Testing System Testing

BAT* Regression Testing Progressive Testing

System Testing

Cycle 1 Cycle 2

Test Cycle

* Build Acceptance Test

Build / Eng.

Relelase

Build / Eng.

Relelase

Page 33: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Люди

Процесс тестирования является профессиональной дисциплиной, требующей подготовленных, квалифицированных людей

Тестирование - это не работа начального уровня

Хорошие тестеры должны

Иметь мироощущение тестировщика

Обучиться процессу тестирования

Не принимать ничего на веру

Уметь работать в команде

Process

Page 34: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Мироощущение тестировщика

Охота на ошибки

Фокус на поиск ошибок

Получить личное удовлетворение

Быть творчески разрушительным

Использовать воображение, настойчивость, чтобы систематически находить дефекты

Преследовать ошибки, а не людей

Не нападайте на разработчика, который сделал ошибку

People

Page 35: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Обучение

Некоторые ключевые навыки инженеров-тестировщиков Планирование тестов

Использование инструментов тестирования

Выполнение тестов

Протоколирование дефектов

Анализ риска

Контрольные измерения

Проэктирование тестов

Построение тестового окружения

Знание технологий тестирования

Потребности конечного пользователя и рабочей среды

People

Page 36: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Создание прочных отношений

Развивать следующие характеристики

достоверность

Разработка технических знаний

Положительный настрой

Не злорадствовать, не хныкать, не показывать превосходство

Целесообразность

Не чувствовать виноватым, легко адаптироваться

Надежность

Быть ответственным за обеспечение последовательную, качественную поддержку

В эффективном проекте, тестеры и разработчики дополняют друг друга, каждый из которых обеспечивает перспективы и навыки, которые другим может не хватать

People

Page 37: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Инструменты

Инструменты автоматизируют некоторые виды тестирования

Чтобы успешно использовать инструменты, вы должны

Иметь четкое определение процесса

быть обучены пользоваться инструментами

Должна быть доступна поддержка

Есть достаточно времени в расписании для развертывания инструмента

Инструменты не решение, но часть решения

Tools

Intel Confidential

Page 38: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Выбор инструментов

Интеграция

Должен поддерживать ваш процесс

Должен поддерживать использование других инструментов

Понимание и подготовка

Какое обучение требуется?

Удобно ли пользоваться инструментом?

Общая стоимость

Стоимость лицензии или покупки

Установка

Техническое обслуживание и поддержка

Tools

Page 39: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Базовые методы тестирования

Два основных типа тестирования:

Тестирование методом черного ящика (black box)

Тестирование методом белого ящика (white box)

Method

Page 40: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Black-box Testing

Тесты основаны на том, что должна делать система (требования к

продукции)

Требуется четкие и полные спецификации, но не нужны внутренние

знания о системе

Это наиболее распространенный тип тестирования в SW

промышленности

Method

Недостатки:Невозможно проверить функции, которые были реализованы, но не

описаны в спецификацииНевозможно проверить внутреннее функционирование системы

Page 41: Ицхак Цал-Крупп, Павел Фесенко - Software testing

White-box Testing

Стратегия тестов основана на знании реализации системы

Тесты основаны на знании внутренней разработки и реализации

Требуется от тестера детальное знание системы

Method

Func()

{

a=1;

}

Недостатки:

Невозможно тестировать возможности программы, которые не были описаны в реализации

Тестировщик должет иметь знания о коде не меньше разработчика

Page 42: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Что лучше?

Black-box testing!

Потому что знание внутренних кодов вызывает

предвзятое мнение еще до тестирования

White-box testing!

Потому что углубленное знание системы также дает

знание слабых мест

Результат: ни Black Box,ни White Box!

Page 43: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Базовые методы тестирования

Типичное использование для Black-box/White-box

Black-box тестирование находит дефекты в

высокоуровневых тестах (характеристики)

White-Box тестирование находит дефекты в

низкоуровневых тестах (код)

Method

Page 44: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Тесты по степени изолированности компонентовУровни тестирования - это разбиения процесса выполнения тестов на несколько последовательных уровней

Levels

Разработка системы

Модуль

Модульное

тестирование

Интеграционное

тестирование

Системное

тестирование

Dev Dev Test

Page 45: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Модульное тестирование проверяет каждый компонент системы отдельно от других

Цель - выполнить все операторы, ветви и основные пути программы

Обнаружить и устранить ошибки на ранних стадиях проекта (недорого)

Обычно используется метод тестирования White-box

Требуется выделить время в общем графике для модульного тестирования

Требуется заглушки и драйверов для отдельных модулей

Обычно делается разработчиками

Ошибки, как правило, не учитываются для конечного продукта

Модульное тестирование

Правильно разработанные модульные тесты потенциально способны обнаруживать 70% дефектов в программе [Тайер и Lipow]

Level

Page 46: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Интеграционное тестирование

Используется комбинации white-box и black-box методов тестирования

Level

Интеграционное тестирование - это тестирование интерфейсов между компонентами

Цель - проверить, что новые части работают в составе системы так, как спроектированно

Обнаруживает и устраняет ошибки в API, и плохое взаимодействие между функциями.

Два типа методов интеграции: интеграция большого взрыва : все компоненты были объединены сразу

инкрементальная интеграция: компоненты добавляются в восходящем или нисходящем порядке

интеграция большого взрыва является менее эффективным Тяжело определить причины ошибок

Выполняется коллективом разработчиков, тестировщиков, или группой интеграции

Ошибки иногда протоколируются

Page 47: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Системное тестирование

Системное тестирование производится на полностью собранной системе

Цель - проверить, что она отвечает требованиям пользователей

Чаще всего - метод Black-box

Находит различия между текущим и желаемым поведением системы

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

Обычно выполняется коллективом тестиривщиков

Ошибки, как правило, протоколируются

"Если вы не написали требования для вашего продукта, или если ваши требования не поддаются измерению, то вы не

можете выполнить проверку системы" [Майерс]

Level

Page 48: Ицхак Цал-Крупп, Павел Фесенко - Software testing

По объекту тестирования

Функциональное тестирование

Обнаруживает расхождения между функциональной

спецификации программы и ее фактическим поведением

Требуются четко определенные требования

Тестирование производительности

Определяет разницу между реальной производительностью

системы и желаемой при пиковых и нормальных условиях

Требуются характеристики производительности, которые трудно

составить

Types

Page 49: Ицхак Цал-Крупп, Павел Фесенко - Software testing

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

Тестирование на совместимость

Тест на совместимость, взаимодействие, совместное функционирование

Дорогое и трудоемкое тестирование

Тестирование надежности

Проверяется надежность и доступность пока система работает с типичной нагрузкой

Включает в себя работу системы в течение длительного времени

Это не проверяется непосредственно. Эти задачи оцениваются путем измерения времени до сбоя

Types

Page 50: Ицхак Цал-Крупп, Павел Фесенко - Software testing

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

Нагрузка / Стресс-тестирование

Определяет условия пиковой нагрузки, при которой система

падает ("тест на провал")

Оценка пиковой нагрузки производится для ключевых

эксплуатационных параметров, в том числе

Объем транзакций

Операционная / пользовательская нагрузка

Активность файловой системы

Уровень ошибок

Сетевой трафик

Types

Примечание: эти тесты могут потребовать сложных конфигураций

Page 51: Ицхак Цал-Крупп, Павел Фесенко - Software testing

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

Исследовательское тестирование

Одновременно процесс исследования продукта, разработки

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

Полезно как дополнение к другим видам тестов

Регрессивное тестирование

Тесты проверяют влияние последних изменений на ранее

протестированный код

Включает повторное выполнение всех или выбранных тестов

"Вероятность при изменении ввести новые дефекты случайно в существующую систему высокая (от 20% до 50%)." [Росс Коллар]

Types

Page 52: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Основные методы тестирования Есть бесконечное число тестов

Чтобы быть эффективным, тестеровщики должны выбрать те испытания, которые быстрее всего найдут дефекты

Некоторые методы, используемые дла этого:

Класс эквивалентности разделов

Граничные значения

Анализ пути

Таблицы решений

диаграммы переходных состояний

Пользовательские сценарии

Ортогональные массивы / тестирование пары

Page 53: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Итак,

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

- это процесс, в котором тестовая деятельность,

инструменты, люди объединяются вместе, чтобы

проверить продукт

Параллельно процессу разработки идет процесс

подготовки тестов, планирование, разработка и

выполнение всех подготовительных мероприятий

Page 54: Ицхак Цал-Крупп, Павел Фесенко - Software testing

Вопросы ???????????

Ученик спросил мастера-программиста: "Когда я могу перестать писать

тесты?"

Мастер ответил: "Когда ты перестаешь писать код"

У: “Когда я перестаю писать код?"

М: "Когда ты становишься менеджером"

У:"Когда я становлюсь менеджером?"

М:"Когда ты перестаешь писать тесты"

Ученик побежал писать тесты.

Если код заслуживает быть написанным, он заслуживает иметь тесты