ptsp презентация

32
1 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта Нижегородский государственный университет им. Н.И. Лобачевского Факультет вычислительной математики и кибернетики Проект ТЭЛМА Процесс тестирования программного продукта Выполнили: Ильичева Н.Н. Шибаева В.И.

Upload: akmoldir

Post on 06-Aug-2015

161 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Ptsp презентация

1 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Нижегородский государственный университет им. Н.И. Лобачевского

Факультет вычислительной математики и кибернетики

Проект ТЭЛМА

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

Выполнили:Ильичева Н.Н.

Шибаева В.И. Смирнова Л.В.

Page 2: Ptsp презентация

2 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Что такое тестирование?• Тестирование — процесс, подтверждающий

правильность программы и демонстрирующий, что ошибок в программе нет

• Тестирование — процесс выполнения программы (или части программы) с намерением (или целью) найти ошибки

Цель тестирования – найти ошибки в программе и тем самым повысить ее надежность, а следовательно, ценность.

Page 3: Ptsp презентация

3 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Философия тестирования

Тестирование программного обеспечения охватывает целый ряд видов деятельности:

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

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

Page 4: Ptsp презентация

4 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Тестирование “черным ящиком”

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

Цель – проверить все возможные комбинации и значения на входе.

Page 5: Ptsp презентация

5 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Тестирование “белым ящиком”Этот метод изучает не только внешнее поведение программы, но и ее внутреннее устройство (исходные тексты). Проектирование тестов основано на изучении логики программы.

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

Цель — проверить каждый путь, каждую ветвь алгоритма.

Page 6: Ptsp презентация

6 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Недостатки методовМетод “черного ящика” имеет следующие недостатки:

– невозможно найти взаимоуничтожающихся ошибок

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

Метод “белого ящика” имеет следующие недостатки:

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

Page 7: Ptsp презентация

7 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Некоторые выводы:– ни один из этих методов не является хорошей стратегией;

– эти методы дополняют друг друга, т.к.находят разные ошибки.

Наиболее эффективные процессы разработки программного обеспечения используют некоторую комбинацию методик "черного ящика" и "белого ящика".

Page 8: Ptsp презентация

8 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Интеграция модулейПоследовательность слияния всех модулей в систему или программу является вторым по важности аспектом тестирования (после проектирования тестов).Выбор этой последовательности является одним из самых жизненно важных решений, принимаемых на этапе тестирования, поскольку он определяет форму, в которой записываются тесты, типы необходимых инструментов тестирования, последовательность программирования модулей, а также тщательность и экономичность всего этапа тестирования.

Page 9: Ptsp презентация

9 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Модульное тестированиеВ тестирование многомодульных программ можно выделить четыре этапа:1) тестирование отдельных модулей;2) совместное тестирование модулей; 3) тестирование спецификации программы;4) тестирование всего комплекса в целом.На первых двух этапах используются методы структурного тестирования, последующие этапы тестирования ориентированы на обнаружение ошибок различного типа, которые не обязательно связаны с логикой программы.Известны два подхода к тестированию модулей:

Монолитное Пошаговое тестирование.

Page 10: Ptsp презентация

10 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

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

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

Page 11: Ptsp презентация

11 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

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

Page 12: Ptsp презентация

12 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

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

Page 13: Ptsp презентация

13 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Достоинства и недостатки нисходящего метода

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

+ быстро могут быть выявлены ошибки, связанные с организацией взаимодействия с пользователем;

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

Page 14: Ptsp презентация

15 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Преимущества и недостатки восходящего метода

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

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

Page 15: Ptsp презентация

16 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Другие методы модульного тестированияИмеется большой выбор возможных методов, которые могут быть использованы для слияния модулей в более крупные единицы. В большинстве своем они могут рассматриваться как варианты описанных ранее двух методов (восходящее и нисходящее тестирование) и следующих четырех основных методов:

Модифицированный нисходящий методМетод большого скачкаМетод СандвичаМодифицированный метод Сандвича

Page 16: Ptsp презентация

17 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Модифицированный нисходящий методПрименяя нисходящее тестирование часто невозможно тестировать определенные логические условия, например ошибочные и исключительные ситуации или защитные проверки. Даже если тестирование таких ситуаций в принципе осуществимо, часто бывает трудно определить, какие именно нужны тесты, если они вводятся в точке программы, удаленной от места проверки соответствующего условия.Модифицированным нисходящим метод, решает эти проблемы: требуется, чтобы каждый модуль прошел автономное тестирование перед подключением к программе. Однако здесь требуются и драйверы, и заглушки для каждого модуля.

