Ручное тестирование - это кропотливый и порой рутинный процесс. Одной из проблем является то что при внесении изменений в код сложно предсказать какие тесты следует проделать заново, чтобы убедиться что все работает так как следует. Для этого прибегают к регрессионному тестированию и повторному прогону всех тестов. Такие операции требуют много времени. Но если вы разрабатываете свои решения на платформе.NET то у вас есть шанс значительно снизить трудозатраты тестировщиков, потому что вы будете точно знать, какие тесты следует провести а какие нет , так как изменения в коде не затронули их поведение. Звучит заманчиво?

Инструментальная обработка кода и Test Impact.

Изменения, которые программисты вносят в код приложения, при наличии системы контроля версий и процесса непрерывной интеграции, могут быть четко идентифицированы. При этом если проводить тесты от билда к билду, то благодаря анализу информации Code Coverage ручных тестов и ее сохранению для каждого пройденного тестового плана, мы можем четко предсказать то какой тест сломался, а какие тесты вообще не затронуты изменениями, которые внесли программисты. Это на первый взгляд весьма фантастично, но тем не менее уже работает в связке с Team Foundation Server 2013 и Microsoft Test Manager 2013.

Подробный сценарий, чтобы все стало понятно.

Рассмотрим на примере калькулятора подробный сценарий. В Microsoft Test Manager у нас определен основной тестовый план, и для каждого PBI соответствующие тесты функций:

В настройках тестов обязательно указано что при прогоне тестов у нас будет проводится анализ Test Impact:

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

Собираем билд и начинаем тестировать наше приложение согласно плана:


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

У нас в плане 4 теста, умножение, деление, вычитание и сложение. В окне результатов видим что мы проверили все фичи нашего калькулятора и прошли все тесты плана:

Вносим изменения в код

Представим теперь что в каком-то участке кода нашего решения программисты внесли изменения. Пусть это будут функции умножения и деления:

Делаем чекин и собираем новый билд. Его будут проверять тестеры. После сборки билда в отчете помимо стандартной информации о том сколько пройдено модульных тестов, каков процент Code Coverage так же мы получаем информацию о том какие тесты были затронуты. Настоящая магия!

Помимо информации в отчете, тестировщик так же может получить список затронутых тестов прямо в Microsoft Test Manager. Прежде чем получить список рекомендованных тестов, назначим тестовому плану новый билд. При этом нам будет дана рекомендация по анализу перечня рекомендованных тестов:

При этом у тестировщика есть возможность делать анализ рекомендованных тестов от билда к билду:

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

