Верификация программного обеспечения. Методы тестирования

Содержание

Слайд 2

Testing Methods Black Box Equivalence Class Testing Boundary Value Testing State

Testing Methods

Black Box
Equivalence Class Testing
Boundary Value Testing
State

Transition Testing
White Box
Code Coverage
Слайд 3

Equivalence classes Если от выполнения двух тестов ожидается один и тот

Equivalence classes

Если от выполнения двух тестов ожидается один и тот

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

Equivalence classes Example Программа должна принимать числа от 1 до 99

Equivalence classes Example

Программа должна принимать числа от 1 до 99

Числа от 1 до 99
Числа меньше 1
Числа больше 99
Слайд 5

Equivalence classes Тесты включают значения одних и тех же входных данных

Equivalence classes

Тесты включают значения одних и тех же входных данных
Для их

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

Equivalence classes search Не забывайте о классах, охватывающих заведомо неверные или

Equivalence classes search

Не забывайте о классах, охватывающих заведомо неверные или недопустимые

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

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

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

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

Equivalence classes search

Слайд 8

Программа должна принимать числа от 1 до 99 Числа от 1

Программа должна принимать числа от 1 до 99
Числа от 1

до 99
Числа меньше 1
Числа больше 99
Нечисловая информация

Equivalence classes Example

Слайд 9

Equivalence classes Table

Equivalence classes Table

Слайд 10

Equivalence classes Plan

Equivalence classes Plan

Слайд 11

Equivalence classes Plan

Equivalence classes Plan

Слайд 12

Equivalence classes Plan

Equivalence classes Plan

Слайд 13

Equivalence classes Для полей или параметров, принимающих фиксированные перечни значений, выясните,

Equivalence classes

Для полей или параметров, принимающих фиксированные перечни значений, выясните,

какие из значений в них входят
Слайд 14

Поищите классы значений, зависящих от времени Equivalence classes

Поищите классы значений, зависящих от времени

Equivalence classes

Слайд 15

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

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

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

Equivalence classes

Слайд 16

Boundary values Необходимо протестировать каждую границу класса эквивалентности, причем с обеих

Boundary values

Необходимо протестировать каждую границу класса эквивалентности, причем с обеих сторон
Программа,

которая пройдет эти тесты, скорее всего, пройдет и все остальные, относящиеся к данному классу.
Слайд 17

Boundary values Examples

Boundary values Examples

Слайд 18

Boundary values Techniques Шаги для тестирования граничных значений Определите классы эквивалентности

Boundary values Techniques

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

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

State Transition Testing Протестируйте все наиболее вероятные последовательности действий пользователей Если

State Transition Testing

Протестируйте все наиболее вероятные последовательности действий пользователей
Если возможно

предположить, что действия пользователя в одном режиме могут воздействовать на представление данных или набор предоставляемых программой возможностей в другом режиме, протестируйте эту зависимость
Кроме проведения самых необходимых тестов, стоит поработать с программой в произвольном режиме, случайным образом выбирая путь ее выполнения
Слайд 20

Practice Определите классы эквивалентности и граничные условия. Возраст – не менее

Practice

Определите классы эквивалентности и граничные условия.
Возраст – не менее 18

Возраст <18

– недопустимый класс
Возраст >=18 – допустимый класс
Некорректные символы – недопустимый класс
Протестируем:
17, 18, 19
1000, abc, $, 0, -1, @, 1$, …
Слайд 21

Tasks Определите классы эквивалентности и граничные условия. 1) Для различных видов

Tasks

Определите классы эквивалентности и граничные условия.
1) Для различных видов данных:
a) Индекс

– 6 цифр
b) Фамилия – 15 символов (буквы или пробелы, дефис)
2) Для всех полей окна MS Office Word File -> Print
Слайд 22

Слайд 23

Слайд 24

Тестирование состояний переходов - тестирование методом черного ящика, в котором сценарии

Тестирование состояний переходов - тестирование методом черного ящика, в котором сценарии

тестирования строятся на основе выполнения корректных и некорректных переходов состояний.

State Transition Testing

Слайд 25

Диаграмма переходов состояний на примере банкомата State Transition Testing

Диаграмма переходов состояний на примере банкомата

State Transition Testing

Слайд 26

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

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

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

State Transition Testing

Слайд 27

Покрытие – уровень, выражаемый в процентах, на который определенный элемент покрытия

Покрытие – уровень, выражаемый в процентах, на который определенный элемент покрытия

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

White box design techniques

Test coverage

Слайд 28

Подходы к оценке и измерению тестового покрытия Покрытие требований (Requirements Coverage)

Подходы к оценке и измерению тестового покрытия

Покрытие требований (Requirements Coverage)

– оценка покрытия тестами функциональных и нефункциональных требований к продукту путем построения матриц трассировки (traceability matrix).
Покрытие кода (Code Coverage) – оценка покрытия исполняемого кода тестами путем отслеживания непроверенных в процессе тестирования частей программного обеспечения.
Тестовое покрытие на базе анализа потока управления – оценка покрытия, основанная на определении путей выполнения кода программного модуля и создания выполняемых тест кейсов для покрытия этих путей.
Слайд 29

Различия и ограничения подходов Различия: Метод покрытия требований сосредоточен на проверке

