- •Содержание
- •История развития тестирования
- •Важность тестирования
- •Модели жизненного цикла по
- •1. Начало (Inception)
- •2. Проектирование (Elaboration)
- •3. Построение (Construction)
- •4. Внедрение (Transition)
- •Жизненный цикл тестирования
- •Технические навыки и личностные качества тестировщика
- •Основная терминология тестирования
Title: |
|
||
|
|
Saved: 19-Feb-2015 09:40 |
|
|
Конспект и раздаточный материал
|
REVISION HISTORY |
|||||
Ver. |
Description of Change |
Author |
Date |
Approved |
|
Name |
Effective Date |
||||
<1.0> |
Первая версия |
Святослав Куликов |
<7.02.2012> |
|
|
|
|
|
|
|
|
Содержание
1. История развития тестирования 3
2. Важность тестирования 5
3. Модели жизненного цикла ПО 5
4. Жизненный цикл тестирования 16
5. Технические навыки и личностные качества тестировщика 17
6. Основная терминология тестирования 18
История развития тестирования
На протяжении десятилетий истории развития разработки программного обеспечения к вопросам тестирования и обеспечения качества подходили очень и очень по-разному. Можно выделить несколько основных «эпох тестирования».
|
В 60-х годах прошлого века основное внимание уделялось т.н. «исчерпывающему тестированию» – проверке всех возможных путей выполнения кода со всеми возможными входными данными. |
Однако очень скоро было выяснено, что «полное, исчерпывающее тестирование» невозможно, т.к. количество возможных путей и входных данных очень велико, а также при таком подходе сложно найти проблемы в проектной и продуктной документации.
В итоге «исчерпывающее тестирование» было признано невыполнимым.
В первом издании своей книги «Искусство тестирования программного обеспечения» Гленфорд Майерс приводил пример, показывающий невозможность исчерпывающего тестирования. Простая программа, содержащая всего лишь 20 вложенных операторов if – даже такой «кусочек кода на один экран» давал сумасшедшее количество ветвей выполнения программы.
|
В начале 70-х тестирование ПО обозначалось как «процесс, направленный на демонстрацию корректности продукта» или как «деятельность по подтверждению правильности работы ПО».
В зарождавшейся программной инженерии верификация ПО значилась как «доказательство правильности». |
Было решено, что доказательство правильности – неэффективный метод тестирования ПО. Однако в некоторых случаях демонстрация правильной работы используется и в наши дни, например, приёмо-сдаточные испытания.
|
Во второй половине 70-х тестирование представляло собой выполнение программы с целью найти ошибки, а не доказать, что она работает.
Успешный тест – такой, который обнаруживает ранее неизвестные проблемы. |
Данный подход прямо противоположен предыдущему (применяемому в 60-х годах).
Указанные два определения представляют собой «парадокс тестирования», в основе которого лежат два противоположных утверждения:
а) с одной стороны, тестирование позволяет убедиться, что продукт работает хорошо;
б) с другой – выявляет ошибки в ПО, показывая, что продукт не работает.
Вторая цель тестирования является более продуктивной с точки зрения улучшения качества, так как не позволяет игнорировать недостатки ПО.
|
В 80-х годах тестирование ПО расширилось таким понятием, как предупреждение дефектов. Проектирование тестов – наиболее эффективный из известных методов предупреждения ошибок. |
В это же время появились идеи о том, что необходима методология тестирования, что тестирование должно включать проверки на всём протяжении цикла разработки, и это должен быть управляемый процесс.
В ходе тестирования надо проверить не только собранную программу, но и требования, код, архитектуру, сами тесты.
«Традиционное тестирование», существовавшее до начала 80-х, относилось только к скомпилированной, готовой системе (сейчас это обычно называется «системное тестирование»).
С середины 80-х тестировщики стали вовлекаться во все аспекты жизненного цикла разработки. Это позволило раньше находить проблемы в требованиях и архитектуре, за счёт чего удавалось сокращать сроки и бюджет разработки.
Тогда же появились первые инструменты автоматизированного тестирования. Предполагалось, что компьютер сможет выполнить больше тестов, чем человек, и сделает это более надёжно.
|
В 90-х в понятие «тестирование» стали включать планирование, проектирование, создание, поддержку и выполнение тестов и тестовых окружений, и это означало переход от тестирования к обеспечению качества, охватывающего весь цикл разработки ПО.
В это время начинают появляться различные программные инструменты для поддержки процесса тестирования: управления документами, автоматизации жизненного цикла артефактов и т.п.
|
|
В начале нынешнего века развитие тестирования продолжалось в контексте поиска всё новых и новых путей, методологий, техник и подходов к обеспечению качества. В т.ч. было выявлено, что необходимо обеспечивать не только качество продукта, но и качество процесса его разработки. |
