Все курсы
Акции и промокоды Отзывы о школах

Профессия
Тестировщик

Тестировщик — это специалист, который проверяет программное обеспечение на наличие ошибок, чтобы убедиться, что оно работает правильно и удобно для пользователя.

Кто такой тестировщик?

Тестировщик — это специалист, который обеспечивает качество программного продукта, находя баги. Он отвечает за то, чтобы все функции ПО работали в соответствии с техническим заданием.
Основная обязанность специалиста по тестированию ПО — написание и выполнение тест-кейсов. Тест-кейсы имитируют условия использования программного продукта. Это делается для того, чтобы убедиться в надежности, удобстве, безопасности конечного продукта для юзеров. В отличие от программистов, занимающихся написанием кода, тестировщики фокусируются на анализе кода и поиске дефектов.
Задача инженера по тестированию заключается в том, чтобы гарантировать, что конечный продукт соответствует всем техническим требованиям и ожиданиям пользователя.

Термин «баг» в контексте программного обеспечения возник благодаря реальному насекомому. В 1945 году инженер Грейс Хоппер обнаружила настоящую моль, застрявшую в коннекторе компьютера Mark II, что привело к сбою в работе системы. Она записала этот случай в журнале как «bug» (с англ. — «жук»), и с тех пор этот термин стал популярным обозначением ошибок и неисправностей в программных системах.
Самый дорогой баг в истории стоил $440 миллионов. В 2000 году ошибка в коде торговой системы Knight Trading на Чикагской товарной бирже привела к автоматическому генерированию фальшивых ордеров на покупку акций на сумму $440 миллионов. Это событие стало одним из самых крупных торговых происшествий в истории и привело к значительным финансовым потерям.

Чем занимается специалист по тестированию

В деле обеспечения качества программного продукта специалист по тестированию ПО выполняет ряд ключевых функций:

  • Написание тест-плана: Специалист разрабатывает тест-планы на основе методологий, Agile или Waterfall. Эти документы определяют, что, в каком порядке и с помощью каких инструментов будет тестироваться в проекте.
  • Разработка тест-кейсов и сценариев: На основе спецификации ПО тестер составляет детальные сценарии поиска багов. Каждый тест-кейс направлен на проверку определённой функции или реакции программного продукта на нестандартные действия пользователя.
пример оформления тест-кейса

Скриншот иллюстрирует оформление тест-кейса

  • Выполнение тестов: специалист выполняет тесты, которые могут быть как ручными, так и автоматизированными. Например, для проверки пользовательского интерфейса могут использоваться скрипты автоматизации, которые повторяют типичные действия юзера.
  • Документация и отчётность: ручной тестировщик составляет отчет для каждого дефекта. Документ содержит условия воспроизведения ошибки, уровень ее серьезности и потенциальное влияние на конечных пользователей.
  • Регрессионное тестирование: После устранения неисправностей специалист проводит повторные проверки для подтверждения того, что изменения в коде не привели к новым ошибкам в уже проверенных частях программы.
  • Сотрудничество с разработчиками: специалист по тестированию регулярно общается с кодерами для обсуждения технических аспектов найденных проблем и возможных путей их решения.

Пример из практики: Во время разработки функции онлайн-платежей мобильного приложения специалист обнаружил, что при введении кириллических символов в поле суммы платежа приложение выдает ошибку. Тестер написал тест-кейс, который проверял каждый символ на совместимость с полем ввода. После документирования и воспроизведения бага разработчики пофиксили ошибку в поле валидации ввода. Регрессионное тестирование подтвердило, что неисправность успешно устранена. Прием платежей работает корректно при любых вводимых значениях.

Какими знаниями и умениями должен обладать инженер по тестированию

Профессия требует комплексного подхода к изучению и применению технических знаний и умений, необходимых для поддержания качества программных продуктов. Важно не только находить ошибки, но и предотвращать их появление. Это возможно при наличии следующих компетенций

