-
Notifications
You must be signed in to change notification settings - Fork 53
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
11 changed files
with
171 additions
and
17 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# Ограничения тестируемого кода | ||
|
||
## Только синхронных код | ||
|
||
YAxUnit выполняет тесты последовательно, вызов каждого теста это синхронный вызов тестового метода, в связи с этим не поддерживается: | ||
|
||
* Тестирование методов построенных на обработчиках | ||
* Тестирование асинхронных методы | ||
|
||
## Тестирование форм | ||
|
||
YAxUnit плохо подходит для тестирования форм. Формы, это в первую очередь про взаимодействие с пользователем, с другими объектами системы. | ||
Для их проверки лучше подходят такие инструменты как [vanessa-automation]([vanessa-automation](https://github.com/Pr-Mex/vanessa-automation)), [add](https://github.com/vanessa-opensource/add) или [tester](https://github.com/grumagargler/tester). Они позволяют проще и комплексно проверить работу форм. | ||
Если же в форме расположена сложная логика слабо связанная с отображением, то ее можно вынести в общий модуль, который будет вызываться из формы и тестировать уже методы этого общего модуля. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# Рекомендации | ||
|
||
Модульные тесты - это инструмент разработчика улучшающий качества работы. | ||
|
||
* Модульные тесты это код. | ||
* Тесты идут совместно с доработками (при использовании git) | ||
* Быстрый ответ | ||
* Высокая скорость реализации и, соответственно, низкая стоимость. На проверку небольшой функции уходит всего несколько секунд. Изолированность юнитов позволяет проверять работоспособность нескольких модулей одновременно. | ||
* Простота автоматизации. Unit тест исследует ответ кода на ввод данных и определенные действия. Он не требует проиграть сценарий взаимодействия конечного пользователя с новой функцией, поэтому автоматизация процесса не отнимает много сил и времени. | ||
|
||
На больших и сложных проектах стопроцентного покрытия кода тестами достичь сложно. К тому же, это нерационально. Показатель 70–90% считается хорошим. Он позволяет выявить максимальное количество ошибок. Мы собрали несколько практических советов по увеличению процента покрытия кода: | ||
|
||
* Пишите unit тест на каждый новый код сразу же. | ||
* Используйте готовые решения – тестовые фреймворки. | ||
* Создавайте тесты для проверки только одной функции. | ||
* Используйте негативные тесты для проверки поведения программы в случае ввода неправильных данных. | ||
* Используйте мутационные фреймворки с функцией изменения констант и условий для проверки качества unit тестов. | ||
* Проверяйте тесты на стабильность. | ||
* Следите за скоростью выполнения теста. | ||
|
||
|
||
## Рекомендации по модульному тестированию с использованием YAxUnit | ||
|
||
Кроме [общих рекомендаций](common-recommendations.md) | ||
|
||
* Структура тестовых модулей: Модуль тестового набора должен соответствовать объекту решения, который он будет тестировать. Для этого мы предлагаем [схему наименования модулей](../getting-started/structure.md#схема-наименования-модулей) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# Полезные ссылки | ||
|
||
* [Код без тестов — легаси](https://habr.com/ru/companies/dododev/articles/544110/) | ||
О легаси, о его изменении и покрытии тестами. | ||
* https://less.works/ru/less/technical-excellence/unit-testing |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# Что тестировать | ||
|
||
:::warning | ||
Это мой субъективный опыт, возможно он расходится с вашим. В этом случае вы можете или доработать данную статью или разместить свою рядом. | ||
::: | ||
|
||
Ответ простой, тестируем то что дорабатываем. Начинайте с интеграционных (компонентных) тестов вашей задачи которые проверяют основные кейсы по задаче. | ||
|
||
В процессе написания тестов не требуется учитывать все возможные сценарии поведения программы. Рекомендуется сосредоточиться на ключевых задачах, а остальные вносить (дополнять) по мере необходимости. | ||
|
||
Идеальный подход: | ||
|
||
1. На основании технического задания необходимо выделить тест-кейсы. | ||
2. Написать тесты реализующие эти кейсы, чаще всего это будут компонентные (интеграционные) тесты. | ||
3. Реализовать функциональность задания. | ||
4. При реализации добавляем новые тест-кейсы для упущенных и сложных моментов. | ||
5. Добиваемся зеленого прохождения тестов. | ||
6. Проверяем задачу вручную. | ||
7. Задаем задачу. | ||
|
||
## Провокация: пишите компонентные тесты, а не unit тесты | ||
|
||
Заголовок выше противоречит основной мысли из многих современных книг и учебников. Компонентные тесты гораздо дольше выполняются и при этом не показывают четкое место поломки кода. Несмотря на это, мы говорим о них как об “оплоте стабильности”. Дело в том, что для качественного покрытия unit тестами требуется гораздо больше времени, чем для написания хорошего компонентного теста. Хорошее покрытие unit тестами не гарантирует вам правильность взаимодействия классов между собой. И это крайне дорогое удовольствие. На их разработку и поддержку требуется очень много времени. В реальном проекте программисту, как правило, не выделяют время на написание unit тестов. Получается, что если на проекте выбрана именно политика unit тестов, то эти тесты не отражают реальные сценарии использования приложения - проверяется “сферический конь в вакууме”, причем не во всех возможных состояниях системы. В итоге такая политика разработки тестов рано или поздно приводит к тому, что тесты перестают защищать от дефектов приложения. | ||
|
||
[Источник](https://habr.com/ru/companies/axenix/articles/724318/) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
Oops, something went wrong.