Тот кто тестирует программы

Тестировщик (инженер по тестированию, специалист по тестированию, ручной тестировщик, manual Test Engineer) — специалист, который занимается тестированием программного обеспечения с целью его проверки на соответствие требованиям. Кроме этого, целями тестирования являются оценка качества продукта и информирование команды о качестве. В задачи тестировщика входят:

  1. Анализ требований (собирается из документации — ТЗ, спецификации и из уст членов команды — например, менеджера и аналитика)
  2. Разработка тестовой документации (чек-листы, тест-кейсы, сьют-кейсы)
  3. Создание среды тестирования
  4. Выполнение тестов
  5. Документирование результатов тестирования (в том числе заведение баг-репортов)
Качество ПО оценивается тестировщиком по нескольким критериям:
  • Функциональность — продукт решает заявленную бизнес-задачу.
  • Надежность — продолжает работать в условиях нехватки ресурсов (например, мобильное приложение при низком заряде устройства).
  • Удобство использования (usability) — пользователь может достичь своей цели во время использования продукта максимально быстро и комфортно.
  • Эффективность — приложение расходует ресурсы оптимально (например, расход приложением оперативной памяти).
  • Сопровождаемость — можно без особых трудностей разобраться, как работает ПО, чтобы его поддерживать.
  • Переносимость — возможно ли перенести на другую платформу, использовать в новом окружении.

Круг обязанностей тестировщика

Чтобы сформировать более полное представление о том, чем конкретно занимаются специалисты по тестированию, давайте подробнее рассмотрим их задачи.

🤔 Тестировщик (QA) — кто это? Какие бывают типы тестирования?


Мы уже упомянули главные стадии тестирования, за прохождение которых ответственен тестировщик:

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

  • Анализ документации (например, в Confluence);
  • Анализ и тестирование требований по проекту;
  • Разработка и поддержка тестовой документации: написание чек-листов, тест-кейсов и сьют-кейсов, тест-планов;
  • Построение стратегии тестирования фич;
  • Управление подготовкой тестовых сред;
  • Поднятие сервисов для локального тестирования;
  • Функциональное и регрессионное тестирование приложений и интеграции с другими приложениями;
  • Тестирование исправления багов (регрессионное тестирование);
  • Тестирование новых фич;
  • Нагрузочные испытания обмена между оборудованием и ПО;
  • Анализ результатов тестирования;
  • Анализ причин возникновения ошибок для выявления места возникновения ошибки: фронтенд, бэкенд, смежные системы;
  • Анализ, заведение и валидация дефектов, оформление дефектов в багтрекинговой системе (например, в Jira);
  • Подготовка отчетной информации о статусе тестирования, участие во встречах по статусу разработки проекта.
  • Взаимодействие с командой (менеджер, архитектор, аналитик, разработчик, DevOps, поддержка пользователей);
  • Составление пользовательской документации для системы;
  • Поддержка тестовой документации в актуальном состоянии;
  • Работа с базами данных и другими инструментами для тестирования.

Soft Skills тестировщика

МИНУСЫ РАБОТЫ ТЕСТИРОВЩИКОМ. Кому эта работа НЕ подойдет?

  • Аналитическое мышление: обработка и структурирование большого объема информации, формирование причинно-следственных связей, поиск взаимосвязей между объектами, формулирование выводов.
  • Коммуникативные навыки, грамотное и ясное формулирование мыслей: аргументирование точки зрения, ясная постановка вопросов.
  • Организационные навыки: планирование задач и времени, непрерывный анализ процессов и их улучшение, оценка рисков.
  • Любопытство. Интерес, как все устроено.
  • Внимательность к деталям.
  • Желание сделать продукт лучше.

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

Этапы и виды тестирования

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

Модульное или юнит-тестирование (Unit Testing)

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

Интеграционное тестирование

В ходе интеграционного тестирования выполняют проверки того, насколько корректно взаимодействуют друг с другом отдельные компоненты. Такая необходимость возникает в том числе потому, что зачастую разные модули разрабатываются разными разработчиками параллельно. Интеграционное тестирование проводится с целью убедиться, что модули действуют как части целой системы, а не как отдельные компоненты.