Технические компетенции

  • Классификация видов тестирования: Знание различных видов тестирования, таких как функциональное, интеграционное, регрессионное и др., и понимание, когда и для чего они применяются.
  • Локализация ошибок и багрепортинг: Важно не только уметь находить ошибки, но и точно локализовывать их, а также составлять четкие и понятные отчеты о найденных багах.
  • Техники тест-дизайна: Владение техниками, такими как классы эквивалентности, анализ граничных значений и другие, что позволяет эффективно планировать тесты и покрывать максимальное количество сценариев.
  • HTML, CSS, JavaScript: Понимание структуры и работы веб-страниц, включая HTML, CSS и JavaScript, позволяет специалисту лучше идентифицировать, локализовывать и сообщать о проблемах, связанных с внешним видом и функциональностью сайта.
  • Работа с системами управления: Опыт работы с системами управления багами (например, Jira, Redmine), управления знаниями (Confluence, Wiki) и управления тест-кейсами (TestRail, Zephyr, TestLink).
  • Методологии разработки ПО: Понимание основных методологий разработки ПО, таких как Waterfall, Scrum и Kanban, и умение адаптировать тестирование под каждую из них.
  • Клиент-серверная архитектура: Понимание принципов работы клиент-серверных систем, что необходимо для тестирования взаимодействий между клиентской и серверной частями приложений.
  • Операционные системы: Знание принципов работы различных операционных систем, что помогает в тестировании приложений в разных средах.

Персональные качества и навыки

  • Аналитические способности: Способность анализировать сложные системы, выявлять неочевидные связи и ошибки.
  • Внимание к деталям: Тщательное исследование каждого аспекта программы на предмет потенциальных отклонений от ожидаемых результатов.
  • Коммуникативные навыки: Эффективное общение с членами команды, включая разработчиков, проектных менеджеров и стейкхолдеров, для уточнения требований и обсуждения результатов тестирования.

Пример из практики: Специалист по контролю качества ПО работал в проекте по созданию веб-платформы для электронной коммерции. Одна из его задач — тестирование RESTful API. Оно обеспечивало интеграцию с внешними платежными системами.
Используя инструменты Postman и автоматизированные сценарии на Python, специалист провёл серию стресс-тестов для оценки устойчивости и производительности API при высоких нагрузках.
Результаты помогли выявить критические уязвимости в обработке запросов. Устранение этих багов повысило безопасность программного продукта.

Мануальщики и автотестеры

Тестировщиков принято разделять на мануальных и автоматических (автотестеров). Первые вручную проверяют функционал, идентифицируя ошибки через пользовательский интерфейс и другие виды взаимодействия, которые не могут быть автоматизированы.
Автотестеры занимаются разработкой и поддержкой инструментов автоматизации, выполняют тестовые сценарии без непосредственного участия человека. Это включает написание скриптов и использование специализированных инструментов для автоматизации тестирования интерфейсов, API и системных компонентов. Они используют языки программирования, такие как Python, Java, или Ruby, чтобы создать масштабируемые и повторно используемые тестовые среды.

На практике многие тестировщики сочетают обе эти роли, особенно в малых и средних проектах, где специалист может одновременно заниматься и мануальным тестированием, и разработкой автоматизированных тестов. Кратко перечислим дополнительные роли специалистов по тестированию:

  • Security-тестировщики специализируются на идентификации уязвимостей в безопасности ПО, проведении аудитов и проверке соблюдения стандартов безопасности.
  • BI-тестеры (Business Intelligence) анализируют данные и работают с системами, которые обрабатывают большие объемы данных, обеспечивая точность и целостность данных в отчетах и аналитике.
  • Performance-тестировщики занимаются оценкой производительности и масштабируемости систем, измеряя время отклика и скорость обработки при различных нагрузках.
  • Usability-тестеры фокусируются на оценке удобства использования интерфейсов, привлекательности продукта для конечного пользователя, а также на тестировании пользовательского опыта (UX).

Большинство современных тестировщиков должны обладать навыками программирования, поскольку автоматизация играет ключевую роль в эффективности и скорости тестирования в крупных проектах. Знание основ программирования не только расширяет возможности мануального тестировщика, но и открывает двери для перехода в автоматизацию или другие более специализированные роли в области тестирования.

Минимальные требования к кандидатам на должность тестировщика

Ниже приведен список минимальных требований для начинающих инженеров по контролю качества ПО, которые помогут вам ориентироваться в этом направлении, если вы только начинаете свой путь или ищете подходящие курсы тестировщиков.

