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

advertisement
Software
Testing
Тестирование
программного
обеспечения
Carnegie Melon University
18-849b Dependable Embedded
Systems
Spring 1999
Authors: Jiantao Pan
Abstract: Краткое изложение:
Software testing is any activity aimed at evaluating an
attribute or capability of a program or system and
determining that it meets its r
The difficulty in software testing stems from the complexity of
software: we can not completely test a program with
moderate complexity.
The purpose of testing can be quality assurance,
verification and validation, or reliability estimation.
Taxonomy Классификация
By purpose
• correctness testing, performance testing, reliability testing
and security testing
• requirements phase testing, design phase testing, program
phase testing, evaluating test results, installation phase
By life-cycle
testing, acceptance testing and maintenance testing
phase
By scope
• unit testing, component testing, integration testing, and
system testing
Correctness testing. Тестирование
правильности программы




Correctness is the minimum requirement of software, the
essential purpose of testing.
Correctness testing will need some type of oracle, to tell the
right behavior from the wrong one.
The tester may or may not know the inside details of the
software module under test, e.g. control flow, data flow, etc.
Therefore, either a white-box point of view or black-box point of
view can be taken in testing software.
Black-box testing. Тестирование методом
черного ящика




The black-box approach is a testing method in which test data are
derived from the specified functional requirements without regard to
the final program structure.
It is also termed data-driven, input/output driven, or requirementsbased testing.
The tester treats the software under test as a black box -- only the
inputs, outputs and specification are visible, and the functionality is
determined by observing the outputs to corresponding inputs.
In testing, various inputs are exercised and the outputs are compared
against specification to validate the correctness.
Black-box testing White-box testing
Тестирование методом белого ящика