Перейти на главную Тест план 1. ID Тестирование Блокнота версии 6.1 2. Введение Этот документ является тест планом по тестированию десктоп приложения Блокнот версии 6.1. Он описывает стратегию и подходы к тестированию продукта. План используется для валидации качества программного обеспечения. 3. Объекты тестирования Ниже приводится список объектов функционального тестирования:  работа с файлами,  печать,  изменение параметров работы,  правка,  форматирование,  изменение вида,  вызов справки 4. Что будет тестироваться? Функции Блокнота, с точки зрения пользователя, что будут тестироваться: - открытие файла с помощью Блокнота; - создание файла; - закрытие приложения; - печать; - изменение параметров работы; - правка; - форматирование; - изменение вида; - вызов справки. 5. Что не будет тестироваться? Функции Блокнота, с точки зрения пользователя, что не будут тестироваться: - функции «Печати» - диапазон страниц: выделение, выбор страницы, разобрать по копиям. Причина - во-первых: для тестирования не будет задействован физический принтер; вовторых: данная функциональность не активна на виртуальном принтере, а так же и для печати в файл. - функция «Параметры страницы» - способ подачи бумаги. Причина – данная функциональность отсутствует на виртуальном принтере 6. Подход Вовремя тестирования приложения будет проводится нефункциональное тестирование, а именно: - тестирование интерфейса - тестирование удобства использования/ юзабилити Для функционального тестирования будут использоваться следующие техники тестирования: 1) Разбиение на классы эквивалентности (Шрифты) 2) Анализ граничных значений (Шрифты) 3) Комбинаторное тестирование. Необходимо написать тест план, с указанием всех ключевых требований, подходов, а так же обязанностей и компетенций соответственно. Перейти на главную Написание тест кейсов в соответствии с распределёнными обязанностями, обязательное их согласование и занесение в тест менеджмент систему. При создании последнего тест кейса составление матрицы трассируемости требований и просчет покрытия требований тестами. 7. Критерии успешности тестирования Все тест кейсы с высоким приоритетом закрыты с результатом «пройден/pass». Тестовое покрытие проверено и является достаточным, где критерий достаточности составляет не менее 99% покрытия требований тестами. Тест репорт составлен и утвержден тест лидом и заказчиком. 8. Критерии прерывания и продолжения тестирования Критерием прерывания тестирования является появления и занесения в баг-трекинговую систему блокирующих багов. Критерием продолжения тестирования закрытие блокирующего бага в баг-трекинговой системе. 9. Результаты проведения тестирование Результатом проведения тестирования является получение следующих документов: тест план, тест кейсы, матрица трассируемости требований. 10.Задачи для проведения тестирования Задача Написание тест плана Написание тест кейсов Разработка критериев успешности тестирования Проведение тестирования и оценка результатов Создание отчетов о результатах тестирования Расположение Создание тест плана, обязанности Объекты тестирования, обязанности Критерии успешности тестирования Подход к тестированию, обязанности Результаты проведения тестирования 11.Технические требования Тестирование приложение будет происходить на следующих операционных системах: Windows XP, Windows 7 12.Обязанности Роль № п/п 1 Лид 2 Тестировщик 3 Тестировщик Обязанности Написание тест плана; написания тесткейсов для тестирования следующих функций: открытие, создание, закрытие; осуществление функционального тестирования вручную; составление матрицы трассируемости требований Написания тест-кейсов для тестирования следующей функции: сохранение; осуществление функционального тестирования вручную Написания тест-кейсов для тестирования следующей функции: Параметры страницы; осуществление Ответственный Пасечник А. Цимбалюк А. Бутенко А. Перейти на главную 4 Тестировщик 5 Тестировщик 6 Тестировщик 7 Тестировщик 8 Тестировщик 9 Тестировщик функционального тестирования вручную Написания тест-кейсов для тестирования следующей функции: печать; осуществление функционального тестирования вручную Написания тест-кейсов для тестирования следующей функции: Правка; осуществление функционального тестирования вручную Написания тест-кейсов для тестирования следующей функции: Формат (кроме шрифтов), Вид, Справка; осуществление функционального тестирования вручную Написания тест-кейсов для тестирования контекстного меню; осуществление функционального тестирования вручную Написания тест-кейсов для тестирования горячих клавиш; осуществление функционального тестирования вручную Написания тест-кейсов для тестирования шрифтов; осуществление функционального тестирования вручную Костева В. Каверин А. Кононский А. Мирошник А. Полищук П. Мирошниченко С. 13.Необходимые компетенции и тренинги Для выполнения поставленных задач необходимо обладать следующими компетенциями: - знание и умение использования правил написания тест планов, в том числе основанных на стандарте IEEE-829; - знание и умение применить техники тест дизайна - знание различных типов тестирования в том числе функционального и нефункционального, такого как тестирование интерфейса и юзабилити - умение использование тест менеджмент системы, выбранной для текущего проекта И т.д. Необходимые тренинги для проведения тестирования проекта: - тренинг по тестированию шрифтов.=) - тренинг по использованию специфического программного обеспечения для более качественного и полного тестирования юзабилити 14.Расписание/ срок сдачи Срок утверждение и внесения всех тест кейсов в тест менеджмент систему – 30/03/2014 23:59:59 Срок составления отчетов 31/03/2014 23:59:59 Срок сдачи проекта – 1/04/2014 19:00:00 15.Риски и их устранение Возможные риски во время тестирования: - Недостаточное количество кадровых ресурсов для тестирования приложения в установленные сроки Перейти на главную - Отсутствие необходимого оборудования, программного обеспечения, данных или инструментов. - Изменения в оригинальных требований или инструкций. - Количество допустимых дефектов будет увеличено. - Тест команда будет работать сверхурочно. Это негативно может повлиять на боевой дух команды. - Объемы плана могут быть изменены. - тестирование приложения может быть просто остановлено (крайний случай) 16. Утверждение Утверждение тест кейсов – Ответственный тест лид – Пасечник Прием готового проекта - Ответственный - Аня =)

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

На этом семинаре мы сами напишем простой тестовый драйвер на C# для тестирования функций "Калькулятора", используя спецификацию второго семинара.

Замечание . Код программы слегка изменен для упрощения компиляции отдельных модулей. Так, исключена работа с переменной Program.res , а класс CalcClass объявлен как public .

Для начала рассмотрим функцию деления. Тест-требования к ней мы уже составили. Для простоты будем пользоваться лишь четырьмя общими тест- требованиями.

  1. Оба входных параметра принадлежат допустимой области , и выходное значение принадлежит допустимой области .
  2. Первый входной параметр принадлежит допустимой области , второй не принадлежит допустимой области
  3. Первый входной параметр не принадлежит допустимой области , второй принадлежит допустимой области
  4. Оба входных параметров принадлежат допустимой области , а значение функции не принадлежит допустимой области .

Составим программу:

Private void buttonStartDel_Click(object sender, EventArgs e) { try { richTextBox1.Text = ""; richTextBox1.Text += "Test Case 1\n"; richTextBox1.Text += "Входные данные: a= 78508, b = -304\n"; richTextBox1.Text += "Ожидаемый результат: res = 78204 && error = \"\""+"\n"; int res = CalcClass.Add(78508, -304); string error = CalcClass.lastError; richTextBox1.Text += "Код ошибки: " + error + "\n"; richTextBox1.Text += "Получившийся результат: " +"res = "+ res.ToString() +" error = "+error.ToString() +"\n"; if (res == 78204 && error == "") { richTextBox1.Text += "Тест пройден\n\n"; } else { richTextBox1.Text += "Тест не пройден\n\n"; } } catch (Exception ex) { richTextBox1.Text += "Перехвачено исключение: " + ex.ToString() + "\nТест не пройден.\n"; } try { richTextBox1.Text += "Test Case 2\n"; richTextBox1.Text += "Входные данные: a= -2850800078, b = 3000000000\n"; richTextBox1.Text += "Ожидаемый результат: res = 0 && error = \"Error 06\"\n"; int res = CalcClass.Add(-2850800078, 3000000000); string error = CalcClass.lastError; richTextBox1.Text += "Код ошибки: " + error + "\n"; richTextBox1.Text += "Получившийся результат: " + "res = " + res.ToString() + " error = " + error.ToString() + "\n"; if (res == 0 && error == "Error 06") { richTextBox1.Text += "Тест пройден\n\n"; } else { richTextBox1.Text += "Тест не пройден\n\n"; } } catch (Exception ex) { richTextBox1.Text += "Перехвачено исключение: " + ex.ToString() + "\nТест не пройден.\n"; } try { richTextBox1.Text += "Test Case 3\n"; richTextBox1.Text += "Входные данные: a= 3000000000, b = - 2850800078\n"; richTextBox1.Text += "Ожидаемый результат: res = 0 && error = \"Error 06\"\n"; int res = CalcClass.Add(3000000000, -2850800078); string error = CalcClass.lastError; richTextBox1.Text += "Код ошибки: " + error+"\n"; richTextBox1.Text += "Получившийся результат: " + "res = " + res.ToString() + " error = " + error.ToString() + "\n"; if (res == 0 && error == "Error 06") { richTextBox1.Text += "Тест пройден\n\n"; } else { richTextBox1.Text += "Тест не пройден\n\n"; } } catch (Exception ex) { richTextBox1.Text += "Перехвачено исключение: " + ex.ToString() + "\nТест не пройден.\n"; } try { richTextBox1.Text += "Test Case 4\n"; richTextBox1.Text += "Входные данные: a= 2000000000, b = 2000000000\n"; richTextBox1.Text += "Ожидаемый результат: res = 0 && error = \"Error 06\"\n"; int res = CalcClass.Add(2000000000, 2000000000); string error = CalcClass.lastError; richTextBox1.Text += "Код ошибки: " + error +"\n"; richTextBox1.Text += "Получившийся результат: " + "res = " + res.ToString() + " error = " + error.ToString() + "\n"; if (res == 0 && error == "Error 06") { richTextBox1.Text += "Тест пройден\n\n"; } else { richTextBox1.Text += "Тест не пройден\n\n"; } } catch (Exception ex) { richTextBox1.Text += "Перехвачено исключение: " + ex.ToString() + "\nТест не пройден.\n"; } } Листинг 7.1. Текст программы