Минимальные требования к кандидатам включают:

  • Знание тестовых методологий: Владение основными методами и подходами в тестировании, такими как ручное тестирование и основы автоматизации.
  • Использование инструментов тестирования: Опыт работы с популярными инструментами, такими как JIRA для управления багами и тест-кейсами, а также основы работы с Selenium или аналогичными инструментами для автоматизации тестирования.
инструмента для автоматизации тестирования Selenium IDE

Скриншот инструмента для автоматизации тестирования Selenium IDE

  • Понимание жизненного цикла разработки ПО: Знакомство с процессами разработки и тестирования ПО помогает в эффективной интеграции в рабочий процесс.
  • Основы SQL: Умение составлять простые запросы к базам данных для проверки данных, хранящихся в системе.
  • Тестирование API: Знания о том, как тестировать API, включая понимание запросов, ответов и статусов HTTP.
интерфейс программы Postman для тестирования API

Скриншот демонстрирует интерфейс программы Postman — инструмента для тестирования API

  • Аналитические навыки: Способность анализировать требования к программному обеспечению и определять потенциальные точки отказа.
  • Основы программирования: Понимание базовых принципов разработки и умение читать код — важные навыки для любого тестировщика.

Эти требования обеспечивают базовую подготовку, которая нужна для успешного начала карьеры в контроле качества ПО. Наличие этих навыков и знаний позволит новым специалистам быстро адаптироваться в профессии и эффективно справляться с возникающими задачами.

Карьерный рост инженеров по тестированию

Каждый шаг в карьере инженера по тестированию несет в себе новые вызовы и возможности для развития. От начинающего специалиста до управленца, карьерный путь обещает разнообразие задач и постоянный профессиональный рост. Освоение этого маршрута требует не только технических навыков, но и стратегического видения карьеры.

Карьерная лестница специалиста включает:

Начальный уровень (Junior)

  • Задачи: Выполнение базовых тестов, составление отчетов о найденных багах, изучение спецификаций продукта
  • Навыки: Основы программирования, использование инструментов для ручного тестирования, понимание жизненного цикла разработки ПО.

Средний уровень (Middle)

  • Задачи: Автоматизация тестов, разработка сценариев, активное участие в планировании тестирования.
  • Навыки: Продвинутое владение инструментами автоматизации, начальные навыки работы с базами данных, понимание API.

Высокий уровень (Senior)

  • Задачи: Оптимизация процессов тестирования, наставничество младших специалистов, участие в архитектуре проекта.
  • Навыки: Глубокие знания, способность вести проекты, разработка комплексных стратегий поиска багов.

Руководящие позиции (Lead/Manager)

  • Задачи: Управление отделом, координация между командами, оптимизация ресурсов.
  • Навыки: Лидерские качества, умение строить коммуникацию на всех уровнях, стратегическое планирование.

Стратегии для развития и продвижения по карьерной лестнице:

  • Постоянное обучение: Технологии не стоят на месте, поэтому постоянное обновление знаний — ключ к успеху.
  • Нетворкинг: Участие в профессиональных сообществах и конференциях расширяет горизонты и открывает новые возможности.
  • Наставничество: Обучение младших коллег не только помогает им расти, но и укрепляет ваши собственные знания.

Этапы карьерного роста в профессии специалиста тестирования ПО могут варьироваться в зависимости от компании, но ключевые компетенции и навыки на каждом этапе остаются стабильными. Планируя свой путь, уделяйте внимание как накоплению технического опыта, так и развитию лидерских качеств.

Какие зарплаты у тестировщиков ПО

Заработная плата инженера по тестированию зависит от ряда ключевых факторов: уровня квалификации, опыта работы, владения специализированными технологиями и региона расположения компании. Образовательные курсы и сертификации значительно повышают ваш профессиональный статус и, как следствие, могут существенно увеличить уровень дохода. В инфографике представлен диапазон зарплат на основе данных hh.ru, career.habr.com.

Средняя зарплата
140 000 ₽
43k
92k
140 000 ₽
231k
322k

Плюсы и минусы профессии

Как и любая другая профессия работа manual тестировщика имеет свои плюсы и минусы. Понимание этих аспектов поможет вам решить, подходит ли вам этот путь.