Системное тестирование

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

Приемочное тестирование (User Acceptance Testing, UAT)

На этом последнем этапе продукт тестируется непосредственно конечными пользователями — заинтересованными сторонами с целью проверки, удовлетворяет ли продукт заявленным требованиям.

И еще пару слов об одних из самых распространенных видах тестирования.

Регрессионное тестирование

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

Читайте также:
Как закрыть программу на компьютере если она не закрывается через диспетчер задач

Дымовое тестирование (Smoke Testing)

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

Тестирование мобильных, веб-приложений и API

Тестировщики могут заниматься тестированием веб-приложений, мобильных приложений, тестированием API. Для каждого случая будут свои вспомогательные инструменты. Для проведения тестирования веб-приложений используются инструменты веб-разработчика в браузере (Devtools), Charles/Fiddles для работы с HTTP(S)-трафиком, пригодятся знания об HTTP и основы верстки.

Для мобильного тестирования в компаниях обычно содержится целый «парк» устройств разных производителей, моделей, размеров и разрешений экранов, с разными установленными на них ОС. В ситуациях, когда тестирование на реальном устройстве в силу каких-то причин провести не представляется возможным, пользуются приложением-эмулятором, например Android Studio, который позволяет создать устройства с различными характеристиками и имитировать необходимые действия и состояния.

Тестирование API относится к интеграционному виду тестирования (о котором рассказывали выше) и позволяет обнаружить баги в процессе взаимодействия разных систем. Также тестирование API может применяться, когда например серверная часть приложения уже готова, а клиент (фронт) еще в разработке. С помощью такого инструмента как Postman можно имитировать совершение запросов к серверу, как если бы это делал пользователь через пользовательский интерфейс, а также проверить, корректно ли взаимодействует сервер с базой данных. Также для тестирования API пригодятся знания о протоколе обмена данными SOAP, архитектурном стиле REST, форматах данных JSON и XML.

Однако ручное тестирование — это начало, основа. Следующим шагом после налаживания четких процессов ручного тестирования во многих компаниях становится автоматизация тестов. OTUS предлагает несколько курсов, которые помогут погрузиться в нюансы автоматизации тестирования:

  • Автоматизация тестирования на JavaScript
  • Автоматизация тестирования на Java
  • Автоматизация тестирования на Python

Также предлагаем ознакомиться с интересными статьями на тему тестирования ПО в блоге OTUS на Хабр:

  • A/B Тестирование: Основы
  • Качественное тестирование ПО
  • Тестирование скриншотами
  • Процесс автоматизированного тестирования за 10 шагов

Ознакомиться с вакансиями для тестировщиков можно на Jooble.​

Источник: otus.ru

Тестировщик: кто это, обязанности, зарплаты и как им стать в 2023 году. Обзор профессии.

Обучение

Автор Роман Семенцов На чтение 46 мин. Просмотров 790

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

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

Что делают тестировщики и чем занимаются?

Обязанности тестировщика на примере одной из вакансий:

  • функциональное
  • регрессионное
  • комплексное
  • автоматизированное
  • Ручное тестирование мобильных приложений на iOS и Android
  • Ручное тестирование веб-версии продукта
  • Разрабатывать и писать тест-кейсов
  • Сценарное тестирование, ad hoc тестирование
  • Составлять документации по работе сервиса
  • Вводить культуру тестирования в команде

Что должен знать и уметь тестировщик?

Требования к тестировщикам:

  • Ручное и автоматизированное тестирование веб и мобильных приложений
  • Применение техник тест-дизайна на практике
  • Приёмочное и регрессионное тестирование
  • Планирование и написание браузерных тестов на Java с нуля без подготовленной инфраструктуры, используя Selenium, JUnit
  • Составление баг-репортов
  • Знание основ Git, Java, SQL и вёрстки
  • Работа в баг-трекере Jira
  • Работа в Android Studio, Android SDK и SDK Manager
  • Работа с API
  • Навыки работы с метриками тестирования

