среда, 1 августа 2012 г.

module: tdd


Подтемы

    - TDD
    - Unit Testing / JUnit
    - Hamcrest
    - Mockito
    - Continious Intergration (CI)


    Модульное тестирование (unit testing) направлено на всестороннее тестирование наименьших "цельных" / "осмысленных" / ''самостоятельных" / "законченных" частей кода. Это могут быть отдельные методы (Math.sin(..)), классы (ArrayList) или группы классов (?).
TDD
XP
Code testability
red/green/refactor cycle
Given [initial context], when [event occurs], then [ensure some outcomes].
Test Case
Test Suite
Fixture
SUT
Mock
Unit / Acceptance / Functional / Integration / Smoke / Stress test
assertion
BDD (Behavior-driven development)
--
Fragile test
Test coverage
Use case
Acceptance criteria

JUnit - реально крут, если пишешь свой runner

    Под законченностью подразумевается способность использовать эту группу методов/классов как единое целое. Преследование этой группой единой цели. В этом смысле единичный метод List.size() не закончен. так как его поведение зависит от вызовов методов List.add(), List.add(,), List.remove(), List.clear(), но в целом поведение ArrayList не зависит от других классов.


Терминология модульного тестирования: Fixture,  Test case,  Corner case, Test double, SUT



Описание

Тестирование различают:
    - по способу
        - мануальное
        - автоматизированное
    - по целям и методам
        - юнит-тестирование (модульное тестирование)
        - функциональное
        - приемочное
        - нагрузочное
        - smoke тест
        - интеграционный тест
        - BDD (Behavioral Driven Development)

Материалы


    Кратко и сжато описан TDD:

    - Robert Martin "Clean Code", Роберт Мартин, "Чистый код", Глава 9 "Модульные тесты" стр 150-163. (обязательно)

    JUnit идиомы и концепции:
    - @Test, @RunWith, TestCase
    - Test case lifecicle: @BeforeClass, constructor, @Before, @Test, @After, @AfterClass
    - exception testing: @Test(expected=...)
    - @Ignore
    - Assertions: ???
    - Test suite: @SuiteClasses
    - Parameterized test: @RunWith(Parameterized.class), @Parameters

    Оригинальные книги от автора TDD и JUnit Кента Бека:

    - Kent Beck "Test-driven Development by Example",  Кент Бек "Экстремальное программирование: разработка через тестирование".
    - Kent Beck "JUnit Pocket Guide", русского перевода не видел.

    Попытка всесторонне описать TDD в виде набора шаблонов:

    - Meszaros "xUnit Test Patterns". Месарош "Шаблоны тестирования xUnit" (обязательно главы: 3 Цели ..., 4 Философия ..., 5 Принципы ...)
    - Сайт книги "xUnit Test Patterns" с каталогом и кратким описанием всех шаблонов

    Mocking:

    - Fowler article "Mocks Aren't Stubs" (Dummy, Fake, Stub, Mock) (обязательно)

    У начинающих QA считается классикой:

    - Роман Савин "Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах".
    - Сэм Канер, Джек Фолк, Енг Кек Нгуен "Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений."


    Литература по процессам (Agile, Scrum, RUP, XP, CI, ...):
    - Дюваль, Матиас, Гловер, "Непрерывная интеграция". Duvall, Matyas, Glover "Continuous Integration"
    - Хамбл, Фарли "Непрерывное развертывание ПО". Humble, Farley  "Continuous Delivery"


Словарь


Материалы для углубленного изучения