Page 17: Ptsp презентация

18 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Метод большого скачкаВ соответствии с этим методом каждый модуль тестируется автономно. По окончании тестирования модулей они интегрируются в систему все сразу.Метод большого скачка по сравнению с другими подходами имеет много недостатков и мало достоинств:– заглушки и драйверы необходимы для каждого модуля; – модули не интегрируются до самого последнего момента;– метод большого скачка значительно усложняет отладку.Если программа мала и хорошо спроектирована, он может оказаться приемлемым. Однако для крупных программ метод большого скачка обычно губителен.

Page 18: Ptsp презентация

19 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

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

Page 19: Ptsp презентация

20 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Модифицированный метод СандвичаВ модифицированном методе Сандвича нижние уровни тестируются строго снизу вверх. А модули верхних уровней сначала тестируются изолированно, а затем собираются нисходящим методом. Таким образом, модифицированный метод Сандвича представляет собой компромисс между восходящим и нисходящим подходами.

Page 20: Ptsp презентация

21 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

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

1. Время до момента сборки модулей

2. Время до момента создания первых работающих “скелетных” версий программы

3. Необходимость драйверов и других инструментов тестирования

4. Необходимость заглушек

5. Мера параллелизма

6. Возможность тестировать отдельные пути

7. Возможность планировать и контролировать последовательность

Page 21: Ptsp презентация

22 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Сравнительная характеристика

Восхо-дящий

Нисхо-дящий

Модиф.Нисх.

больш.скачка

Санд-вича

Модиф.Cандв.

1 Рано Рано Рано Поздно Рано Рано

2 Поздно Рано Рано Поздно Рано Рано

3 Да Нет Да Да Частично Да

4 Нет Да Да Да Частично Частично

5 Средний Слабый Средний Высокий Средний Высокий

6 Легко Трудно Легко Трудно Средне Легко

7 Легко Трудно Трудно Легко Трудно Трудно

Page 22: Ptsp презентация

23 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Оценка подходовОценка подходов зависит от конкретного проекта. Рассмотрим вариант очень грубой оценки. Прежде всего, следует взвесить относительное влияние каждого из семи критериев на надежность программного обеспечения. Ранняя сборка и раннее получение работающего каркаса программы, а также возможность тестировать любые конкретные условия представляются наиболее важными, поэтому им дается коэффициент 3. Сложность подготовки заглушек, а также сложность планирования и управления последовательностью тестов получают вес 2. Необходимость драйверов, вес 1 ввиду доступности общих инструментов тестирования. Критерий, связанный с параллелизмом работы имеет вес 1, потому что он на надежность сильно не влияет.

Page 23: Ptsp презентация

24 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Результаты оценокВес Крит Восх. Нисх. Модиф.

Нисх.Больш.скачка

Методсандвича

Модиф.сандвича

3 1 Рано + Рано + Рано + Поздно - Рано + Рано +

3 2 Поздно - Рано + Рано + Поздно - Рано + Рано +1 3 Да - Нет + Да - Да - Частично Да -2 4 Нет + Да - Да - Да - Частично Частично1 5 Средний Слабый - Средний Высокий

+Средний Высокий

+3 6 Легко + Трудно - Легло + Легко + Средне Легко +2 7 Легко + Трудно - Трудно - Легко + Трудно

-Трудно-

Итог +6 -1 +4 -3 +4 +7

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

Page 24: Ptsp презентация

25 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Регрессионное тестированиеПод регрессионным тестированием понимают те виды тестов, которые проводятся с каждой новой версией программы. Цель проведения этих тестов – убедиться, что новая версия программы не содержит ошибок в уже протестированных участках кода.

По данным зарубежных авторов количество ошибок, возникающих в процессе изменения кода (исправления багов, внедрения новой функциональности и т.п.) колеблется от 50% до 80%. Выявить эти ошибки и помогают тесты регрессии.

Page 25: Ptsp презентация

26 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Виды тестов регрессии

Различают несколько видов регрессионных тестов:

1. Верификационные тесты (Verification Test)

1.1Тесты верификация багов (Bug Verification Test)

1.2 Тесты верификации версии (Build Verification Test; Build Acceptance Test, smoke test, quick check).

2. Собственно Тесты Регрессии (или Regression Test Pass)

3.Тесты регрессии на "закрытых" багах.

Page 26: Ptsp презентация

