Equivalence Class Testing
Вступление
Equivalence Classes (Класс эквивалентности) – это входные (а иногда и выходные) данные, которые обрабатываются приложением одинаково или обработка которых приводит к одному и тому же результату.
Equivalence Class Testing (Тестирование классами эквивалентности) это техника тест дизайна способная резонно уменьшить количество ваших тест-кейсов. Использовать ее можно на всех уровнях тестирования - unit, integration, system, and system-integration test levels.
Как мне кажется эта техника тест дизайна интуитивно понятна и интуитивно применяется каждым тестировщиком, но стоит знать теорию, чтобы осознанно применять технику на практике.
Подход
Использовать эту технику достаточно просто, правила такие:
Использование классов эквивалентности будем рассматривать на примерах.
Пример.
Представим, что мы тестируем модуль для HR, который определяет брать на работу кандидата или нет, базируясь на возрасте кандидата. Условия такие:
Equivalence Classes (Класс эквивалентности) – это входные (а иногда и выходные) данные, которые обрабатываются приложением одинаково или обработка которых приводит к одному и тому же результату.
Equivalence Class Testing (Тестирование классами эквивалентности) это техника тест дизайна способная резонно уменьшить количество ваших тест-кейсов. Использовать ее можно на всех уровнях тестирования - unit, integration, system, and system-integration test levels.
Как мне кажется эта техника тест дизайна интуитивно понятна и интуитивно применяется каждым тестировщиком, но стоит знать теорию, чтобы осознанно применять технику на практике.
Подход
Использовать эту технику достаточно просто, правила такие:
- Определите классы эквивалентности.
- На каждый класс эквивалентности сделайте хотя бы 1 тест-кейс.
Использование классов эквивалентности будем рассматривать на примерах.
Пример.
Представим, что мы тестируем модуль для HR, который определяет брать на работу кандидата или нет, базируясь на возрасте кандидата. Условия такие:
- 0–16 : Не нанимать
- 16–18 : Можем нанять только на part time
- 18–55 : Можем нанять на full time
- 55–99 : Не нанимать
If (applicantAge == 0) hireStatus="NO";
If (applicantAge == 1) hireStatus="NO";
…
If (applicantAge == 14) hireStatus="NO";
If (applicantAge == 15) hireStatus="NO";
If (applicantAge == 16) hireStatus="PART";
If (applicantAge == 17) hireStatus="PART";
If (applicantAge == 18) hireStatus="FULL";
If (applicantAge == 19) hireStatus="FULL";
…
If (applicantAge == 53) hireStatus="FULL";
If (applicantAge == 54) hireStatus="FULL";
If (applicantAge == 55) hireStatus="NO";
If (applicantAge == 56) hireStatus="NO";
…
If (applicantAge == 98) hireStatus="NO";
If (applicantAge == 99) hireStatus="NO";
К счастью, наши родные девелоперы так код не пишут (по крайней мере как правило :)). На самом деле для этого модуля мы, как правило, увидим примерно такой код:
If (applicantAge > 0 && applicantAge <=16)
hireStatus="NO";
If (applicantAge > 16 && applicantAge <=18)
hireStatus="PART";
If (applicantAge > 18 && applicantAge <=55)
hireStatus="FULL";
If (applicantAge > 55 && applicantAge <=99)
hireStatus="NO";
Поэтому явно видно, что не стоит тестировать все значения 0, 1, 2, ... 14, 15, 16. Более разумно будет протестировать диапазоны каждого условия, что собственно и есть наши классы эквивалентности.:
- Класс эквивалентности NO: 0-16.
- Класс эквивалентности PART: 17-18.
- Класс эквивалентности FULL: 19-55.
- Класс эквивалентности NO: 56-99.
Вспомним правила - после определения классов эквивалентности мы должны создать тест кейс с любым значением из диапазона класса эквивалентности. Итого у нас 4 позитивных тест кейса вместо 100. Неплохая оптимизация.
Так же не стоит забывать о не валидных диапазонах, добавим классы эквивалентности и для них:
Так же не стоит забывать о не валидных диапазонах, добавим классы эквивалентности и для них:
- (-100) – (-1). Значнеие (-100) было взято наугад, по поводу подобных границ лучше консультироваться с девелоперами.
- 100-1000. Значнеие (1000) было взято наугад, по поводу подобных границ лучше консультироваться с девелоперами.
- 0.1-0.9. Выбрано любое дробное значение входящее в валидный диапазон.
- Символы.
- Пустой ввод.
- ...
Вот собственно и всё. Осталось на каждый класс эквивалентности создать тест-кейс.
Важно помнить, что классы эквивалентности определяются по сущностям. В нашем примере была одна сущность – возраст, но в реальной жизни чаще встречаются случаи взаимодействия нескольких сущностей одновременно.
Для этого лучше рассмотреть следующий пример.
Важно помнить, что классы эквивалентности определяются по сущностям. В нашем примере была одна сущность – возраст, но в реальной жизни чаще встречаются случаи взаимодействия нескольких сущностей одновременно.
Для этого лучше рассмотреть следующий пример.
Заимствованно с http://w1zle.blogspot.ru
Комментариев нет:
Отправить комментарий