Востребованность и зарплаты тестировщиков

На сайте поиска работы в данный момент открыто 8 383 вакансии, с каждым месяцем спрос на тестировщиков растет.

Количество вакансий с указанной зарплатой тестировщика по всей России:

  • от 90 000 руб. – 1 593
  • от 160 000 руб. – 909
  • от 235 000 руб. – 418
  • от 310 000 руб. – 163
  • от 385 000 руб. – 61

Вакансий с указанным уровнем дохода по Москве:

  • от 100 000 руб. – 659
  • от 170 000 руб. – 422
  • от 240 000 руб. – 238
  • от 315 000 руб. – 93
  • от 385 000 руб. – 34

Вакансий с указанным уровнем дохода по Санкт-Петербургу:

  • от 90 000 руб. – 251
  • от 150 000 руб. – 153
  • от 210 000 руб. – 75
  • от 275 000 руб. – 36
  • от 335 000 руб. – 14

Как стать тестировщиком и где учиться?

Варианты обучения для тестировщика с нуля:

  • Самостоятельное обучение – всевозможные видео на YouTube, книги, форумы, самоучители и т.д. Плюсы – дешево или очень недорого. Минусы – нет системности, самостоятельное обучение может оказаться неэффективным, полученные навыки могут оказаться невостребованными у работодателя;
  • Онлайн-обучение. Пройти курс можно на одной из образовательных платформ. Такие курсы рассчитаны на людей без особой подготовки, поэтому подойдут большинству людей. Обычно упор в онлайн-обучении делается на практику – это позволяет быстро пополнить портфолио и устроиться на работу сразу после обучения.

Ниже сделали обзор 15+ лучших онлайн-курсов.

15+ лучших курсов для обучения тестировщика: подробный обзор

1 место. Курс «Тестировщик» — Нетология

Стоимость: 65 760 ₽ или рассрочка на 24 месяца — 2 740 ₽ / мес

  • Освойте IT-профессию, для которой не требуется опыт и техническое образование
  • Станьте специалистом ручного и автоматизированного тестирования
  • Лучших выпускников пригласят на собеседование в Альфа-Банк
  • Формат обучения — Вебинары, видеолекции, практические задания
  • Документ — Диплом о профессиональной переподготовке
  • Уровень — С нуля
Читайте также:
Как отключить программу антивируса на компьютере

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

Спрос на тестировщиков очень высок — каждая команда разработки стремится выпускать качественный продукт без багов

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

Программа курса

Ручное тестирование веб-приложений

Начнём с азов проведения тестирования и введения в профессию. За 8 занятий вы познакомитесь с теориями тестирования, узнаете разницу между понятиями QA и тестированием и начнёте писать тестовые сценарии и заводить баги. На практике вы будете работать с различными программными продуктами, создавать под них тестовые сценарии в Zephyr и заводить баги на платформе JIRA, а также тестировать API.

32 часа практики

  • Введение в тестирование ПО. Методы и виды тестирования
  • Основы клиент-серверного взаимодействия, протокол HTTP, концепция DOM
  • Работа с DevTools браузера
  • Введение в SQL. Запросы SELECT, UPDATE, DELETE
  • Тестирование ПО. Многообразие тестирования
  • Артефакты тестирования
  • Инструменты тестирования
  • Жизненный цикл разработки ПО. Гибкие методологии разработки ПО
  • Курсовой проект: тестирование сайта крупной компании

Вёрстка сайта на HTML и CSS

Научитесь верстать сайты на HTML и CSS и вносить изменения в существующую вёрстку. По итогам модуля вы сможете самостоятельно сверстать лендинг.

  • 8 часов теории
  • 8 часов практики
  • Теги для вёрстки контента страницы
  • Теги для вёрстки структуры страницы
  • Теги для вёрстки форм
  • Селекторы CSS
  • Определение контекста элементов
  • Блочная модель
  • Позиционирование элементов
  • Оформление текста
  • Оформление декоративных элементов
  • Состояние интерактивных элементов