Плюсы профессии тестера:

  • Востребованность на рынке труда: Специалисты по тестированию всегда нужны в IT-индустрии.
  • Возможности для карьерного роста: От начальных позиций до управленческих ролей.
  • Высокий уровень зарплаты: Особенно с ростом опыта и компетенций.
  • Гибкость рабочего графика: Многие компании предлагают удалённую работу и гибкий график. У хорошего тестера всегда есть возможность искать проекты на фрилансе.
  • Разнообразие задач: Тестирование различных приложений и систем делает работу многообразной.

Минусы профессии:

  • Высокая ответственность: От качества работы инженера зависит успех всего проекта.
  • Постоянное обновление знаний: Необходимость следить за новыми технологиями и методиками тестирования.
  • Психологическая нагрузка: Возможен стресс из-за строгих дедлайнов и высоких требований. Тестеру важно иметь хорошую работоспособность.
  • Монотонность задач: Рутинное выполнение тест-кейсов может быть утомительным.
  • Взаимодействие с другими отделами: Необходимость постоянного общения может быть изматывающей для интровертов.

Таким образом, профессия предлагает широкие возможности для развития и хороший заработок, однако требует постоянного самосовершенствования и умения работать в условиях строгих дедлайнов.

Как стать специалистом по тестированию

Для начала карьеры в сфере контроля качества ПО не обязательно иметь обширный багаж технических знаний и навыков. Многие успешные специалисты начинали свой путь с базовых понятий и наращивали скиллы, работая над реальными проектами. Важно начать с понимания основ программирования и тестирования, таких как создание и выполнение тест-кейсов и управление багами.

Сфера тестирования ПО динамично развивается, по данным компании Gartner, спрос на квалифицированных тестировщиков продолжает расти. Профессиональные курсы и сертификации, такие как ISTQB (International Software Testing Qualifications Board), предоставляют не только теоретические знания, но и практические навыки, необходимые для успешной работы.

Кроме того, многие компании, такие как Google и Microsoft, предлагают свои образовательные программы, которые включают не только курсы по тестированию, но и по программированию, управлению проектами и системному анализу. Эти программы позволяют не просто изучить новую профессию, но и глубже понять технологические процессы в IT.

Для тех, кто ищет путь в мир тестирования, следующий раздел статьи предложит обзор образовательных курсов, которые помогут подготовиться к этой роли. Вы сможете освоить все необходимое для успешного старта в тестировании.

Несколько советов для соискателей на должность инженера по тестированию

Вот несколько ценных советов, которые помогут соискателям на должность инженера по тестированию выделиться и успешно пройти процесс отбора:

  • Тщательно изучите требования вакансии: Перед отправкой резюме убедитесь, что ваши навыки соответствуют требованиям работодателя. Подчеркните опыт работы с багами и созданием тест-кейсов, если это требуется.
  • Оформите портфолио: Включите примеры тестовых сценариев и отчетов об ошибках, чтобы продемонстрировать вашу способность к детальному анализу и систематическому подходу.
  • Продемонстрируйте soft skills: обозначьте свою способность к командной работе и умение работать в условиях строгих дедлайнов, это важно для работы в IT.
  • Расширяйте профессиональные знания: Постоянно обновляйте свои знания через курсы и сертификации, такие как ISTQB, что укажет на ваше стремление к профессиональному росту.
  • Используйте различные платформы для поиска работы: Разместите свое резюме на таких платформах, как hh.ru и career.habr.com в России, а также на международных сайтах вроде LinkedIn и Indeed для доступа к большему числу вакансий.

Эти советы помогут не только найти желаемую позицию, но и продемонстрировать ваш профессионализм и готовность к новым вызовам в сфере тестирования программного обеспечения.

Список рекомендуемых книг для начинающих тестировщиков

Первые шаги в профессии ручного тестировщика зачастую бывают насыщенными и сложными. Однако правильно подобранные книги могут существенно облегчить этот путь, предоставляя необходимые знания и практические советы. Основываясь на личном опыте, могу сказать, что начальный период обучения требует особого внимания к выбору литературы. Вот список книг, которые, по моему мнению, будут полезны начинающим специалистам в тестировании.

  • «Software Testing» by Ron Patton — Основы тестирования ПО, доступное объяснение основных концепций.
  • «Testing Computer Software» by Cem Kaner, Jack Falk, Hung Q. Nguyen — Классическое руководство по методикам тестирования.
  • «Agile Testing: A Practical Guide for Testers and Agile Teams» by Lisa Crispin, Janet Gregory — Идеально для понимания агильных методологий.
  • «Test Driven Development: By Example» by Kent Beck — Введение в разработку через тестирование.
  • «Exploratory Software Testing: Tips, Tricks, Tours, and Techniques to Guide Test Design» by James A. Whittaker — Разработка тестовых стратегий через исследовательское тестирование.
  • «The Art of Software Testing» by Glenford J. Myers, Corey Sandler, Tom Badgett — Обширное руководство по различным аспектам тестирования.
  • «How Google Tests Software» by James A. Whittaker, Jason Arbon, Jeff Carollo — Уникальный взгляд на процессы тестирования в одной из ведущих технологических компаний.
  • «Lessons Learned in Software Testing: A Context-Driven Approach» by Cem Kaner, James Bach, Bret Pettichord — Сборник советов и методик.
  • «Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation» by Jez Humble, David Farley — Понимание процессов непрерывной интеграции и доставки.
  • «A Practitioner’s Guide to Software Test Design» by Lee Copeland — Подробное руководство по проектированию тестов.

Эти книги помогут вам не только освоить основы, но и расширить представление о продвинутых методах и подходах в тестировании. Помните, что активное обучение и желание развиваться — ваш лучший инструмент на пути к мастерству в профессии. Учитесь, практикуйтесь и не бойтесь экспериментировать!

Резюме

В заключение статьи подведем итоги основных моментов:

  • Суть профессии: тестеры гарантируют качество и надежность программных продуктов, находя и устраняя баги.
  • Основные задачи: написание тест-кейсов, разработка тест-планов, выполнение и документация тестов.
  • Необходимые навыки: знание языков программирования (Java, Python, JavaScript), понимание работы сетей, баз данных (SQL) и инструментов тестирования (Selenium, Jenkins).
  • Карьерный рост: от начинающего мануального тестировщика до управленческих позиций с возможностями для профессионального и личностного развития.

Часто задаваемые вопросы

Чем тестирование ПО отличается от других работ по контролю качества?
Тестирование ПО отличается от других работ по контролю качества тем, что оно сосредоточено на проверке функциональности и производительности программного обеспечения перед его выпуском. Тестировщики ПО анализируют программные продукты, чтобы выявить ошибки и убедиться, что они соответствуют техническим требованиям и потребностям пользователя. В то время как другие области контроля качества могут касаться производства, сборки или операционных процессов, тестирование ПО сфокусировано на цифровых продуктах.
Какие существуют специализации в тестировании программного обеспечения?
В тестировании программного обеспечения существуют различные специализации:
  • Функциональное тестирование - проверка соответствия функций программы техническим требованиям.
  • Тестирование производительности - оценка скорости и эффективности ПО.
  • Автоматизированное тестирование - использование скриптов и программ для автоматизации процесса тестирования.
  • Тестирование безопасности - идентификация уязвимостей в безопасности ПО.
Что такое Agile-тестирование?
Agile-тестирование — это подход к тестированию, который встроен в рамки Agile-разработки программного обеспечения. Это предполагает непрерывное и итеративное тестирование продукта на каждом этапе его разработки. Agile-тестирование требует тесного сотрудничества между тестировщиками и разработчиками и фокусируется на гибкости и адаптации к изменениям в требованиях или функциях продукта.
Каким образом тестировщики ПО взаимодействуют с разработчиками?
Тестировщики ПО тесно сотрудничают с разработчиками для обеспечения качества конечного продукта. Это включает в себя обсуждение требований к ПО, совместную разработку тестовых планов, а также обмен информацией о найденных ошибках и предложениях по улучшению. Тестировщики часто работают в Agile командах, что способствует более быстрой и эффективной разработке ПО.
Каким образом тестировщики ПО повышают качество ПО?
Тестировщики ПО повышают качество ПО, выявляя и документируя ошибки, проверяя соответствие функциональности и производительности заявленным требованиям. Они также помогают в оптимизации пользовательского интерфейса и улучшении пользовательского опыта, что влияет на общее восприятие продукта пользователями.
Как востребована профессия тестировщика на рынке труда?
Профессия тестировщика на рынке труда очень востребована, особенно в связи с ростом IT-отрасли и цифровизацией бизнес-процессов. Компании стремятся обеспечить высокое качество своих программных продуктов, что делает роль тестировщиков критически важной.
Как я могу оценить свои шансы стать тестировщиком программного обеспечения?
Для оценки шансов стать тестировщиком ПО, рассмотрите следующие аспекты:
  • Технические навыки и знание языков программирования.
  • Умение логически мыслить и находить неочевидные решения.
  • Образовательный фон и курсы по тестированию ПО.
Также полезно начать с участия в проектах с открытым исходным кодом или проходить стажировки, чтобы набраться опыта и показать свои способности потенциальным работодателям.
Какие инструменты и технологии наиболее популярны в тестировании программного обеспечения?
Среди наиболее популярных инструментов и технологий в тестировании ПО выделяются:
  • Selenium - для автоматизированного тестирования веб-приложений.
  • JIRA - для управления проектами и отслеживания ошибок.
  • Postman - для тестирования API.
  • LoadRunner - для тестирования производительности.
Где тестировщики могут найти работу?
Тестировщики могут найти работу в IT-компаниях, стартапах, а также в компаниях, которые активно используют IT-технологии в своих бизнес-процессах. Вакансии часто доступны на профессиональных платформах и специализированных сайтах по поиску работы в области IT.
Как проходит собеседование на должность тестировщика?
Собеседование на должность тестировщика обычно включает технические вопросы, задачи на логику и понимание процессов тестирования, а также практические задания, например, написание тест-кейсов или использование конкретных инструментов тестирования. Кандидатам могут быть предложены вопросы на понимание основ программирования и алгоритмов, если это соответствует требованиям вакансии.
Какие инструменты и ресурсы будут полезны для начинающего тестировщика?
Для начинающих тестировщиков полезными ресурсами являются:
  • Онлайн-курсы по тестированию ПО, например, на платформах как Udemy или Coursera.
  • Форумы и сообщества, такие как Stack Overflow и GitHub, где можно задавать вопросы и обмениваться знаниями.
  • Книги по тестированию ПО, такие как ""Testing Computer Software"" by Cem Kaner и ""Agile Testing"" by Lisa Crispin.
Какие существуют альтернативы профессии тестировщика?
Альтернативами профессии тестировщика могут быть работа аналитика данных, менеджера по продукту, или разработчика ПО. Эти роли также требуют технической компетенции и понимания процессов разработки и тестирования программного обеспечения.
Кем можно работать, если знаешь методологии тестирования?
Зная методологии тестирования, можно работать не только тестировщиком, но и QA инженером, менеджером по качеству или даже продуктовым менеджером, особенно если комбинировать эти знания с управленческими или аналитическими навыками.
Можно ли стать тестировщиком с нуля?
Стать тестировщиком с нуля вполне возможно, если вы готовы учиться и активно практиковаться. Начните с изучения основ программирования и ПО, пройдите специализированные курсы и получите практический опыт через стажировки или участие в проектах с открытым исходным кодом.
Что лучше выбрать - автоматизированное или ручное тестирование?
Выбор между автоматизированным и ручным тестированием зависит от ваших интересов и типа проектов, над которыми вы работаете. Автоматизация подходит для крупных проектов с повторяющимися задачами, тогда как ручное тестирование часто используется для комплексной проверки новых или уникальных функций.
Как развивать свои навыки тестировщика?
Для развития навыков тестировщика важно регулярно обновлять знания о новых инструментах и методологиях, посещать профессиональные тренинги, участвовать в вебинарах и конференциях. Практический опыт, например, работа над реальными проектами или участие в открытых проектах, также играет ключевую роль в обучении. Обмен знаниями с коллегами и активное участие в профессиональных сообществах поможет вам оставаться в курсе последних трендов и лучших практик.
Как искусственный интеллект влияет на работу тестировщиков ПО?
Искусственный интеллект влияет на работу тестировщиков ПО, предоставляя новые инструменты для автоматизации тестирования и анализа данных. AI может помочь в определении и приоритизации тестовых сценариев, обнаружении сложных паттернов в данных, которые могут указывать на потенциальные ошибки, и в значительном ускорении процесса тестирования. Тестировщики должны адаптироваться к этим изменениям, изучая новые технологии и интегрируя их в свою работу для повышения эффективности и качества тестирования.
Другие интересные профессии
Категории курсов
Отзывы о школах