Contrary to black-box testing, software is viewed as a whitebox, or glass-box in white-box testing, as the structure and flow
of the software under test are visible to the tester.
Testing plans are made according to the details of the software
implementation, such as programming language, logic, and
styles.
Test cases are derived from the program structure.
White-box testing is also called glass-box testing, logic-driven
testing or design-based testing.
Glossary. Глоссарий терминов
fault
defect
недостаток, недочёт
дефект – изъян в компоненте или системе, который может привести компонент
или систему к невозможности выполнить требуемую функцию, например
неверный оператор или определение данных.
4.
failure
error
сбой
ошибка- действие человека, которое приводит к неправильному результату
5.
software testing
тестирование программного обеспечения - проектирование, отладка и
выполнение тестов
6.
complete testing
debugging
полное тестирование
отладка – процесс поиска, анализа, и устранения причина отказов в программном
обеспечении
9.
quality assurance
verification
гарантия (обеспечение) качества
верификация – доказанное объективными результатами исследования
подтверждение того, что определённые требования были выполнены
10.
validation
валидация - доказанное объективными результатами исследования
подтверждение того, что программа удовлетворяет потребностям и ожиданиям
пользователей
11.
reliability
надёжность – способность программного продукта функционировать при
заданных условиях на протяжении определённого периода времени, или для
определённого количества операций
12.
metric
метрика – шкала измерений и метод, используемый для измерений; мера
количественной оценки качества ПО по заданному критерию, система или способ
измерений качества программного обеспечения
1.
2.
3.
7.
8.
13.
сorrectness testing
тестирование правильности (корректности) работы программы
14.
reliability testing
тестирование надёжности - процесс тестирования, исследующий
надёжность программного продукта
Ключевые понятия.
Таксономия (классификация)
15.
16.
life cycle phases
performance testing
фазы жизненного цикла
тестирование производительности – процесс тестирования с целью
определить производительность программного продукта
17.
security testing
18.
requirements phase testing
тестирование защищенности – тестирование с целью оценить
защищенность программного продукта
тестирование на этапе составления требований (= тестирование на
основе требований) – подход к тестированию, при котором тестовые
сценарии разрабатываются на основе целей и условий тестирования,
вытекающих из требований
19.
design phase testing
тестирование на этапе проектирования (= тестирование на основе
архитектуры) – подход к тестированию, в котором тестовые сценарии
разрабатываются на основе архитектуры и/или подробного проекта
компонента или системы
20.
21.
22.
program phase testing
evaluating test results
installation phase testing
тестирование на этапе программирования
тестирование на этапе оценки результатов
тестирование на установочном этапе (инсталляционное тестирование)
23.
acceptance testing
приёмочное тестирование – формальное тестирование по отношению к
потребностям, требованиям и бизнес процессам пользователя,
проводимое с целью определения соответствия системы критериям
приёмки
24.
maintenance testing
тестирование в период сопровождения – тестирование изменений в
действующей системе или влияния изменений в окружении на
действующую систему
25.
Correctness testing
black-box
26.
white-box
белый ящик
27.
oracle
оракул - любое средство (уже имеющаяся система, программный код, профессиональные
знания специалиста, руководство пользователя), используемое для предсказания итога теста
28.
control flow
управляющая логика программы
29.
data flow
поток данных - общий термин, относящийся к алгоритмам или архитектурам параллельных
вычислений, в которых выполнение каждой операции производится при готовности всех её
операндов, при этом последовательность выполнения команд заранее не задаётся
черный ящик - это система, в которой внешнему наблюдателю доступны лишь входные и
выходные величины, а структура и внутренние процессы неизвестны
Black-box testing
30.
tester
тестировщик
31.
test approach
подход к тестированию – реализация стратегии тестированиядля определённого проекта
32.
test data
тестовые данные – данные, которые существуют, например в базе данных на начало
выполнения теста и влияют на работу, или же испытывают влияние со стороны тестируемой
системы или компонента
33.
specified functional requirements
заданные функциональные требования
34.
data-driven testing
тестирование на основе данных - методика написания автоматизированных тестовых
сценариев, при которой входные тестовые данные и ожидаемые результаты хранятся в
таблицах таким образом, что отдельный сценарий может выполнить все тесты в таблице
35.
input/output driven testing
тестирование входных/выходных данных
36.
input
вход – переменная (хранимая внутри или вне компонента), считываемая
компонентом
37.
output
выходные данные – переменная (хранимая внутри компонента или вне
его), выданная компонентом
38.
requirements-based testing
тестирование на основе требований = тестирование на этапе
составления требований – подход к тестированию, при котором
тестовые сценарии разрабатываются на основе целей и условий
тестирования, вытекающих из требований
39.
functional testing
функциональное тестирование – тестирование, основанное на анализе
спецификации функциональности компонента или системы
40.
domain
домен - набор, из которого могут быть выбраны корректные входные или
выходные данные
41.
input domain
область входных значений – набор, из которого могут быть выбраны
верные значения
42.
output domain
область выходных данных - множество, из которого могут быть выбраны
допустимые выходные значения
43.
test case
тестовый сценарий – набор входных значений, предусловий выполнения,
ожидаемых результатов и постусловий выполнения, разработанный для
определенной цели или тестового условия, таких как выполнение
определённого пути программы или же проверки соответствия
определённому требованию
44.
specification
спецификация – документ, описывающий требования, дизайн, поведение
или иные характеристики компонента или системы
coverage
покрытие – уровень, выражаемый в процентах, на который определённый элемент покрытия
был проверен набором тестов
code coverage
покрытие кода – метод анализа, определяющий, какие части программного обеспечения
были проверены (покрыты) набором тестов, а какие нет, например, покрытие операторов,
покрытие альтернатив или покрытие условий
cover the input space
покрывать (тестами) входное пространство
exhaustively test, exhaustively testing
исчерпывающее тестирование – методика тестирования, в которой набор тестов включает в
себя все комбинации входных данных и предусловий
input space
пространство входов = входное пространство – все входные значения
output space
пространство выходов = выходное пространство – все выходные значения
valid inputs
валидные входные значения – корректные значения, допустимые, приемлемые, правильные
invalid inputs
невалидные входные значения – некорректные значения, недействительные входные данные
resource variables
ресурсные переменные
сombinatorial explosion
комбинаторный взрыв — термин, используемый для описания эффекта резкого («взрывного»)
роста временной сложности алгоритма при увеличении размера входных данных задачи
formal or restricted language
формальный или регламентированный язык
bug
баг (анг. bug - жук)– жаргонное слово, обычно обозначающее ошибку в программе или
системе, которая выдает неожиданный или неправильный результат
domain testing
domain-тестирование – тестирование на наборах данных
incorrect domain definitions
некорректное определение набора данных
equivalent class
эквивалентный класс
boundary values
граничные значения
boundary value analysis
анализ граничных значений
White-box testing
white-box or glass-box
белый или стеклянный ящик
testing plan
план тестирования (= test plan)
software implementation
реализация ПО
programming language
язык программирования
logic-driven testing
тестирование, основанное на логике (программы)
design-based testing
тестирование на основе архитектуры
statement coverage
покрытие операторов – процентное отношение операторов,
исполняемых набором тестов, к их общему количеству
branch coverage
покрытие ветвей – процент ветвей, которые были выполнены набором
тестов
multiple condition coverage
покрытие множественных условий - процент комбинаций всех исходов
одиночных условий в рамках одного оператора, который был проверен
набором тестов
condition predicates
precondition
условные утверждения - предикаты; предусловие – условия окружения и
состояния, которые должны быть выполнены перед началом выполнения
определенного теста или процедуры тестирования
сontrol-flow testing
тестирование потока управления (последовательности событий (путей) в
процессе выполнения компонента или системы)
loop testing
циклическое тестирование - Loop testing is bassically a type of White box
testing technique that exercises program loops. Loop testing is the testing of a
resource or resources multiple times under program control. – тестирование
ресурсов или .... под программным контролем
data-flow testing
тестирование потока данных – разработка тестов методом белого
ящика, в котором тестовые сценарии проектируются для проверки пары
“определение-использование” для переменных
directed graph
направленный граф = ориентированный граф = орграф
Трансформации, используемые при переводе:
лексические трансформации, синтаксические трансформации
Software testing is any
activity aimed at
evaluating an attribute or
capability of a program or
system and determining
that it meets its required
results.
The difficulty in software
testing stems from the
complexity of software:
we can not completely
test a program with
moderate complexity.
Testing is more than just
debugging.
стилистическая
трансформация
лексическая
трансформация перестановка
лексические
трансформации конкретизация
Тестирование программного обеспечения
- это любая деятельность, направленная на
оценку какого-либо свойства или
характеристики программы с точки зрения
соответствия требуемым результатам
Такая проблема тестирования, как
невозможность полной проверки
работы даже обычной
среднестатистической программы
среднего уровня, напрямую связана
со сложностью программного
обеспечения
Тестирование представляет собой нечто
большее, чем просто поиск и
исправление ошибок.
There is a
plethora of
testing methods
and testing
techniques,
serving multiple
purposes in
different life
cycle phases.
The tester may or may
not know the inside
details of the software
module under test, e.g.
control flow, data flow,
etc. Therefore, either a
white-box point of view
or black-box point of
view can be taken in
testing software.
There are many
techniques available in
white-box testing,
because the problem
of intractability is
eased by specific
knowledge and
attention on the
structure of the
software under test.
грамматические
трансформации –
дополнения при
переводе
лексическая
трансформаци
- объединение
лексические
трансформация деление
В настоящее время существует
изобилие техник и методов
тестирования, используемых с
разными целями на всех этапах
жизненного цикла
информационных систем.
Исходя из знания
тестировщиком внутренней
структуры тестируемого
программного модуля,
например, управляющей
логики, потока данных (--как
происходит обмен данными)
и т.д., тестирование может
вестись, соответственно, с
позиции белого или черного
ящика.
На сегодняшний день существует
множество способов тестирования
белого ящика. Знание специфики и
сосредоточенность на структуре
тестируемой программы, ослабляет
проблему “небружелюбности”
системы, и сказывается на
количестве способов тестирования.
Download