Git — система контроля версий

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

  • 4 часа теории
  • 9 часов практики
  • Предназначение системы контроля версий
  • Основные операции (фиксация и откат изменений, поиск, история)
  • Работа с сервисом GitHub
  • Ветки, слияние веток и разрешение конфликтов
  • Командная работа

Java для тестировщиков

В этом блоке начинаем работу с Java, одним из самых популярных языков программирования. Блок состоит из 16 занятий и включает в себя изучение основ языка, работу с объектно-ориентированным программированием, сборку Java проектов и использование инструментов тестирования. Вы изучите язык программирования именно в связке с задачами тестирования.

  • 15 часов теории
  • 75 часов практики
  • Введение в Java: JDK, JRE, JVM, IntelliJ IDEA
  • Программирование на Java: переменные, операторы, работа с отладчиком
  • Примитивные типы данных, условные операторы, выход за границы типов и погрешность вычислений
  • Testability, автотесты, введение в ООП: объекты и методы
  • Система сборки Maven, управление зависимостями, автотесты на JUnit5
  • Циклы, параметризованные тесты и аннотации
  • Выстраивание процесса непрерывной интеграции (CI): Github Actions. Покрытие кода с JaCoCo, статический анализ кода: CheckStyle, SpotBugs
  • Объектно-ориентированное программирование и проектирование
  • Объекты с внутренним состоянием, управление состоянием при тестировании
  • Композиция и зависимость объектов. Mockito при создании автотестов
  • Наследование и расширяемость систем. Проблемы наследования
  • Исключительные ситуации и их обработка. Тестирование исключений
  • Интерфейсы для организации малой связности. Обобщённое программирование (Generics)
  • Collections Framework. CRUD и тестирование систем, управляющих набором объектов

Английский язык для начинающих разработчиков

Бонус от EnglishDom

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

  • 3,5 часа теории
  • Лексика, без которой не обойтись
  • Как вести переписку на английском
  • Чтение документации и анализ требований
  • Программирование
  • Тестирование ПО
  • Стрессовые ситуации
  • Устранение неполадок
  • Работа и роли в команде
  • Поддерживаем любую беседу на английском
  • Собрания, презентации на высшем уровне

Вы уже освоили базовые навыки проведения тестирования и изучили программирование на Java. Самое время перейти к автоматизации тестирования, модуль включает 8 занятий. На практике вы будете писать Unit-тесты для готового Java-проекта, проводить UI-автоматизацию тест-кейсов, составлять и автоматизировать пользовательские сценарии, анализировать готовые результаты.

Для проведения практических заданий вы будете использовать виртуальные серверы. Это будут проекты по работе с:
— Docker
— SQL (MySQL и PostgreSQL) — напишете автотесты на контейнеризированные приложения, использующие СУБД;
— Report Portal — самостоятельно развернёте систему Report Portal внутри VDS с помощью Docker Compose и будете фиксировать в ней отчёты, полученные по результатам прогона тестов в GitHub Actions.

  • 10 часов теории
  • 50 часов практики
  • Основы автоматизации
  • Управление состоянием. Continuous Integration
  • Тестирование веб-интерфейсов. Selenium
  • Selenide
  • Patterns
  • Akita
  • Docker и Docker Compose
  • SQL
  • Репортинг: Report Portal
  • Приоритеты автоматизации

Карьера в тестировании

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

  • 2 часа теории
  • Тестировщик: задачи, работа в команде
  • Поиск работы: компания vs фриланс
  • Карьерная траектория: из студента в senior
  • Первое собеседование
  • Тренды в тестировании: за какими ресурсами следить
  • Резюме, сопроводительное письмо, портфолио
Читайте также:
Как отключить автоматическое обновление программ на Айфон

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

  • 48 часов практики

У вас есть три занятия, чтобы попробовать. Если передумаете учиться, скажите — и мы вернём вам всю сумму.