27 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Тесты верификации баговПредставляют собой тесты проверки исправления багов. Допустим, что тест с номером N выявил баг, что было зафиксировано и передано разработчику для исправления. Через определенное время разработчик предоставил новую версию программы, с информацией о том, что описанный баг исправлен. Необходимо тест с номером N провести повторно, чтобы убедиться, что баг действительно больше не проявляется. В случае успешного прохождения теста такой баг помечается как Verified, в противном случае - как re-do, о чем сообщается разработчику и передается на доработку. Проведение таких тестов является обязательным.

Page 27: Ptsp презентация

28 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Тесты верификации версийПредставляют собой набор тестов для проверки сохранности основной функциональности в каждой новой версии программы. Это краткое тестирование всех основных функций разрабатываемого ПО, цель которого - убедится, что программа «работает нормально» и основная функциональность программы не нарушена. Если хотя бы один из тестов верификации версии выявляет баг, то тестер возвращается к предыдущей (последней «рабочей» версии). Дальнейшей тестирование новой версии не проводится, а информация об ошибке вносится в базу и отправляется разработчику. Т.о. тесты верификации версии представляют собой краткий набор основных тестов функциональности.

Page 28: Ptsp презентация

29 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Собственно Тесты РегрессииПод этим понятием объединяют те тесты, которые уже проводились с предыдущими версиями программы, притом успешно, т.е. не выявили багов и были отмечены как pass (passed). Среди Собственно Тестов Регрессии можно выделить две группы:

– тесты, входящие в набор (т.н. Regression Test Pass with Regression Test Suit). Они вносятся в базу и описываются, для них могут и должны быть созданы скрипты, которые позволяют автоматизировать процесс тестирования

– тесты не входящие в набор (т.н. Regression Test Pass without Regression Test Suit). Они существуют только "в голове" тестировщика и проводятся в ручную. Причин этого может быть много - от малых сроков тестирования, до отсутствия необходимого ПО, для автоматизации процесса.

Page 29: Ptsp презентация

30 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Тесты регрессии на "закрытых" багах. Допустим, что тест № N, выявивший баг, после исправления этого бага разработчиком был проведен повторно, при том успешно. Тест был отмечен как pass, а баг - как Verified. Такой баг и будет "закрытым". Допустим теперь, что в ходе разработки, участок кода, где был исправлен этот баг был изменен, или сменился разработчик, который случайно удалил "нашлепку" в коде исправлявшую этот баг и показавшуюся ему лишней и т.п. В этом случае баг проявится снова. Чтобы не допустить подобного, тестеру время от времени необходимо проводить тесты, выявлявшие ранее баги в измененном участке кода, исправление которых уже было проведено ранее и зафиксировано в базе. Это и есть Тесты регрессии на "закрытых" багах.

Page 30: Ptsp презентация

31 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

Когда и как проводить регрессионное тестированиеВсе определяется видом разрабатываемого ПО, продолжительностью жизненного цикла, сроками тестирования, количеством членов команды.

Далее описаны лишь общие положения:

1. Регрессионное тестирование проводится в каждой новой версии.

2. Начинают регрессионное тестирование с Тестов верификации версии. Если программа приходит от разработчика в виде полноценной инсталляции, то Тесты верификации начинаются с проверки инсталляции, после чего проводится краткий набор тестов функциональности. Если хотя бы один из тестов failed, версия передается на доработку, регрессионное тестирование прекращается, а тестер возвращается к тестированию последней "рабочей" версии.

Page 31: Ptsp презентация

32 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

3. После успешного прохождения тестов верификации версии, проводят серию Тестов верификации багов. 4. Из Собственно тестов регрессии проводят лишь те, которые сопряжены с измененным в новой версии участком кода.5. Аналогичным образом (см. пункт 4) отбираются тесты в группу регрессии на "закрытых" багах. 6. Тесты регрессии, выполненные успешно (pass) дважды считаются "закрытыми". Дальнейшее их использование производится, так как описано в пункте 4.7. Для тестов регрессии, которые предполагается проводить более 3-5 раз рекомендуется писать скрипты для автоматизации процесса. Это относится ко всем группам тестов регрессии.

Когда и как проводить регрессионное тестирование

Page 32: Ptsp презентация

33 проект Тэлма, ННГУ, ВМК, 2004г Процесс тестирования программного продукта

8. Отбор тестов для финального регрессионного тестирования осуществляется по следующим принципам: В первую очередь отбирают тесты забракованные (failed) два и более раз. В том числе и те, которые выявляли баги, требующие доработки (re-do). Во вторую очередь отбираются тесты, забракованные один раз, и успешно пройденные повторно. Далее отбираются все тесты, которые были пройдены успешно (pass), но проводились только один раз. Затем проводятся все остальные тесты, в зависимости от поставленной задачи.

Когда и как проводить регрессионное тестирование