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. грамматические трансформации – дополнения при переводе лексическая трансформаци - объединение лексические трансформация деление В настоящее время существует изобилие техник и методов тестирования, используемых с разными целями на всех этапах жизненного цикла информационных систем. Исходя из знания тестировщиком внутренней структуры тестируемого программного модуля, например, управляющей логики, потока данных (--как происходит обмен данными) и т.д., тестирование может вестись, соответственно, с позиции белого или черного ящика. На сегодняшний день существует множество способов тестирования белого ящика. Знание специфики и сосредоточенность на структуре тестируемой программы, ослабляет проблему “небружелюбности” системы, и сказывается на количестве способов тестирования.