Достигнутые результаты

  • Подготовлен тестовый сценарий на веб-форму
  • Проведено UI-тестирование веб-формы и заполнен отчёт о дефектах
  • Разрешён конфликт версий кода веб-сайта на GitHub
  • Решено больше 40 задач на Java
  • Проведено unit-тестирование приложения
  • Разработаны автоматизированные тестовые сценарии для формы регистрации
  • Проведено тестирование Java-проекта с использованием Selenium Webdriver

Ключевые навыки

  • Использование актуальных теорий тестирования
  • Понимание жизненного цикла разработки программного обеспечения
  • Программирование на Java
  • Использование объектно-ориентированного программирования
  • Работа с системой контроль версий Git, платформой GitHub
  • Проведение unit-тестирования
  • Подготовка и проведение автоматизированных тестовых сценариев
  • Подготовка отчёта о тестировании, заведение дефектов
  • Работа в Selenium Webdriver

Инструменты, которые вы освоите

Java стабильно занимает первое место в индексе популярности языков программирования tiobe. Вы сможете использовать его для написания авто-тестов и в дальнейшем для разработки под любую платформу. Java — хороший язык для начала изучения программирования.

GitHub — крупнейший веб-сервис для совместной работы разработчиков над кодом и хостинга проектов. GitHub основан на системе контроля версий GIT.

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

Фреймворк (программная библиотека) для автоматизации действий веб-браузера. Самый популярный инструмент для тестирования веб-приложений, предоставляя авто-тестам доступ к браузеру.

Язык управления базами данных.

Платформа для автоматизации тестирования.

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

Программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации.

BDD-библиотека шагов для автоматизации тестирования. BDD — это методология разработки, основанная на описании поведения пользователя.

HTTP-клиент для тестирования веб-сайтов. С его помощью можно составлять и редактировать простые или сложные HTTP-запросы.

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

Веб-сервис, ускоряющий анализ результатов вашей автоматизации. Уменьшает стоимость создания и поддержания отчётности автоматизации тестирования

Источник: romansementsov.ru

Как попасть в разработку из тестирования

Тестировщик: перспективы развития

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

  • в аналитику;
  • проджект-менеджмент;
  • разработку ПО.

Выбор сферы зависит от ваших интересов и навыков. В аналитике и проджект-менеджменте важны soft skills: технический бэкграунд здесь поможет наладить контакт между бизнесом и командой разработчиков.

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

Миф: тестировщик ― будущий разработчик

Есть стереотип: тестировщик сначала занимается ручным тестированием, потом пишет автотесты на Python или Java, прокачивает навыки программирования, затем дорастает до разработчика и логично переходит на новую должность.

Это заблуждение. Тестировщик и разработчик ― разные профессии. Описанный выше сценарий — это переквалификация, а не повышение.

Если сравнивать тестировщика и человека, не знающего ничего о программировании, у первого действительно будет больше шансов перейти в разработку. Потому что тестировщик:

  • понимает процессы создания ПО;
  • обладает аналитическим складом ума;
  • возможно, владеет основами программирования.

В остальном ему также придётся много учиться и практиковаться в написании кода, работе с сетями и базами данных.

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

Эйчары: как относятся к экс-тестировщикам

Есть ли предубеждения или стереотипы об экс-тестировщиках у рекрутеров ― спросили у эксперта Центра карьеры Златы Арефьевой.

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

Но смежный опыт работы, особенно в сфере IT, ― всегда плюс. Перейти из тестирования в разработку легче, чем войти в IT c нуля, так как у вас уже есть хорошая база: понимание жизненного цикла ПО, этапов разработки и так далее.
Опыт работы с Python или Java тоже будет преимуществом, особенно если вы выбрали эти языки для дальнейшего развития. Но важно понимать: опыт написания автотестов ― ещё не опыт разработки. Рекрутер не будет готов сразу рассмотреть вас на позицию junior или выше без опыта самостоятельной разработки приложений».

Разработчик: как понять, что это ваше

Самостоятельная практика. Есть масса возможностей: вебинары, книги, онлайн-тренажёры, создание собственных проектов. Попрактикуйтесь в написании кода, придумайте продукт с нуля и примерьте на себя ежедневные обязанности программиста.

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

Источник: gb.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru