Содержание
- 2. 3 Определение Разработка через тестирование (англ. test-driven development) — техника программирования, при которой модульные тесты для
- 3. 4 Цикл разработки (кратко) Красный — напишите небольшой тест, который не работает, а возможно, даже не
- 4. 5 Цикл разработки (схема)
- 5. Цикл разработки 1. 2. 3. 4. Из репозитория извлекается программная система, находящаяся в согласованном состоянии, когда
- 6. Цикл разработки (продолжение) 5. 6. 7. 8. Весь набор тестов выполняется успешно. Теперь, когда требуемая в
- 7. Что дает TDD? Актуальное описание намерений, дизайна и использования системы Легкое обнаружение слабых мест в дизайне
- 8. 8 Пример 1. Числа Фибоначчи Последовательность Фибоначчи определяется следующим соотношением: F(n) = F(n – 1) +
- 9. 9 } Пример 1. (продолжение) Первый тест [Test] public void TestFirstFibonacciNumber() { Assert.AreEqual(0, MathUtils.Fibonacci(0)); } Реализация
- 10. 10 Пример 1. (продолжение)
- 11. 11 Пример 1. (продолжение) public void TestSecondFibonacciNumber() { Assert.AreEqual(1, MathUtils.Fibonacci(1)); } Проверяем второй член последовательности
- 12. 12 Пример 1. (продолжение)
- 13. 13 Пример 1. (продолжение) public static uint Fibonacci(uint n) { if (n == 0) return 0;
- 14. 14 Пример 1. (продолжение)
- 15. 15 Пример 1. (продолжение) public void TestThirdFibonacciNumber() { Assert.AreEqual(1, MathUtils.Fibonacci(2)); } public void TestFourthFibonacciNumber() { Assert.AreEqual(2,
- 16. 16 Пример 1. (продолжение)
- 17. 17 Пример 1. (продолжение) public static uint Fibonacci(uint n) { if (n == 0) return 0;
- 18. 18 Пример 1. (продолжение)
- 19. 19 Пример 2. Функция CombinePaths Требуется реализовать функцию, складывающюю два пути. Например: C:\Data\ + MySQL\data.sql =
- 20. 20 Пример 2. (продолжение) type TCombinePathTests = class(TTestCase) published procedure TestCombineSimplePaths; end; procedure TCombinePathTests.TestCombineSimplePaths; begin CheckEquals(
- 21. 21 Пример 2. (продолжение) function CombinePaths(const APath1, APath2: string): string; begin Result := EmptyStr; end; Реализация
- 22. 22 Пример 2. (продолжение)
- 23. 23 Пример 2. (продолжение) function CombinePaths(const APath1, APath2: string): string; begin Result := APath1 + APath2;
- 24. 24 Пример 2. (продолжение)
- 25. 25 Пример 2. (продолжение) procedure TCombinePathTests. TestCombinePathsWithoutTrailingSlash; begin CheckEquals( C:\file_name.txt', CombinePaths('C:', 'file_name.txt') ); end;
- 26. 26 Пример 2. (продолжение)
- 27. 27 Пример 2. (продолжение) function CombinePaths(const APath1, APath2: string): string; begin Result := IncludeTrailingPathDelimiter(APath1)+ APath2; end;
- 28. 28 Пример 2. (продолжение)
- 29. 29 Пример 2. (продолжение) procedure TCombinePathTests. TestCombinePathsWithEmptyFirstPath; begin CheckEquals( 'file_name.txt', CombinePaths('', 'file_name.txt') ); end;
- 30. 30 Пример 2. (продолжение)
- 31. 31 Пример 2. (продолжение) function CombinePaths(const APath1, APath2: string): string; begin if APath1 = EmptyStr then
- 32. 32 Пример 2. (продолжение)
- 33. Пример 2. (продолжение) 33 function CombinePaths(const APath1, APath2: string): string; begin if IsAbsolutePath(APath2) or (APath1 =
- 34. Приёмы (паттерны) TDD ● ● ● ● ● ● Изолированный тест (Isolated Test) Список тестов (Test
- 35. Изолированный тест ● ● ● Если не проходит один тест, другие не должны свалиться вслед за
- 36. Список тестов ● ● ● Запишите все тесты, которые хотите реализовать, и придерживайтесь этого списка. От
- 37. Сначала утверждение ● ● ● Такой подход позволяет мгновенно ответить на два важных вопроса: «Что считать
- 38. Тестовые данные ● ● ● Не используйте одинаковые данные. Если нет разницы между 1 и 2,
- 39. Понятные данные ● ● ● При тестировании должно быть очевидно, откуда берется тот или иной результат.
- 40. Понятные данные (пример) Bank bank = new Bank(); bank.addRate("USD", "GBP", STANDARD_RATE); bank.commission(STANDARD_COMMISSION); Money result = bank.convert(new
- 41. Arrange – Act – Assert [Test] public void TestTranslate() { // Arrange. // Здесь выставляются начальные
- 42. Arrange – Act – Assert (пример 2) // Arranging var annualSalary = 120000M; var period =
- 43. Arrange – Act – Assert Преимущества использования этого паттерна: Assert-методы никогда не перемешаются с Act-методами Неявное
- 44. Инструменты unit-тестирования
- 45. Список инструментов ● ● ● ● ● Java: JUnit; C++: CppUnit, Boost Test; Delphi: DUnit; PHP:
- 46. BDD BDD (behavior-driven development) — расширение подхода TDD к разработке и тестированию, при котором особое внимание
- 47. На каких принципах базируется TDD? «Делай проще, дурачок» (keep it simple, stupid, KISS) «Вам это не
- 48. Выводы Гораздо больше времени уходит на реализацию простого класса, чем это требуется при написании кода «в
- 49. Выводы Помимо самого класса вы получите полный набор тестов для него. Для разработчика нет больше преимущества,
- 50. Выводы При использовании TDD легче обдумывать, что вы хотите получить от класса, его поведение и варианты
- 51. Выводы Самое главное: уменьшаются зависимости между классами, увеличивается сцепление классов!
- 52. Вопросы для самостоятельного изучения В каких задачах методология TDD не применима? Чем отличаются тесты, созданные по
- 53. Дополнительный материал Описание терминологии и технологии разработки через тестирование в различных инструментах: xUnit Junit NUnit CppUnit
- 54. xUnit. Терминология ● ● ● ● Тестовый метод (test method) Метод, в котором выполняется проверка работы
- 55. xUnit. Порядок вызова Class SetUp Method SetUp Method SetUp Test Method 1 Test Method 2 Method
- 56. JUnit 3 ● ● ● JUnit — библиотека для тестирования программного обеспечения на языке Java. Создана
- 57. JUnit 3. Организация тестов Класс TestCase ● Разработчик наследует свои классы тестов от этого класса. ●
- 58. JUnit 3. Организация тестов Класс TestSuite ● Используется для формирования набора тестов. ● Наборы тестов могут
- 59. JUnit 3. Утверждения Класс Assert ● Содержит специальные методы сравнения ● ● ● ● Сравнение на
- 60. JUnit 3. Пример public class TestGame extends TestCase { private Game g; public void setUp() {
- 61. NUnit ● ● ● ● NUnit — открытая среда юнит- тестирования приложений для .NET (включая платформу
- 62. NUnit. Организация тестов Для оргнизации тестов используются атрибуты: ● [Test] помечает тестовый метод. ● [TestFixture] помечает
- 63. NUnit. Утверждения Класс Assert ● Класс содержит статические методы проверки фактических значений с ожидаемыми: ● ●
- 64. NUnit. Пример [TestFixture] public class TestGame { private Game game; [SetUp] public void SetUp() { game
- 65. NUnit. Утверждения С версии NUnit 2.4 введены constraint-based утверждения. Новый тип утверждений базируется на статической функции
- 66. NUnit. Утверждения Assert.That(myString, Is.EqualTo("Hello")); Assert.That(7, Is.GreaterThanOrEqualTo(3)); Assert.That(phrase, Contains.Substring("tests fail")); Assert.That(phrase, Is.Not.StringContaining("tests pass")); Assert.That(3, Is.LessThan(5) | Is.GreaterThan(10));
- 67. CppUnit ● ● ● CppUnit – библиотека тестирования для языка C++. Является портом с JUnit на
- 68. CppUnit. Организация тестов ● ● ● CPPUNIT_TEST_SUITE, CPPUNIT_TEST_SUITE_END создают набор тестов. CPPUNIT_TEST создаѐт тестовый метод. setUp(),
- 69. CppUnit. Утверждения ● Проверочные методы реализованы в виде макросов: ● ● ● ● ● CPPUNIT_ASSERT CPPUNIT_ASSERT_EQUAL
- 70. CppUnit. Пример class TestGame : public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE(TestGame); CPPUNIT_TEST(testTwoThrowsNoMark); CPPUNIT_TEST_SUITE_END(); protected: Game * game; protected:
- 71. CppUnit. Пример void TestGame::setUp() { game = new Game(); } void TestGame::tearDown() { delete game; }
- 72. JUnit 4 ● ● JUnit 4 — новая версия библиотеки, построенная на появившихся в Java 5
- 73. JUnit 4. Организация тестов ● ● Набор тестов помещается в отдельный класс. Для организации тестов используются
- 74. JUnit 4. Утверждения Класс Assert ● Содержит набор статических методов, аналогичный набору JUnit 3 ● ●
- 75. JUnit 4. Пример 1 public class TestGame { @Test public void testTwoThrowsNoMark() { g = new
- 76. JUnit 4. Пример 2 public class TestGame { private Game g; @Before public void setUp() {
- 77. DUnit ● ● ● Dunit — инструмент тестирования для среды Borland Delphi. Первоначальная версия написана Juanco
- 78. DUnit. Организация тестов Класс TTestCase ● Разработчик наследует свои классы тестов от этого класса. ● Тестовые
- 79. DUnit. Утверждения Класс TTestCase содержит набор проверочных методов: ● CheckEquals/CheckNotEquals ● CheckNull/CheckNotNull ● CheckSame ● CheckIs
- 80. DUnit. Пример type TGameTest = class(TTestCase) private FGame: TGame; protected procedure SetUp; override; procedure TearDown; override;
- 82. Скачать презентацию







![9 } Пример 1. (продолжение) Первый тест [Test] public void TestFirstFibonacciNumber() {](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1175039/slide-8.jpg)































![Arrange – Act – Assert [Test] public void TestTranslate() { // Arrange.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1175039/slide-40.jpg)




















![NUnit. Организация тестов Для оргнизации тестов используются атрибуты: ● [Test] помечает тестовый](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1175039/slide-61.jpg)

![NUnit. Пример [TestFixture] public class TestGame { private Game game; [SetUp] public](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1175039/slide-63.jpg)
















Склеивание мешков цепочек (3 класс)
Нейронные сети
Работа с записями базы данных
Использование SRS-систем для работы с лексикой. На примере платформы Memrise
Правила поведения в чатах
Работа с операционной системой Windows
Основные понятия компьютерной графики
Python Start 1
Презентация на тему Защита компьютера и файлов
Презентация "Графическая информация" - скачать презентации по Информатике
Управление памятью в операционных системах
Архитектура ПК
CSCI 1900 Discrete Structures
Инстаграм – как способ социализации молодёжи
Методы поиска в массиве данных
Алгоритмы и структуры данных на Python. Хеш-функции, хеши, хештаблицы
Сетевая толпа нашего времени
Однонаправленная функция РША с потайным ходом
Разработка программного обеспечения ситуационного центра ЦПИ
Дигитайзеры
Общая статистика по интернету
Системы счисления
Социальная сеть Facebook
Мир нанотехнологий. Игра
Латинские цифры
Техника Метод Цицерона (урок 7)
Презентация на тему Файлы и папки (6 класс)
Конфиденциальность в интернете