Добрый день. Подскажите книги по автоматизированному тестированию, в частности unit-тестированию. Чтобы разобраться что и как тестировать. Понять хочу именно базовые принципы тестирования, логику покрытия тестами, а не конкретную реализацию в языке или framework/
Unit тесты обычно используются для проверки работы конкретных классов в виде белого, или черного ящика. Но пишутся они обычно там том языке, на котором реализовано само приложение, или его тестируемая часть. Посему вам сначала нужно выбрать ЯП, выучить его и уже потом задавать этот вопрос с уточнениями: какой ЯП И какоф фреймворк для тестирования используется.
Работаю с java в android. Но меня в данный момент интересуют не frameforks, а базовые принципы, единые для всех я.п. и завязанные на логику, а не на язык.
базовые принципы unit тестов следующие: есть метод А(a, b) возвращающий z.
необходимо написать методы, которые будут:
* вводить правильные данные a, b и проверять правильность результата z
* вводить правильные данные a, и не правильные b, по идее должна быть исключительная ситуация, ее нужно отловить.
* введить не правильные данные a, b в этой ситуации по идее тоже должна быть исключительная ситуация
* введить не правильные данные a, и правильные b, по идее должна быть исключительная ситуация, ее нужно отловить.
* + еще отдельные проверки для спец кейсов использования метода.
В случае тестов черного ящика: проверяется только внешний интерфейс модуля / класса, в случае белого ящика - проверяется каждый публичный метод и часть (либо все) приватные / защищенные.
index0h: Спасибо, это я и так знаю) Вопрос в том что, в архитектуре программы проверять: какие модули, методы, а что проверять не надо. Мне не очень понятно что тестировать, скажем в приложении для заказа Суши (приложение/сайт/десктопная программа, опять же не суть важно).
Еще раз, unit тесты - это тесты классов. У тебя есть класс User с методами register, login и logout. Нужно написать кучу проверочных тестов для каждлого из этих методов.
Uran_90 > но не всех же классов
При стремлении покрыть код тестами - да нужно проверять все классы и все методы. Черный ящик стоит проверять после диплоя например, а белый - на тестовом окружении.
Книги нет. То, что вы спрашиваете - алгоритм выбора того, что необходимо тестировать. Он полностью зависит от конкретного проекта, если это эл. магазин например - в первую очередь тестируется система оплаты и система товаров. Если это сайт-визитка - система вывода и шаблонизации. Если это БД - целостность фалов и отладка в случае сборев. Если это кэш система - бенчмарки производительности и целостности.
Вот пример либы, добавляющей несколько адаптеров логов к yii2 https://github.com/index0h/yii2-log/tree/master/te... . Здесь покрытие 90%, при этом проверяется каждый из адаптеорв на валидные входные данные и не валидные. Это и есть unit тесты. Их задача проверить, что обработка внутри тестируемого класса выполняется верно.