Различия и ограничения подходов

Различия: Метод покрытия требований сосредоточен на проверке соответствия набора

проводимых тестов требованиям к продукту. Анализ покрытия кода - на полноте проверки тестами, разработанной части продукта (исходного кода). Анализ потока управления - на прохождении путей в графе или модели выполнения тестируемых функций (Control Flow Graph).
Ограничения: Метод оценки покрытия кода не выявит нереализованные требования, так как работает не с конечным продуктом, а с существующим исходным кодом. Метод покрытия требований может оставить непроверенными некоторые участки кода, потому что не учитывает конечную реализацию.
Слайд 30

Requirements Coverage Tcov = (Lcov/Ltotal) * 100% Tcov - тестовое покрытие

Requirements Coverage


Tcov = (Lcov/Ltotal) * 100%
Tcov - тестовое покрытие Lcov -

количество требований, проверяемых тест кейсами Ltotal - общее количество требований
Слайд 31

Code Coverage Tcov = (Ltc/Lcode) * 100% Tcov - тестовое покрытие

Code Coverage


Tcov = (Ltc/Lcode) * 100%
Tcov - тестовое покрытие Ltc

- кол-во строк кода, покрытых тестами Lcode - общее кол-во строк кода.
Слайд 32

Control Flow Testing Тестирование потоков управления (Control Flow Testing) - это

Control Flow Testing

Тестирование потоков управления (Control Flow Testing) - это

одна из техник тестирования белого ящика, основанная на определении путей выполнения кода программного модуля и создания выполняемых тест кейсов для покрытия этих путей.
Слайд 33

Фундаментом для тестирования потоков управления является построение графов потоков управления (Control

Фундаментом для тестирования потоков управления является построение графов потоков управления (Control

Flow Graph), основными блоками которых являются:
блок процесса - одна точка входа и одна точка выхода
точка альтернативы - одна точка входа, две и более точки выхода
точка соединения - две и более точек входа, одна точка выхода

Control Flow Testing

Слайд 34

Уровни тестового покрытия

Уровни тестового покрытия

Слайд 35

Уровни тестового покрытия

Уровни тестового покрытия

Слайд 36

Слайд 37

White box design techniques Structure-based techniques serve two purposes: test coverage

White box design techniques

Structure-based techniques serve two purposes: test coverage

measurement and structural test case design.
They are then used to design additional tests with the aim of increasing the test coverage.
They can help ensure more breadth of testing, in the sense that test cases that achieve 100% coverage in any measure will be exercising all parts of the software from the point of view of the items being covered.
Слайд 38

Code Coverage Test coverage measures in some specific way the amount

Code Coverage

Test coverage measures in some specific way the amount

of testing performed by a set of tests.
The basic coverage measure is
Number of coverage items exercised
Coverage = --------------------------------------------------- x 100%
Total number of coverage items
where the 'coverage item' is whatever we have been able to count and see whether a test has exercised or used this item.

White box design techniques

Слайд 39

There is danger in using a coverage measure. 100% coverage does

There is danger in using a coverage measure. 100% coverage

does not mean 100% tested!
Coverage techniques measure only one dimension of a multi-dimensional concept.
Two different test cases may achieve exactly the same coverage but the input data of one may find an error that the input data of the other doesn't.

White box design techniques

Слайд 40

Statement coverage Branch coverage Decision coverage White box design techniques

Statement coverage
Branch coverage
Decision coverage

White box design techniques

Слайд 41

Statement coverage Statement coverage = Number of statements exercised = -------------------------------------------

Statement coverage


Statement coverage =
Number of statements exercised
= -------------------------------------------

x 100%
Total number of statements

White box design techniques

Слайд 42

Studies and experience in the industry have indicated that what is

Studies and experience in the industry have indicated that what

is considered reasonably through black-box testing may actually achieve only 60% to 75% statement coverage.
Typical ad hoc testing is likely to be around 30% - this leaves 70% of the statements untested.

White box design techniques

Слайд 43

READ A READ B IF A>B THEN C = 0 ENDIF

READ A
READ B
IF A>B
THEN C = 0
ENDIF

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

чтобы получить 100% statement coverage?

1 тест. Например A=10, B=5

White box design techniques

Слайд 44

Branch coverage A decision is an IF statement, a loop control

Branch coverage

A decision is an IF statement, a loop control statement

(e.g. DO-WHILE or REPEAT-UNTIL), or a CASE statement, where there are two or more possible exits or outcomes from the statement.

White box design techniques

Слайд 45

Decision coverage = Number of decision outcomes exercised = ------------------------------------------------------- x100%

Decision coverage =
Number of decision outcomes exercised
= ------------------------------------------------------- x100%
Total

number of decision outcomes

White box design techniques

Decision coverage

Слайд 46

Functional testing may achieve only 40% to 60% branch coverage. Typical

Functional testing may achieve only 40% to 60% branch coverage.

Typical ad hoc testing may cover only 20% of the decisions, leaving 80% of the possible outcomes untested.

White box design techniques

Слайд 47

Decision coverage is stronger than statement coverage. 100% decision coverage always

Decision coverage is stronger than statement coverage.
100% decision

coverage always guarantees 100% statement coverage.

White box design techniques