HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <h2>Тест-дизайн</h2>
1 <h2>Тест-дизайн</h2>
2 <p>Определить весь процесс тестирования приложения - задача сложная даже для опытного тестировщика. В этом вопросе не существует четких правил, которые подскажут, как тестировать, какие тесты выполнять и в каких ситуациях. Чтобы справиться с этой неопределенностью, тестировщики придумали множество приемов, которые помогают решать эти вопросы и дают подсказки, помогающие направить тестирование в правильное русло и сократить сроки тестирования.</p>
2 <p>Определить весь процесс тестирования приложения - задача сложная даже для опытного тестировщика. В этом вопросе не существует четких правил, которые подскажут, как тестировать, какие тесты выполнять и в каких ситуациях. Чтобы справиться с этой неопределенностью, тестировщики придумали множество приемов, которые помогают решать эти вопросы и дают подсказки, помогающие направить тестирование в правильное русло и сократить сроки тестирования.</p>
3 <p>Тест-дизайн - это этап тестирования ПО. На нем проектируются и создаются тест-кейсы, которые будут соответствовать определенным заранее критериям качества и целям тестирования. Цель тест-дизайна - создать наборы тестовых случаев, обеспечивающих оптимальное тестовое покрытие.</p>
3 <p>Тест-дизайн - это этап тестирования ПО. На нем проектируются и создаются тест-кейсы, которые будут соответствовать определенным заранее критериям качества и целям тестирования. Цель тест-дизайна - создать наборы тестовых случаев, обеспечивающих оптимальное тестовое покрытие.</p>
4 <p>Разработка тестов начинается после проведения исследования ПО, когда цели определены, а критерии тестирования заданы и выполняются.</p>
4 <p>Разработка тестов начинается после проведения исследования ПО, когда цели определены, а критерии тестирования заданы и выполняются.</p>
5 <h2>Техники тест-дизайна</h2>
5 <h2>Техники тест-дизайна</h2>
6 <p>Техники тест-дизайна помогают:</p>
6 <p>Техники тест-дизайна помогают:</p>
7 <ol><li>Исключить непродуктивные тест-кейсы и сократить общее количество кейсов</li>
7 <ol><li>Исключить непродуктивные тест-кейсы и сократить общее количество кейсов</li>
8 <li>Покрыть тестами как можно больше функциональности</li>
8 <li>Покрыть тестами как можно больше функциональности</li>
9 <li>Провести все тесты и не пропустить ничего важного</li>
9 <li>Провести все тесты и не пропустить ничего важного</li>
10 </ol><p>Для работы с кодом (white-box) важны такие аспекты:</p>
10 </ol><p>Для работы с кодом (white-box) важны такие аспекты:</p>
11 <ul><li>Покрытие операторов</li>
11 <ul><li>Покрытие операторов</li>
12 <li>Покрытие условий</li>
12 <li>Покрытие условий</li>
13 <li>Покрытие путей</li>
13 <li>Покрытие путей</li>
14 <li>Покрытие функций</li>
14 <li>Покрытие функций</li>
15 <li>Покрытие вход/выход</li>
15 <li>Покрытие вход/выход</li>
16 <li>Покрытие значений параметров</li>
16 <li>Покрытие значений параметров</li>
17 </ul><p>В работе с требованиями (black-box) тестирование проходит иначе:</p>
17 </ul><p>В работе с требованиями (black-box) тестирование проходит иначе:</p>
18 <ul><li>Классы эквивалентности</li>
18 <ul><li>Классы эквивалентности</li>
19 <li>Граничные значения</li>
19 <li>Граничные значения</li>
20 <li>Попарное тестирование</li>
20 <li>Попарное тестирование</li>
21 <li>Таблица принятия решений</li>
21 <li>Таблица принятия решений</li>
22 <li>Диаграмма состояний и переходов</li>
22 <li>Диаграмма состояний и переходов</li>
23 <li>Тестирование вариантов использования</li>
23 <li>Тестирование вариантов использования</li>
24 <li>Доменное тестирование.</li>
24 <li>Доменное тестирование.</li>
25 </ul><h2>Техники тест-дизайна на основании требований</h2>
25 </ul><h2>Техники тест-дизайна на основании требований</h2>
26 <h3>Классы эквивалентности</h3>
26 <h3>Классы эквивалентности</h3>
27 <p>Техника классов эквивалентности - это разделение диапазона возможных вводимых значений на группы эквивалентных по своему влиянию на систему. Эта техника помогает не только сокращать количество тестов, но и сохранять приемлемое тестовое покрытие.</p>
27 <p>Техника классов эквивалентности - это разделение диапазона возможных вводимых значений на группы эквивалентных по своему влиянию на систему. Эта техника помогает не только сокращать количество тестов, но и сохранять приемлемое тестовое покрытие.</p>
28 <p>Рассмотрим для примера перевод денег в банке. Размер комиссии зависит от суммы перевода:</p>
28 <p>Рассмотрим для примера перевод денег в банке. Размер комиссии зависит от суммы перевода:</p>
29 <ul><li>от 1 до 999 долларов включительно - 0%</li>
29 <ul><li>от 1 до 999 долларов включительно - 0%</li>
30 <li>от 1000 до 4999 долларов включительно - 5%</li>
30 <li>от 1000 до 4999 долларов включительно - 5%</li>
31 <li>от 5000 долларов - 7%</li>
31 <li>от 5000 долларов - 7%</li>
32 </ul><p>Максимальная сумма перевода - 100000 долларов, при этом дробные числа не учитываются.</p>
32 </ul><p>Максимальная сумма перевода - 100000 долларов, при этом дробные числа не учитываются.</p>
33 <p>Попробуем выяснить, сколько требований будет в этом случае. В этом помогут классы эквивалентности:</p>
33 <p>Попробуем выяснить, сколько требований будет в этом случае. В этом помогут классы эквивалентности:</p>
34 <ul><li>1-999 =&gt; ожидаем комиссию 0%</li>
34 <ul><li>1-999 =&gt; ожидаем комиссию 0%</li>
35 <li>1000-4999 =&gt; ожидаем комиссию 5%</li>
35 <li>1000-4999 =&gt; ожидаем комиссию 5%</li>
36 <li>5000-100000 =&gt; ожидаем комиссию 7%</li>
36 <li>5000-100000 =&gt; ожидаем комиссию 7%</li>
37 </ul><p>Выбранные значения для проверки: 500, 2500, 7500.</p>
37 </ul><p>Выбранные значения для проверки: 500, 2500, 7500.</p>
38 <ul><li>На значение 500 система отреагирует так же, как и на любое другое значение из первого диапазона</li>
38 <ul><li>На значение 500 система отреагирует так же, как и на любое другое значение из первого диапазона</li>
39 <li>На значение 2500 система отреагирует так же, как и на любое другое значение из второго диапазона</li>
39 <li>На значение 2500 система отреагирует так же, как и на любое другое значение из второго диапазона</li>
40 <li>На значение 7500 система отреагирует так же, как и на любое другое значение из третьего диапазона</li>
40 <li>На значение 7500 система отреагирует так же, как и на любое другое значение из третьего диапазона</li>
41 </ul><h3>Граничные значения</h3>
41 </ul><h3>Граничные значения</h3>
42 <p>Граничные значения - это значения, в которых один класс эквивалентности переходит в другой. По своей сути это техника, которая дополняет технику классов эквивалентности.</p>
42 <p>Граничные значения - это значения, в которых один класс эквивалентности переходит в другой. По своей сути это техника, которая дополняет технику классов эквивалентности.</p>
43 <p>Важно проверять граничные значения, потому что именно на границах чаще всего допускаются ошибки при написании кода и формулировании требований.</p>
43 <p>Важно проверять граничные значения, потому что именно на границах чаще всего допускаются ошибки при написании кода и формулировании требований.</p>
44 <p>Например, неопытный программист при постановке "не больше 1000" может поставить значение &lt;1000.</p>
44 <p>Например, неопытный программист при постановке "не больше 1000" может поставить значение &lt;1000.</p>
45 <p>Вернемся к примеру с комиссией:</p>
45 <p>Вернемся к примеру с комиссией:</p>
46 <ul><li>от 1 до 999 долларов включительно - 0%</li>
46 <ul><li>от 1 до 999 долларов включительно - 0%</li>
47 <li>от 1000 до 4999 долларов включительно - 5%</li>
47 <li>от 1000 до 4999 долларов включительно - 5%</li>
48 <li>от 5000 долларов - 7%</li>
48 <li>от 5000 долларов - 7%</li>
49 </ul><p>Максимальная сумма перевода - 100000 долларов, при этом дробные числа не учитываются. Вспомним классы эквивалентности:</p>
49 </ul><p>Максимальная сумма перевода - 100000 долларов, при этом дробные числа не учитываются. Вспомним классы эквивалентности:</p>
50 <ul><li>1-999 =&gt; ожидаем комиссию 0%</li>
50 <ul><li>1-999 =&gt; ожидаем комиссию 0%</li>
51 <li>1000-4999 =&gt; ожидаем комиссию 5%</li>
51 <li>1000-4999 =&gt; ожидаем комиссию 5%</li>
52 <li>5000-100000 =&gt; ожидаем комиссию 7%</li>
52 <li>5000-100000 =&gt; ожидаем комиссию 7%</li>
53 </ul><p>Граничные значения: 1, 999, 1000, 4999, 5000, 100000.</p>
53 </ul><p>Граничные значения: 1, 999, 1000, 4999, 5000, 100000.</p>
54 <p>С учетом классов эквивалентности и граничных значений выбираем значения для проверки:<strong>1</strong>, 500,<strong>999</strong>,<strong>1000</strong>, 2500,<strong>4999</strong>,<strong>5000</strong>, 7500,<strong>100000</strong>.</p>
54 <p>С учетом классов эквивалентности и граничных значений выбираем значения для проверки:<strong>1</strong>, 500,<strong>999</strong>,<strong>1000</strong>, 2500,<strong>4999</strong>,<strong>5000</strong>, 7500,<strong>100000</strong>.</p>
55 <h3>Попарное тестирование (pairwise)</h3>
55 <h3>Попарное тестирование (pairwise)</h3>
56 <p>Попарное тестирование - техника тест-дизайна, при которой тест-кейсы создаются так, чтобы выполнить все возможные отдельные комбинации каждой пары входных параметров.</p>
56 <p>Попарное тестирование - техника тест-дизайна, при которой тест-кейсы создаются так, чтобы выполнить все возможные отдельные комбинации каждой пары входных параметров.</p>
57 <p>Достаточно проверить комбинации пар входных параметров, потому что ошибки чаще всего находятся именно на перекрестке двух параметров. Исключения бывают, но они достаточно редкие.</p>
57 <p>Достаточно проверить комбинации пар входных параметров, потому что ошибки чаще всего находятся именно на перекрестке двух параметров. Исключения бывают, но они достаточно редкие.</p>
58 <p>Рассмотрим пример. Возьмем наушники с такими характеристиками:</p>
58 <p>Рассмотрим пример. Возьмем наушники с такими характеристиками:</p>
59 <ul><li>Тип подключения (беспроводной или проводной)</li>
59 <ul><li>Тип подключения (беспроводной или проводной)</li>
60 <li>Микрофон (включен или выключен)</li>
60 <li>Микрофон (включен или выключен)</li>
61 <li>Подсветка (включена или выключена)</li>
61 <li>Подсветка (включена или выключена)</li>
62 </ul><p>Полный перебор даст нам восемь тест-кейсов. Это 2 в третьей степени, потому что у каждого из трех параметров может быть всего два значения:</p>
62 </ul><p>Полный перебор даст нам восемь тест-кейсов. Это 2 в третьей степени, потому что у каждого из трех параметров может быть всего два значения:</p>
63 <p>Как правило, подобных характеристик в реальном мире куда больше, что неизбежно увеличивает количество тест-кейсов.</p>
63 <p>Как правило, подобных характеристик в реальном мире куда больше, что неизбежно увеличивает количество тест-кейсов.</p>
64 <p>При попарном тестировании достаточно проверить лишь пары значений. При успешном выполнении тестов на 97% мы можем быть уверены, что проверяемая функциональность работает корректно.</p>
64 <p>При попарном тестировании достаточно проверить лишь пары значений. При успешном выполнении тестов на 97% мы можем быть уверены, что проверяемая функциональность работает корректно.</p>
65 <ul><li>1 нет, нет, нет -&gt; нет, нет, нет -&gt; нет, нет, нет (00, 00, 00)</li>
65 <ul><li>1 нет, нет, нет -&gt; нет, нет, нет -&gt; нет, нет, нет (00, 00, 00)</li>
66 <li>2 да, да, нет -&gt;да, да, нет -&gt; да, да, нет (11, 10, 10)</li>
66 <li>2 да, да, нет -&gt;да, да, нет -&gt; да, да, нет (11, 10, 10)</li>
67 <li>3 нет, да, да -&gt; нет, да, да -&gt; нет, да, да (01, 11, 01)</li>
67 <li>3 нет, да, да -&gt; нет, да, да -&gt; нет, да, да (01, 11, 01)</li>
68 <li>4 да, нет, да -&gt; да, нет, да -&gt; да, нет, да (10, 01, 11)</li>
68 <li>4 да, нет, да -&gt; да, нет, да -&gt; да, нет, да (10, 01, 11)</li>
69 </ul><p>При трех параметрах, каждый из которых имеет 3 значения, количество вариантов полного перебора - 27 (три в третьей) Применив pairwise, количество тест-кейсов сведётся к 9.</p>
69 </ul><p>При трех параметрах, каждый из которых имеет 3 значения, количество вариантов полного перебора - 27 (три в третьей) Применив pairwise, количество тест-кейсов сведётся к 9.</p>
70 <h3>Таблица принятия решений</h3>
70 <h3>Таблица принятия решений</h3>
71 <p>Таблица решений или матрица решений - способ компактного представления модели со сложной логикой; инструмент для упорядочения сложных бизнес требований, которые должны быть реализованы в продукте.</p>
71 <p>Таблица решений или матрица решений - способ компактного представления модели со сложной логикой; инструмент для упорядочения сложных бизнес требований, которые должны быть реализованы в продукте.</p>
72 <p>Это взаимосвязь между множеством условий и действий.</p>
72 <p>Это взаимосвязь между множеством условий и действий.</p>
73 <p>Таблица принятия решений содержит следующие элементы:</p>
73 <p>Таблица принятия решений содержит следующие элементы:</p>
74 <ul><li>Условия - список возможных условий</li>
74 <ul><li>Условия - список возможных условий</li>
75 <li>Варианты - комбинация из выполнения и/или невыполнения условий этого списка</li>
75 <li>Варианты - комбинация из выполнения и/или невыполнения условий этого списка</li>
76 <li>Действия - список возможных действий (вариантов исхода)</li>
76 <li>Действия - список возможных действий (вариантов исхода)</li>
77 </ul><p>Например, кредит выдаётся людям, удовлетворяющим трём условиям:</p>
77 </ul><p>Например, кредит выдаётся людям, удовлетворяющим трём условиям:</p>
78 <ul><li>Возраст: 18-60 лет</li>
78 <ul><li>Возраст: 18-60 лет</li>
79 <li>Гражданство: Россия</li>
79 <li>Гражданство: Россия</li>
80 <li>Стаж работы: более 5 лет ИЛИ средняя месячная зарплата за год больше 100 тысяч рублей</li>
80 <li>Стаж работы: более 5 лет ИЛИ средняя месячная зарплата за год больше 100 тысяч рублей</li>
81 </ul><h3>Диаграмма состояний и переходов</h3>
81 </ul><h3>Диаграмма состояний и переходов</h3>
82 <p>Таблица переходов представляет собой все возможные комбинации начальных и конечных состояний. Она включает в себя действительные и недействительные переходы, инициирующие события, защитные условия и результирующие действия.</p>
82 <p>Таблица переходов представляет собой все возможные комбинации начальных и конечных состояний. Она включает в себя действительные и недействительные переходы, инициирующие события, защитные условия и результирующие действия.</p>
83 <p>Диаграммы состояний и переходов показывают только действительные переходы и исключают недействительные переходы.</p>
83 <p>Диаграммы состояний и переходов показывают только действительные переходы и исключают недействительные переходы.</p>
84 <p><strong>Состояние А</strong>--переход--&gt;<strong>Состояние Б</strong></p>
84 <p><strong>Состояние А</strong>--переход--&gt;<strong>Состояние Б</strong></p>
85 <h3>Тестирование вариантов использования</h3>
85 <h3>Тестирование вариантов использования</h3>
86 <p>Тестирование вариантов использования определяется как метод тестирования программного обеспечения, который помогает идентифицировать тестовые случаи, охватывающие всю систему, от транзакции к транзакции от начала до конечной точки.</p>
86 <p>Тестирование вариантов использования определяется как метод тестирования программного обеспечения, который помогает идентифицировать тестовые случаи, охватывающие всю систему, от транзакции к транзакции от начала до конечной точки.</p>
87 <p>Вариант использования или юз-кейс - это описание конкретного использования системы субъектом или пользователем</p>
87 <p>Вариант использования или юз-кейс - это описание конкретного использования системы субъектом или пользователем</p>
88 <p>Юз-кейсы содержат следующие сведения:</p>
88 <p>Юз-кейсы содержат следующие сведения:</p>
89 <ul><li>Кто использует сайт или приложение</li>
89 <ul><li>Кто использует сайт или приложение</li>
90 <li>Что пользователь хочет сделать</li>
90 <li>Что пользователь хочет сделать</li>
91 <li>Какие шаги делает пользователь, чтобы совершить определенное действие</li>
91 <li>Какие шаги делает пользователь, чтобы совершить определенное действие</li>
92 <li>Как сайт или приложение реагируют на действия пользователя</li>
92 <li>Как сайт или приложение реагируют на действия пользователя</li>
93 </ul><h3>Доменное тестирование</h3>
93 </ul><h3>Доменное тестирование</h3>
94 <p>Доменное тестирование (domain analysis) - методика разработки тестов, использующаяся для определения действенных и эффективных тестовых сценариев в случаях, когда множественные параметры могут или должны быть протестированы одновременно.</p>
94 <p>Доменное тестирование (domain analysis) - методика разработки тестов, использующаяся для определения действенных и эффективных тестовых сценариев в случаях, когда множественные параметры могут или должны быть протестированы одновременно.</p>
95 <p>Доменное тестирование применяется для сокращения количества проводимых тестов без потери качества тестирования.</p>
95 <p>Доменное тестирование применяется для сокращения количества проводимых тестов без потери качества тестирования.</p>
96 <p>Очень часто классы эквивалентности, относящиеся к позитивным проверкам, можно проверять совместно.</p>
96 <p>Очень часто классы эквивалентности, относящиеся к позитивным проверкам, можно проверять совместно.</p>
97 <p>Возьмем для примера такие требования:</p>
97 <p>Возьмем для примера такие требования:</p>
98 <ul><li>Размер файла: до 200 МБ</li>
98 <ul><li>Размер файла: до 200 МБ</li>
99 <li>Имя файла: от 5 до 24 символов, только латиница</li>
99 <li>Имя файла: от 5 до 24 символов, только латиница</li>
100 <li>Форматы файлов: только изображения</li>
100 <li>Форматы файлов: только изображения</li>
101 </ul><p>В этом случае нужны такие проверки:</p>
101 </ul><p>В этом случае нужны такие проверки:</p>
102 <ol><li>Загрузить файл менее 200 МБ</li>
102 <ol><li>Загрузить файл менее 200 МБ</li>
103 <li>Загрузить файл с именем hexlet</li>
103 <li>Загрузить файл с именем hexlet</li>
104 <li>Загрузить файл с расширением .jpg</li>
104 <li>Загрузить файл с расширением .jpg</li>
105 </ol><p>Можно заменить одной проверкой:</p>
105 </ol><p>Можно заменить одной проверкой:</p>
106 <ol><li>Загрузить файл менее 200 МБ, с именем hexlet.jpg</li>
106 <ol><li>Загрузить файл менее 200 МБ, с именем hexlet.jpg</li>
107 </ol><p>Обратите внимание, что с негативными проверками так делать нельзя. При этом некоторые негативные проверки также можно исключать за счет несовместимости значений двух параметров.</p>
107 </ol><p>Обратите внимание, что с негативными проверками так делать нельзя. При этом некоторые негативные проверки также можно исключать за счет несовместимости значений двух параметров.</p>
108 <p>Например, не нужно проверять конфигурацию компьютера с комплектующими, которые никогда не будут поставляться вместе (слабый процессор и сильная видеокарта). Также не нужно проверять конфигурацию автомобиля с агрегатами, которые никогда не будут поставляться вместе (дизельный мотор + турбонаддув).</p>
108 <p>Например, не нужно проверять конфигурацию компьютера с комплектующими, которые никогда не будут поставляться вместе (слабый процессор и сильная видеокарта). Также не нужно проверять конфигурацию автомобиля с агрегатами, которые никогда не будут поставляться вместе (дизельный мотор + турбонаддув).</p>
109 <p>Часто такая же ситуация может возникнуть при тестировании фильтров в интернет-магазинах. Часто параметр2 имеет строго определенное значение при выборе параметра1, поэтому проверять все возможные значения параметра2 в паре с параметром1 - смысла не имеет.</p>
109 <p>Часто такая же ситуация может возникнуть при тестировании фильтров в интернет-магазинах. Часто параметр2 имеет строго определенное значение при выборе параметра1, поэтому проверять все возможные значения параметра2 в паре с параметром1 - смысла не имеет.</p>