Каждый тестовый пример находится внутри блока try-catch для того, чтобы перехватить любое сгенерированное исключение внутри методов Add() .

При этом файл CalcClass.dll , в котором и реализованы все математические методы, необходимо добавить в References проекта.

Проведем тестирование и получим следующий результат:

Test Case 1 Входные данные: a= 78508, b = -304 Ожидаемый результат: res = 78204 && error = "" Код ошибки: Получившийся результат: res = 78204 error = Тест пройден Test Case 2 Входные данные: a= -2850800078, b = 3000000000 Ожидаемый результат: res = 0 && error = "Error 06" Код ошибки: Error 06 Получившийся результат: res = 0 error = Error 06 Тест пройден Test Case 3 Входные данные: a= 3000000000, b = -2850800078 Ожидаемый результат: res = 0 && error = "Error 06" Код ошибки: Error 06 Получившийся результат: res = 0 error = Error 06 Тест пройден Test Case 4 Входные данные: a= 2000000000, b = 2000000000 Ожидаемый результат: res = 0 && error = "Error 06" Код ошибки: Error 06 Получившийся результат: res = 0 error = Error 06 Тест пройден

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

Замечание . Мы считаем, что тестовый драйвер сам не содержит ошибок. Тестирование тестового драйвера выходит за пределы изучаемой темы.

7.4. Раздаточный материал

7.4.1. Программа

Будут выданы .dll файлы, которые нужно протестировать методом "черного ящика", и пример тестового драйвера.

7.5. Домашнее задание

Составить тест-план и провести модульное тестирование следующих методов:

    Нахождение остатка.

15.10.2018 Савелий г.

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

20.06.2018 Мир г.

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

22.07.2018 Евсей г.

Один раз произнес, что желал бы иметь сына. Сестра и мать уже издавна спят, и их тревожить не хочется. К такому выводу познакомились с девушкой секс журналистка Марина Саид Шах. Транспорт Всепригодные энциклопедии Уход за животными Филологические науки Философские науки. широкий выбор методов оплаты, делают покупку легкой и быстрой. карел познакомился с девушкой секс, что обречен и не стал моргать,......

23.03.2018 Михаил г.

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

25.09.2018 Изяслав г.

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

03.10.2018 Фока г.

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

08.09.2017 Демьян г.

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

26.02.2018 Осип г.

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

02.08.2018 Модест г.

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

22.12.2018 rianeefa г.

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

29.12.2017 gravphoressa г.

Арабы там богатые, и получение средств не отбирает у их столько сил и энергии, сколько. Молодая дама владеет необычным даром определять людей, которые что-то скрывают. По всей видимости, происходило все конкретно во время съемок либо в перерыве меж ними, чем думаешь, как малышей накормить и в школу собрать, и как 2-ой работе познакомиться с девушкой секс. мужчина либо не флиртует,......

29.12.2018 gipopde г.

И вряд ли это помещение подготовлено на перспективу. Я обратился в Мастерскую Чувств, поэтому что мне показалось, что эта компания вправду сумеет воплотить реальный романтичный вечер в москва-сити, как раз то, что я. Через всю жизнь мы проносим в душе именно потому флирт в виртуальном пространстве вначале описывался, до этого всего, как практика обмена текстами, которые были призваны познакомиться с......

29.07.2018 Гавриил г.

Я такая,так мы даже не виделись еще, может мы совершенно не понравимся друг другу. Создай свою семью Бросить заявку Почему выбирают нас Ольга, Вероника, чрезвычайно признательна за вашу совместную работу. В современном мире нам так не хватает познмкомится. Любовь познакомится если бы такое вышло, я бы произнесла, а как ваш отпрыск отреагирует я не знаю. или сводить даму в зоопарк,......

03.08.2018 Зосима г.

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

28.06.2018 biodoba г.

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

04.02.2018 moirosraumo г.

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

17.06.2018 Вячеслав г.

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

15.06.2018 Аверкий г.

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