Не так давно в нашем блоге рассказывалось об освоении тестирования через REST API. Я же хочу поделиться опытом тестирования SOAP, меня зовут Юлия Багрий и я расскажу про «старшего брата» REST.
Не так давно в нашем блоге рассказывалось об освоении тестирования через REST API. Я же хочу поделиться опытом тестирования SOAP, меня зовут Юлия Багрий и я расскажу про «старшего брата» REST.
Когда мы говорим о тестировании программного обеспечения, первое, что приходит в голову большинству людей, — это поиск и исправление ошибок. Но на самом деле QA (Quality Assurance) — это гораздо больше, чем просто «охота на баги».
Тестирование программного обеспечения (ПО) является неотъемлемой частью разработки, обеспечивающей качество и надежность продукта. На практике используются два основных подхода: ручное тестирование и автоматическое. Каждый из них имеет свои уникальные преимущества, а их выбор зависит от целей проекта, бюджета и временных рамок.
Архитектура ПО имеет ключевое значение для успеха IT-проекта. Она определяет его структуру, дизайн и удобство программной системы в целом. Как выбрать правильную архитектуру ПО, чтобы выпускать продукты быстро и качественно? И, что немаловажно, делать их гибкими для дальнейших изменений без дополнительных вложений? Ответы найдете в нашей статье.
\n","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Более подробно про XML можно узнать на w3schools или codenet (по-русски). Обязательно обратите внимание на описание namespaces (метод разрешения конфликтов при описании элементов в XML) – в SOAP их использование необходимо.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"XSD"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
При работе всегда удобно иметь стандартизированное описание возможных XML-документов и проверять их на корректность заполнения. Для этого существует XML Schema Definition (или сокращенно XSD). Две главные фичи XSD для тестировщика – это описание типов данных и наложение ограничений на возможные значения. Например, элемент из предыдущего примера можно сделать необязательным для заполнения и ограничить его размер 255 символами с помощью XSD:
"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"...\n
XSD – это сила и мощь. Чем подробнее описан XSD, тем меньше головной боли доставит вам тестирование сервиса.
","subline1":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
С помощью выстроенной схемы сервис сам сможет валидировать полученные данные и возвращать пользователю ошибку. Таким образом, у вас отпадает необходимость тестировать «любимые» классы эквивалентности для форматов заполнения полей (конечно, при условии подробного и корректного описания XSD, а также реализации проверки запроса на соответствие схеме на сервере). Следовательно, первым делом при тестировании SOAP вы должны проверить документацию – XSD. Довольно часто встречаются ошибки в XSD в виде некорректно прописанных ограничений или случайно закравшихся кириллических символов. Подробнее прочитать про XSD можно опять же на w3schools и codenet (по-русски).
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"WSDL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Web Services Description Language (WSDL) – это язык на основе XML, который используется для описания веб-сервисов. В WSDL-документе содержится информация о местонахождении сервиса и доступных методах (операциях); для каждого метода определяются параметры отправляемого и получаемого сообщения. Обратите внимание на то, что XSD может быть «встроен» внутрь WSDL-документа (например, у Yandex Speller API).
"}},{"type":"quote","cover":false,"hidden":false,"anchor":"","data":{"text":"
WSDL-документ – это «капелька магии» в мире SOAP. Его можно сгенерировать из классов для сервера, а уже из него можно создать классы для клиента. Главное – не забывать проверять адекватность и доступность WSDL-документа для пользователей.
","subline1":""}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Протокол SOAP"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
У «героя» нашей статьи есть две основные версии протокола: 1.1 и 1.2. Для начинающего тестировщика различия между этими версиями не так принципиальны. Важно лишь знать, какую версию использует ваш сервис (в некоторых случаях применяются сразу обе версии, и тогда объем тестирования возрастает). SOAP задает формат сообщений, которыми обмениваются клиент и сервер, в нем же описываются подробности обработки приложениями конкретных фрагментов сообщений. Например, определенные элементы в заголовке позволяют создавать приложения, в которых сообщения сначала проходят через несколько промежуточных «станций», а только потом достигают конечного получателя.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Пример запроса checkText через Yandex Speller API:
"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"
И полученный ответ:
"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"ошибка\n
Прочитать о формате SOAP сообщений можно на w3schools.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Расширения SOAP"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В работе вам также могут встретиться различные «расширения» SOAP – стандарты типа WS-*. Одним из самых распространенных является WS-Security позволяющий работать с шифрованием и электронными подписями. Нередко вместе с ним применяется WS-Policy, с помощью которого можно управлять правами на использование вашего сервиса.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Пример использования WS-Security:
"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"
Все эти расширения – достаточно сложные конструкции, используемые далеко не в каждом SOAP-сервисе; их подробное изучение на начальном этапе освоения тестирования SOAP вряд ли будет актуально.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Инструменты"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Как вы уже поняли, SOAP – дело серьезное, для работы с ним нужно знать теорию и многочисленные стандарты. На практике такая сложность привела бы к весьма ощутимым трудозатратам (например, нужно было бы каждый раз смотреть схему в блокнотике и слать запросы curl-ом). Поэтому были созданы инструменты, облегчающие работу с SOAP.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Редакторы XML / XSD"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Хороший тестировщик начинает тестирование еще на стадии написания документации, поэтому для проверки схем удобно использовать специальные редакторы. Два самых известных – Oxygen (кроссплатформенный) и Altova (только для Windows); оба они являются платными. Это очень мощные программы, которыми активно пользуются аналитики при описании сервисов.
"}},{"type":"quote","cover":false,"hidden":false,"anchor":"","data":{"text":"
В моей практике полезными оказались три фичи редакторов: визуализация XSD, генерация XML на основе XSD и валидация XML по XSD.
","subline1":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
1. Визуализация XSD нужна для наглядного представления схемы, позволяющего быстро вычленить обязательные элементы и атрибуты, а также существующие ограничения. Например, для запроса CheckTextRequest обязательным является элемент text, а необязательными – все три атрибута (при этом у атрибута options установлено значение по умолчанию – ноль).
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Визуализация необходима в том случае, когда типов и ограничений в схеме много. Если вам нужна только она, и вы не хотите платить за специальные редакторы, то можно рассмотреть бесплатные альтернативы (например, JDeveloper).
"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"625616f4-080a-56fe-96c7-9eb26ebf0256","width":391,"height":284,"size":17885,"type":"png","color":"efeee8","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABgUJ/8QAIxAAAgEDAgcBAAAAAAAAAAAAAQIDAAQRBVEGEhMUITJCsf/EABcBAQADAAAAAAAAAAAAAAAAAAMAAQL/xAAaEQEBAAMBAQAAAAAAAAAAAAABAAIDMREz/9oADAMBAAIRAxEAPwDSbX9VS6nsZLR2WPnOWaNlY4GfVlzQb8X0l1J4yqE5iQ7qPymORsQ47ZkLlGKntScg489SOpj9Cp5QrS4uDawkzyEmNfo7Ur2wX//Z"}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
2. Генерация XML на основе XSD полезна тогда, когда вы хотите увидеть корректный пример сообщения. Я пользуюсь ей для того, чтобы быстро поэкспериментировать с возможным заполнением сообщения и проверить нюансы работы ограничений.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
3. После использования фичи из пункта 2 полезно провести валидацию XML по XSD – то есть проверить сообщение на корректность. Вместе фичи 2 и 3 позволяют отлавливать хитрые дефекты в XSD еще тогда, когда сам сервис находится в разработке.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Инструмент тестирования – SoapUI"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Тестирование SOAP практически всегда подразумевает использование SoapUI. Прочитать про использование этого инструмента можно в разных источниках (источник 1, источник 2), но эффективнее всего будет ознакомиться тут.
"}},{"type":"media","cover":true,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"800fc7bf-e33a-542c-8b70-357c800a8e16","width":1280,"height":720,"size":342828,"type":"png","color":"337789","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABwQG/8QAJBAAAgIABQMFAAAAAAAAAAAAAQIDBAAFBxEhBhIiE0FCYXH/xAAYAQADAQEAAAAAAAAAAAAAAAADBQYEB//EACMRAAECBQMFAAAAAAAAAAAAAAEAAgMEESEiBRJBExZRkaH/2gAMAwEAAhEDEQA/AMnlGtFrMK7wtaqSOV8Zq0rhCCoJI9RQSRvyRuPvFy6cqCAFxbttgc19bcgj4gK5qb1ULc4i1W6nKCRgpEp2I34+WFXWjcvViNLkKWl2+gp9RJZa2Y0I60jRK9LyVCVB/dsHm8XinhA0jOC/dfJHbAdx498YingX/9k="}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Я выделяю 8 условных уровней владения SoapUI:
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 1 – умею отправлять запросы"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Научитесь создавать проект на основе WSDL. SoapUI может сгенерировать все необходимые запросы для вас; вам останется лишь проверить правильность их заполнения и нажать кнопочку «Send». После выработки навыков создания корректных запросов вы должны овладеть искусством формирования некорректных запросов, вызывающих появление ошибок.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 2 – умею делать Test Suites и Test Cases"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Начните делать мини-автотесты. Тест-комплекты и тест-кейсы позволяют создавать сценарии тестирования API, подготавливать данные для запросов и автоматически проверять полученный ответ на соответствие ожидаемому. На первых порах их можно использовать просто как коллекции запросов. Например, если вы завели дефект и хотите быстро проверить его после фикса, можно выделить отдельный тест-комплект конкретно под запросы-дефекты.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 3 – умею писать Assertions"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
После освоения тест-кейсов вам будет полезно научиться делать их автоматически проверяемыми. После этого вам уже не нужно будет искать «глазами» информацию об ответе: при наличии автоматической проверки кейсы будут помечаться зеленым (если проверка пройдена) или красным (если не пройдена). SoapUI предоставляет большой набор возможных проверок (assertions), но самые удобные и простые – это Contains и Not Contains. С их помощью можно проверить факт наличия конкретного текста в полученном ответе. Эти проверки также поддерживают поиск с помощью регулярных выражений.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 4 – использую XPath и/или XQuery в Assertions"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Для тех, кто немного знаком с автоматизацией тестирования UI с помощью Selenium, язык XPath – знакомая вещь. Грубо говоря, XPath позволяет искать элементы в XML-документе. XQuery – похожая технология, которая может использовать XPath внутри себя; этот язык гораздо мощнее, он напоминает SQL. Оба эти языка можно использовать в Assertions. Проверки с их помощью получаются более прицельными и стабильными, поэтому ваши кейсы будут пользоваться большим доверием.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 5 – умею писать сложные тесты с помощью специальных шагов"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В тест-кейсах может содержаться не только один запрос, но и несколько (к примеру, когда вы хотите эмулировать стандартный сценарий работы пользователя «создать сущность» → «экспортировать сущность»). Между запросами могут находиться другие специальные шаги, например:
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["Properties и Property Transfer (помогают переиспользовать данные и передавать их между запросами);","JDBC Request (используется для получения данных из базы данных);","Conditional Goto (позволяет сделать разветвления или циклы в тест-кейсе);","Run TestCase (помогает вынести какие-то типовые запросы в отдельные тест-кейсы и вызывать их там, где нужно)."],"type":"UL"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 6 – использую скрипты на Groovy"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
SoapUI позволяет писать скрипты на Groovy в различных местах. Простейший случай – это генерация данных в самом запросе с помощью вставок ${=}. Я постоянно пользуюсь такими вставками:
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["${=new Date().format(«yyyy-MM-dd’T’HH:mm:ss»)} – для вставки текущей даты и времени в необходимом формате;","${=java.util.UUID.randomUUID()} – для вставки корректно сформированного случайного GUID."],"type":"UL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Полноценные скрипты можно использовать в качестве шагов в кейсах и проверках. В какой-то момент вы обнаружите, что сразу несколько специальных шагов из пятого уровня можно заменить одним скриптом.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 7 – использую MockServices"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
SoapUI на основе WSDL может генерировать Mock-объекты. Mock-объект – это простейшая симуляция сервиса. С помощью «моков» можно начать писать и отлаживать тест-кейсы еще до того, как сервис реально будет доступен для тестирования. Также их можно использовать в качестве «заглушек» для временно недоступных сервисов.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 8 – бог SoapUI"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Вы знаете разницу между платной и бесплатной версиями SoapUI и используете SoapUI API в коде. Вы используете плагины и запускаете выполнение кейсов через командную строку и/или CI. Ваши тест-кейсы просты и легко поддерживаются. В общем, вы «съели собаку» на этом инструменте. Я бы с радостью пообщалась с тем, кто освоил SoapUI на таком уровне. Если вы являетесь таковым – отпишитесь в комментариях!
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Тестирование с помощью языков программирования"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В какой-то момент у вас может возникнуть мысль, что проще писать тесты не в SoapUI, а просто на языках программирования. Это нормально. Будучи UI-инструментом, SoapUI имеет свои недостатки, которые в лучшем случае решаются приобретением платной версии, а в худшем – «костылями» и большими затратами времени на поддержку тестов. Для работы с протоколом SOAP в языках программирования существуют специальные библиотеки. Так, в Java можно использовать Axis2 (подробные примеры доступны в серии статей на IBM developerWorks), в Python – библиотеки suds либо zeep, в Groovy – библиотеку groovy-wslite.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Приведу пример того, как выглядит запрос к YandexSpeller API, выполненный с помощью groovy-wslite:
"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import wslite.soap.*\ndef client = new SOAPClient('http://speller.yandex.net/services/spellservice?WSDL')\ndef response = client.send(SOAPAction: 'http://speller.yandex.net/services/spellservice/checkText') {\nbody {\nCheckTextRequest('lang': 'ru', 'xmlns':'http://speller.yandex.net/services/spellservice') {\ntext('ошипка')\n}\n}\n}\nassert 'ошибка' == response.CheckTextResponse.SpellResult.error.s.text()\nassert '1' == response.CheckTextResponse.SpellResult.error.@code.text()","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Насколько я знаю, высокоуровневых фреймворков (по типу Rest-assured) для тестирования SOAP пока не существует, но появился интересный инструмент – karate. С его помощью можно описывать кейсы для тестирования SOAP и REST в виде сценариев по типу Cucumber / Gherkin. Для многих тестировщиков обращение к karate будет идеальным решением, ведь такие сценарии по сложности написания и поддержки кейсов будут лежать где-то посередине между использованием SoapUI и написанием собственного фреймворка для тестирования SOAP.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Заключение"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Вряд ли вам когда-либо захочется тестировать SOAP просто так, для себя (как могло бы получиться с REST-ом). Это тяжеловесный протокол, который используется в серьезных корпоративных решениях. Но его тяжеловесность одновременно является подарком тестировщику: все используемые технологии стандартизированы, имеются качественные инструменты для работы. От тестировщика требуется лишь желание их изучить и использовать.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Давайте соберем воедино тот самый чек-лист необходимых навыков для тестировщика. Итак, если вы только начинаете тестировать SOAP сервисы, вам нужно знать и уметь использовать:
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["XML.","XSD.","WSDL.","SOAP.","Редакторы XML / XSD (на уровне визуализации XSD).","SoapUI на уровне 1."],"type":"UL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Как видите, основной упор приходится на изучение стандартов, в SoapUI достаточно просто уметь выполнять запросы. По мере погружения в тестирование SOAP перед вам будут возникать задачи, которые потребуют уже более серьезных навыков и знаний, но не стоит пытаться изучить всё и сразу. Гораздо важнее последовательность в повышении уровня сложности выполняемых задач. Следуя этой рекомендации, в один прекрасный момент вы поймете, что стали хорошим специалистом в этой области!
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Изучайте! Удачи!
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
#soap #api #restapi #qualitylab #softwaretesting #qa #тестирование #тестированиепо #партнерство #изучаем #qaengineer
"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":1,"reposts":0,"views":392,"hits":1783,"reads":null,"online":0},"dateFavorite":0,"hitsCount":1783,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":"Тестирование SOAP API, основы SOAP и WSDL, работа с XML и XSD, инструменты для тестирования, советы для тестировщиков и менеджеров.","url":"https://vc.ru/services/1924757-testirovanie-soap-api-osnovnye-principy-i-instrumenty","author":{"id":1894539,"name":"Лаборатория Качества","nickname":null,"description":"Тестируем сайты, ПО, приложения и другие IT-продукты на аутсорсинге. NDA. Контакты и подробности о нас: quality-lab.ru","uri":"","avatar":{"type":"image","data":{"uuid":"3672385d-5e78-50ad-9425-fd4867549300","width":2040,"height":2040,"size":2188090,"type":"png","color":"065e84","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQIAHAAcAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAwQGB//EACYQAAIBAgQFBQAAAAAAAAAAAAECAwQFABESIQYHIjFRExRCYXP/xAAYAQACAwAAAAAAAAAAAAAAAAAEBwACA//EAB8RAQACAQMFAAAAAAAAAAAAAAEAAwIEERITFCFBUf/aAAwDAQACEQMRAD8AyCzcvprlwnNxi92tlHCsjg+vqV9ajZU6dyfAPbDPy1HTtKwd4k69LldQ2uQEjffXE7hny/PBfNgHb4fIe61dUSaI1Mpp061i1nQrEDMhewJyGZ+hiZhyX3K0ZLWYr4j8M0ohjAlcAKPkfGMmE7s//9k="}},"cover":{"cover":{"type":"image","data":{"uuid":"0834afcd-a0e5-55d7-9800-d93ff34c512d","width":1473,"height":480,"size":93718,"type":"jpg","color":"dbeaf0","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAKAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABAMJ/8QAIBAAAgEEAgMBAAAAAAAAAAAAAQIRAAMEEgUxIVFhof/EABUBAQEAAAAAAAAAAAAAAAAAAAQF/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAECEf/aAAwDAQACEQMRAD8A0a4XBPEHK1yGyLjJDi+zOsiZ1nqhvk5CuwGMWAMA7Dz+0vYgsZMt2fdRNm2SSUUk/KQkTLrWf//Z"}},"cover_y":100},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3564532,"userId":1894539,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3564532"}],"lastModificationDate":1764914636,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":true,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":true,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":200396,"name":"Сервисы","description":"Новые сервисы, обновления инструментов, опыт использования и полезные приёмы.","uri":"/services","avatar":{"type":"image","data":{"uuid":"158fab2d-76c1-5ed8-898a-76ee48d4c795","width":1200,"height":1200,"size":99571,"type":"png","color":"7cdaea","hash":"08183848d81000","external_service":[]}},"cover":{"type":"image","data":{"uuid":"c3fe3abb-6808-527e-9eb1-2b6bb92ea400","width":3840,"height":1120,"size":19502,"type":"png","color":"7cdcec","hash":"","external_service":[]}},"lastModificationDate":1688995401,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":false,"isDisabledAd":false,"nickname":"services","isUnsubscribable":true,"badge":null,"badgeId":null,"isDonationsEnabled":false,"isOnline":false,"isPlus":false,"isUnverifiedBlogForCompanyWithoutPro":false,"isVerified":false,"isRemovedByUserRequest":false,"isFrozen":false,"isPro":false,"type":2,"subtype":"community"},"reactions":{"counters":[{"id":2,"count":1}],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":1899984,"customUri":"kachestvo-po-testirovanie-kak-put-k-idealnomu-produktu","subsiteId":4260670,"title":"Качество ПО: почему тестирование — это больше, чем поиск багов?","date":1743498678,"dateModified":1743498678,"blocks":[{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"
Когда мы говорим о тестировании программного обеспечения, первое, что приходит в голову большинству людей, — это поиск и исправление ошибок. Но на самом деле QA (Quality Assurance) — это гораздо больше, чем просто «охота на баги».
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"🔍 Что такое качество?"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Качество ПО — это не только отсутствие ошибок, но и: ✅ Удобство для пользователя (UX) ✅ Производительность и стабильность ✅ Безопасность данных ✅ Соответствие бизнес-требованиямДругими словами, идеальное приложение — это не просто «не падающее» приложение, а продукт, который действительно решает задачи пользователя.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"🔧 Виды тестирования, которые помогают добиться качества"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Чтобы создать надежный продукт, тестировщики применяют разные подходы: 📌 Функциональное тестирование — проверяет, соответствует ли продукт заявленным требованиям. 📌 Нефункциональное тестирование — оценивает производительность, безопасность, удобство интерфейса. 📌 Автоматизированное тестирование — ускоряет процесс проверки, снижает влияние человеческого фактора. 📌 Тестирование пользовательского опыта — помогает понять, насколько продукт интуитивен.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"🚀 Почему важно внедрять тестирование на ранних этапах?"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Чем раньше обнаружена проблема, тем дешевле и быстрее ее исправить. Например, ошибка, найденная на этапе проектирования, может занять несколько минут на исправление. А вот баг, замеченный после выпуска, может привести к финансовым и репутационным потерям.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"🛠 QA-инженер — это не просто тестировщик"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Современные QA-специалисты работают не только с тест-кейсами. Они участвуют в проектировании продукта, автоматизируют тестирование, анализируют данные и взаимодействуют с разработчиками, чтобы делать ПО лучше.💡 Вывод: тестирование — это не «ломание» продукта, а его улучшение. Хороший QA не просто находит ошибки, а предотвращает их появление.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
#QA #Тестирование #КачествоПО #Automation #SoftwareTesting
"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":0,"reposts":0,"views":1,"hits":9,"reads":null,"online":0},"dateFavorite":0,"hitsCount":9,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":"Качество ПО, тестирование, удобство пользователя, безопасность данных, виды тестирования, важность раннего тестирования, роль QA-инженера.","url":"https://vc.ru/id4260670/1899984-kachestvo-po-testirovanie-kak-put-k-idealnomu-produktu","author":{"id":4260670,"name":"Азати","nickname":null,"description":"Полный спектр ИТ-услуг для развития вашей компании","uri":"","avatar":{"type":"image","data":{"uuid":"46e0151e-91e2-5622-80ad-f0ed7a7bb2df","width":1080,"height":1080,"size":6881,"type":"png","color":"242424","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQIAHAAcAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAYJ/8QAIBAAAQQBBAMAAAAAAAAAAAAAAQADBQYRAgQSExQjMv/EABUBAQEAAAAAAAAAAAAAAAAAAAAC/8QAGBEBAQADAAAAAAAAAAAAAAAAAAIBERL/2gAMAwEAAhEDEQA/ANL7BYbJFWWDjIyn7mSit8XRJSLT2geBgDq9ZPJzlqyDj5Ayqmes6TVc42pFKhAQf//Z"}},"cover":{"cover":{"type":"image","data":{"uuid":"a13cacc6-05cc-5379-a208-95f2ca946481","width":1920,"height":768,"size":585518,"type":"jpg","color":"c4e3fb","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAACAYK/8QAIhABAQACAQQCAwEAAAAAAAAAAQIDBBEABQYhBzESIkGB/8QAFgEBAQEAAAAAAAAAAAAAAAAABwED/8QAKREAAQMBBgQHAAAAAAAAAAAAAQIDEQAEBQYhMXESE0FRIzJSYbHR8f/aAAwDAQACEQMRAD8A2R+G+Kdlj4ww9s1WG9PXmZPSs/hxwe/aP+cfX96cr0vK2s4oL7vEEvOST2PFoZ33jPrQbdt32K0YY5TZBW0gQNZSQPz6ii3veJdpnd25ybuhjudrYLx3t683FmWyoqWxmpeZqUEREOlVrE6EtNpKxKW0AyRMhIBmTOtEruGVqdcIaMFxZHhqORUSM5zypGfGeTI+Oo3aOucjVI/rP2L0fYsSkXkCEpB5moA77Ui4SUo3XBUojlDIk+ke9TO1p6lbOzVautVVnzVVVgxNVTkpapZVVVVeV9vVToNh8VisniVmfMep7mv/2Q=="}},"cover_y":82},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 4 декабря 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":6197957,"userId":4260670,"count":0,"shareImage":"https://api.vc.ru/achievements/share/6197957"}],"lastModificationDate":1764914636,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":true,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":4260670,"name":"Азати","nickname":null,"description":"Полный спектр ИТ-услуг для развития вашей компании","uri":"","avatar":{"type":"image","data":{"uuid":"46e0151e-91e2-5622-80ad-f0ed7a7bb2df","width":1080,"height":1080,"size":6881,"type":"png","color":"242424","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQIAHAAcAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAYJ/8QAIBAAAQQBBAMAAAAAAAAAAAAAAQADBQYRAgQSExQjMv/EABUBAQEAAAAAAAAAAAAAAAAAAAAC/8QAGBEBAQADAAAAAAAAAAAAAAAAAAIBERL/2gAMAwEAAhEDEQA/ANL7BYbJFWWDjIyn7mSit8XRJSLT2geBgDq9ZPJzlqyDj5Ayqmes6TVc42pFKhAQf//Z"}},"cover":{"cover":{"type":"image","data":{"uuid":"a13cacc6-05cc-5379-a208-95f2ca946481","width":1920,"height":768,"size":585518,"type":"jpg","color":"c4e3fb","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAACAYK/8QAIhABAQACAQQCAwEAAAAAAAAAAQIDBBEABQYhBzESIkGB/8QAFgEBAQEAAAAAAAAAAAAAAAAABwED/8QAKREAAQMBBgQHAAAAAAAAAAAAAQIDEQAEBQYhMXESE0FRIzJSYbHR8f/aAAwDAQACEQMRAD8A2R+G+Kdlj4ww9s1WG9PXmZPSs/hxwe/aP+cfX96cr0vK2s4oL7vEEvOST2PFoZ33jPrQbdt32K0YY5TZBW0gQNZSQPz6ii3veJdpnd25ybuhjudrYLx3t683FmWyoqWxmpeZqUEREOlVrE6EtNpKxKW0AyRMhIBmTOtEruGVqdcIaMFxZHhqORUSM5zypGfGeTI+Oo3aOucjVI/rP2L0fYsSkXkCEpB5moA77Ui4SUo3XBUojlDIk+ke9TO1p6lbOzVautVVnzVVVgxNVTkpapZVVVVeV9vVToNh8VisniVmfMep7mv/2Q=="}},"cover_y":82},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 4 декабря 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":6197957,"userId":4260670,"count":0,"shareImage":"https://api.vc.ru/achievements/share/6197957"}],"lastModificationDate":1764914636,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":true,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":1604503,"customUri":null,"subsiteId":3488736,"title":"⚖️ Сравнение подходов к тестированию ПО: ручное или автоматическое тестирование","date":1729602478,"dateModified":1729602478,"blocks":[{"type":"media","cover":true,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"d28a044f-26b2-5d1a-9d8a-c544f995ccc5","width":940,"height":788,"size":174992,"type":"png","color":"d9d5e8","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABwYI/8QAJBAAAgIBAwQCAwAAAAAAAAAAAQIDBAUAETEGEhMhBwhBUXH/xAAXAQADAQAAAAAAAAAAAAAAAAAEBQYB/8QAJhEAAQMCBAYDAAAAAAAAAAAAAQACEQMFBBIhQRMiMVFxgRQzwf/aAAwDAQACEQMRAD8A1gcBe6k6jtyUsrg7OPqQCOStWspJJCwZh5HYexwRtsPa886Fw91vPHDHUG8MGfs5hPiAQAdGke1or1GVcweMkRGUzPmfz2pG18bxG1MVsXXHkbZlZdm98jVZ80pkMeYSH9UsfQXDXbYo1xPPVpeWURL3yd1eNz3Hbc7szMd/yxPJOpG3NaLbQeBqWiTudB17qZsnNa6Dz1LWydzpumCXp7p9pXZsHjySxJJrJ+/5osPd3TYEr//Z"}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Тестирование программного обеспечения (ПО) является неотъемлемой частью разработки, обеспечивающей качество и надежность продукта. На практике используются два основных подхода: ручное тестирование и автоматическое. Каждый из них имеет свои уникальные преимущества, а их выбор зависит от целей проекта, бюджета и временных рамок.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
1. Ручное тестирование — это процесс, при котором тестировщики выполняют тестовые сценарии вручную, взаимодействуя с приложением так, как это будет делать конечный пользователь.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Преимущества ручного тестирования:
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
🍀 Интуиция и гибкость: тестировщик способен выявлять ошибки и аномалии, которые могут быть упущены автоматизированными скриптами. Он использует свою интуицию и опыт для проверки неожиданных сценариев.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
🍀 Тестирование пользовательского интерфейса (UI): для проверки внешнего вида и удобства использования интерфейса ручное тестирование зачастую эффективнее, так как тестировщик оценивает визуальные элементы, удобство навигации и общий пользовательский опыт.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
🍀 Адаптивность: ручное тестирование подходит для тестирования сложных и нестандартных сценариев, где автоматизация может быть сложной и дорогостоящей.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Недостатки ручного тестирования:
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
🍁 Большие временные затраты: проверка большого количества сценариев вручную требует значительных временных ресурсов.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
🍁 Субъективность: результаты ручного тестирования могут варьироваться в зависимости от тестировщика, что снижает повторяемость тестов и может привести к ошибкам.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
🍁 Ограниченная масштабируемость: ручное тестирование менее эффективно при необходимости многократного повторения одних и тех же тестов, особенно в рамках регрессионного тестирования.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
2. Автоматическое тестирование заключается в использовании специализированных инструментов и скриптов для выполнения тестов. Оно может выполняться быстро и многократно без участия человека, что особенно важно при регулярных обновлениях продукта и постоянных проверках.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Преимущества автоматического тестирования:
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
🍀 Скорость и эффективность: автоматизация позволяет выполнять тесты намного быстрее, особенно в случае большого количества тестов.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
🍀 Повторяемость: автоматические тесты всегда выполняются одинаково, что обеспечивает стабильность и исключает человеческий фактор.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
🍀 Экономия ресурсов в долгосрочной перспективе: начальная настройка автоматических тестов требует значительных усилий, в дальнейшем это приводит к экономии времени и снижению затрат на проверку.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Недостатки автоматического тестирования:
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
🍁 Высокая стоимость начальной разработки: настройка и поддержка автоматических тестов требует времени и ресурсов, особенно для сложных проектов.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
🍁 Ограниченность сценариев: автоматические тесты хорошо справляются с повторяющимися задачами, но они менее эффективны при тестировании творческих, непредсказуемых или сложных пользовательских сценариев.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
🍁 Ограниченная адаптивность: если приложение быстро меняется, скрипты могут устаревать, что требует их регулярного обновления.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
⁉ Когда выбирать ручное тестирование?
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Ручное тестирование оправдано в следующих случаях: UI и UX тестирование / краткосрочные проекты / исследовательское тестирование / малые проекты.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
⁉ Когда выбирать автоматическое тестирование?
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Проект долгосрочный и имеет множество повторяющихся проверок / регрессионное тестирование / CI/CD.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
❇ Комбинированный подход сочетает достоинства обоих методов. Например, ручное тестирование может использоваться для исследования новых функций, а автоматизация для регрессионных тестов и рутинных проверок. Такой подход обеспечивает максимальную гибкость и оптимизирует ресурсы команды.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
💎 Выбор между ручным и автоматическим тестированием зависит от множества факторов: от сложности проекта до доступного бюджета и временных рамок. В идеале, использование гибридного подхода позволяет обеспечить качественное тестирование, оптимизируя затраты и время разработки продукта.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
#ручноетестирование #автоматизация #qa #качество #ui #ux #тестирование_по #технологии #разработкапо #тестовые #сценарии #it #softwaretesting #engineering #devops #кодинг #программирование
"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":0,"reposts":0,"views":23,"hits":15,"reads":null,"online":0},"dateFavorite":0,"hitsCount":15,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/dev/1604503-sravnenie-podhodov-k-testirovaniyu-po-ruchnoe-ili-avtomaticheskoe-testirovanie","author":{"id":3488736,"name":"Дивергент","nickname":null,"description":"Разработка инновационных digital-продуктов силами наших профессиональных дивергентов","uri":"","avatar":{"type":"image","data":{"uuid":"5e92e490-8c7a-574c-b66d-d76dff6db5bd","width":1080,"height":1080,"size":622977,"type":"png","color":"a187b5","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABQIH/8QAIBAAAgEEAgMBAAAAAAAAAAAAAQIDAAQFESExQVKBkf/EABcBAAMBAAAAAAAAAAAAAAAAAAMFBgT/xAAgEQABBAICAwEAAAAAAAAAAAABAAIEEQMhEjFCUXGB/9oADAMBAAIRAxEAPwDVslNjJ8lHPY2VuyZFjO6PAW5Y7KhgDrXI8a1VzEhxpGN+Qt13djX4qUQGSQ7Lrj32NfULMmNjmkjSGdlViAw1yN99UrrEPEqQdYcadpF291dRwPHHcyqjdqrkA/KVMc4A0UxeTxUhm9j+0fkfawUv/9k="}},"cover":{"cover":{"type":"image","data":{"uuid":"a6dd87a5-4956-550e-bc26-a8e00d5bf5e2","width":1920,"height":768,"size":547202,"type":"png","color":"303e40","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABQYH/8QAIBAAAgICAgIDAAAAAAAAAAAAAQIDEQQFAGEGEwcSIf/EABcBAQADAAAAAAAAAAAAAAAAAAUDBAb/xAAkEQACAgIABAcAAAAAAAAAAAABAgADBBEFISIxQVFSYZGh8P/aAAwDAQACEQMRAD8AzvfeN/Fngxkx4dVvZ3jFR7Cf1FZXq6X7KK7oWO+M1o2NpimvciVc3FaisOykKex85IJs4pUWR9vMGcBiPeBRPV8QHErPWfmDimojZ/fUB3ey2Objqubn5OQqsxAllZwD1Z4S9juvUdxbOusdAjMSB4b5QcAUPwchmfPef//Z"}},"cover_y":35},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":1991643,"userId":3488736,"count":0,"shareImage":"https://api.vc.ru/achievements/share/1991643"}],"lastModificationDate":1764914636,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":true,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":235819,"name":"Разработка","description":"Сообщество разработчиков: публикации о личном опыте, выдающиеся приёмы при решении рутинных задач, полезные материалы для профессионального роста.","uri":"/dev","avatar":{"type":"image","data":{"uuid":"fef5b5fb-e488-5b7f-8445-e3a26a910b44","width":1200,"height":1200,"size":7757,"type":"png","color":"343434","hash":"04042b2b1c1000","external_service":[]}},"cover":{"type":"image","data":{"uuid":"2a214cc5-35cc-58ca-bc07-fc1c892d2101","width":960,"height":280,"size":177,"type":"png","color":"343434","hash":"","external_service":[]}},"lastModificationDate":1642411346,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":false,"isDisabledAd":false,"nickname":"dev","isUnsubscribable":true,"badge":null,"badgeId":null,"isDonationsEnabled":false,"isOnline":false,"isPlus":false,"isUnverifiedBlogForCompanyWithoutPro":false,"isVerified":false,"isRemovedByUserRequest":false,"isFrozen":false,"isPro":false,"type":2,"subtype":"community"},"reactions":{"counters":[],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":841887,"customUri":null,"subsiteId":1272116,"title":"Как выбрать правильную архитектуру ПО при создании IT-проекта: понятие, виды, тестирование, польза для бизнеса","date":1695031695,"dateModified":1695031695,"blocks":[{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"
Архитектура ПО имеет ключевое значение для успеха IT-проекта. Она определяет его структуру, дизайн и удобство программной системы в целом. Как выбрать правильную архитектуру ПО, чтобы выпускать продукты быстро и качественно? И, что немаловажно, делать их гибкими для дальнейших изменений без дополнительных вложений? Ответы найдете в нашей статье.
"}},{"type":"media","cover":true,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"68a06f87-2961-50b0-b49e-64e3cb8678db","width":1920,"height":1200,"size":31376,"type":"png","color":"a4a9fa","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAACAMH/8QAJRAAAgIBAgUFAQAAAAAAAAAAAQIDBQQABgcREhMhCAkUMWFx/8QAGAEAAgMAAAAAAAAAAAAAAAAABAcAAwX/xAAjEQABBAEDBAMAAAAAAAAAAAABAAIDIREEMkEFByIxYaHh/9oADAMBAAIRAxEAPwC3B6r9rrJ4abVyt6xbClvMegwWuhM+Sr/NMKd5ZD1ACTrD+QQvPWo1kT2Ybji6r8+1T5ZWG33pY4KbgvLG+2texY1LZZc2ZXQxRqUjxZHLRKpLcyAhUD+aY8Hb6DURNmEu4A0KsZq/SHdqJgSAxC6vjjaizHZFLBvBI8/WlIjknNp2Ngm1qZEzshVWvxwAJWAA7a/und02aUaOEBx2t5+Aov/Z"}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Задумываться о выборе архитектуры ПО будущего проекта стоит не только техническим специалистам, но и владельцам бизнеса. Зачем? На первый взгляд, абсолютно незачем. Но чтобы создать приложение, которое будут скачивать миллионы пользователей, или сайт с неменьшей проходимостью, нужно хоть немного понимать, как система работает изнутри. Чтобы в спешке не нанимать дополнительный штат тестировщиков и разработчиков, и, самое главное, не переписывать приложение или сайт с нуля, когда они находятся на стадии выпуска или уже вышли в массы, если внезапно потребуется другая структура. А также вовремя решать проблему при малейших сбоях системы.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
ОПРЕДЕЛЕНИЕ АРХИТЕКТУРЫ ПО
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Если вы посмотрите различные источники, то увидите, что четкого определения, что же такое архитектура программного обеспечения (ПО) — нет. Только ее признаки и роль, которую она играет при создании цифровых продуктов. И роль эта довольно существенная. Качественная архитектура прежде всего облегчает обслуживание ПО в дальнейшем: внесение в него изменений и дополнений; включает в себя организацию структурных компонентов и их взаимодействие. На этой основе можно дать такое определение:
"}},{"type":"quote","cover":false,"hidden":false,"anchor":"","data":{"text":"
Архитектура ПО — набор модулей и компонентов системы с описанием того, как они должны разрабатываться и связей между ними. Своеобразный каркас, с которым удобно работать как первоначальным разработчикам, так и тем, кто будет с ним взаимодействовать в будущем.
","subline1":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Что представляют из себя архитектурные модули?
"}},{"type":"quote","cover":false,"hidden":false,"anchor":"","data":{"text":"
Модуль — это независимый и самодостаточный элемент, который облегчает внесение изменений в ПО и расширение его функциональности, разделяя систему на более мелкие и управляемые части для одновременной разработки и тестирования.
","subline1":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Наглядно архитектуру ПО можно изобразить так:
"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"7d36d78c-f402-5995-964d-bf0a9a232534","width":1920,"height":1200,"size":35115,"type":"png","color":"040405","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAACAMH/8QAIRAAAQQCAwADAQAAAAAAAAAAAQIDBAUGEQASIQcTFmH/xAAXAQEBAQEAAAAAAAAAAAAAAAAABAEF/8QAIBEAAQQBBAMAAAAAAAAAAAAAAQACAxEhBDFBURITof/aAAwDAQACEQMRAD8ABNlhmOZh8uPUt5as4pY2Vo4mXXKrUVkWCr7ld2+7zvVhKUA67DwgDR50BHp3zj3O8QTmhtnPPSmjdIKAFju/uyrc/Bq4FxOg1t5jMmJHkutR3/0UJX2tpUQlew5o7AB2PPeJotO2RwiNts0exwVSstyabMscis51hLelSX5bq3XnnCtbiio7KlH0n+nkBJJspskViWQXzOK0zLN3PQ2ivjpSlMlYCQG06AG/BzEX/9k="}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
ЗАДАЧИ АРХИТЕКТУРЫ ПО
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Главная идея архитектуры заключается в том, чтобы снизить сложность системы за счет разграничения полномочий и создания четкой структуры, с которой будет удобно работать программистам. От того, насколько хорошо она будет реализована, зависит простота обслуживания ПО, легкость внесения изменений и поддержки функционала в будущем. К задачам архитектуры также можно отнести:
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["повышение продуктивности процессов: автоматизация действий, сокращение времени на их выполнение;","снижение затрат на разработку и дальнейшее внесение дополнений;
","уменьшение рисков при взаимодействии с сайтом или приложением;
","удобство использования продукта для разработчиков и конечных потребителей;
","сокращение стоимости поддержки функционала.
"],"type":"UL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
ВИДЫ АРХИТЕКТУРЫ ПО
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Видов архитектурных решений немало. Каждый из них подходит под определенный тип проекта в зависимости от целей, масштабов и требуемых функций:
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["клиент-серверная;","монолитная;
","микросервисная;
","бессерверная;
","управляемая событием (EDA);
","структурированная;
","трехуровневая;
","поиск-ориентированная и т.д.
"],"type":"UL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
К самым популярным и часто используемым при создании IT-продуктов можно отнести следующие виды архитектур:
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Клиент-серверная архитектура представляет собой способ организации ПО, при котором задачи распределены между клиентами и серверами. Пользователь сайта или приложения запрашивает данные у сервера, а тот, в свою очередь, предоставляет сведения из запроса.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Монолитная архитектура — традиционная модель ПО, при которой все составляющие системы, в том числе бизнес-логика, пользовательский интерфейс, уровни обработки данных, тесно взаимосвязаны друг с другом, представляют собой единое целое.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Микросервисная архитектура — метод разработки ПО, при котором сложное приложение делится на более мелкие независимые части. Создается система связанных между собой блоков-сервисов.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
От чего стоит отталкиваться при выборе архитектуры ПО:
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
1. Предусматривается ли клиент-серверное взаимодействие?
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
2. Насколько сложная логика приложения планируется?
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
3. Есть ли необходимость в делении сервиса на несколько мелких частей для удобства разработки?
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Очевидно, что если мы хотим построить шалаш и переночевать в лесу, то заливка фундамента, привоз кирпичей и кровли — лишние действия. Аналогично и здесь. При создании простого сайта-визитки или информационного ресурса не стоит сильно задумываться о паттернах проектирования архитектуры. Бизнес-логики тут особо не будет. Так же, как и при разработке внутреннего приложения для компании, где работают 100 человек, будет странным решением реализовывать балансировщик нагрузок и разворачивать множество серверов, используемых при больших нагрузках и наплыве пользователей.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Выбрать вариант, подходящий под ваш бизнес и непосредственно оказываемые услуги, поможет простая методика. Она состоит из нескольких пунктов, расписав которые будет легче определиться, куда стоит двигаться дальше:
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["размер проекта;","сложность реализации;
","бюджет;
","опыт и технологии команды;
","обслуживание;
","интеграции;
","безопасность;
","требования;
","производительность;
","скорость внедрения.
"],"type":"UL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
ПРАВИЛЬНАЯ АРХИТЕКТУРА ПО
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Грамотно спроектированная архитектура предусматривает такие факторы, как производительность, масштабируемость, безопасность. В обратной ситуации недостатки всплывают уже на стадии QA. Непродуманное проектирование с “бонусом”, например, отсутствия автоматизированных тестов, может в разы увеличить время на проверку системы. В таких случаях даже при небольших изменениях кода невозможно предсказать, где и что может сломаться. Приходится пересматривать абсолютно все.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Критерии правильной архитектуры ПО:
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["гибкость;","эффективность;
","тестируемость;
","расширяемость;
","масштабируемость;
","сопровождаемость кода;
","производительность;
","отказоустойчивость.
"],"type":"UL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Как понять, что с архитектурой приложения что-то не так?
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["время на починку дефектов превышает время на разработку новых фичей;","правка одного дефекта порождает десять новых.
"],"type":"UL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
ТЕСТИРОВАНИЕ АРХИТЕКТУРЫ ПО
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Выявить главные недостатки при проектировании архитектуры, как было сказано выше, можно уже на стадии QA. В данном случае тестирование помогает:
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["обнаружить возможные дефекты на ранних этапах разработки, что существенно сокращает время и средства на устранение ошибок;","убедиться, что архитектура ПО соответствует требованиям и пожеланиям заказчика;
","выявить возможности по оптимизации архитектуры для улучшения производительности и надежности ПО.
"],"type":"UL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
МЕТОДИКА ТЕСТИРОВАНИЯ АРХИТЕКТУРЫ ПО
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
1. Определите цели архитектуры и проведите ее ревью: соответствие логики построения и сопутствующих характеристик требованиям и практикам.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
2. Проведите анализ модели архитектуры для выявления возможных проблем и определения возможностей для оптимизации.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
3. Подготовьте прототип приложения или сайта: определите тип продукта, стили и технологии, архитектуру развертывания, чтобы посмотреть жизнеспособность дизайна в реальных условиях и получить обратную связь от разработчиков и пользователей.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
4. Составьте ключевые сценарии: тестирование архитектуры при помощи сценариев, приближенных к реальности, помогает увидеть сложности при взаимодействии различных компонентов ПО.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Проверить, насколько быстро работает приложение, и как оно справляется с различными видами нагрузок, как правило, позволяет performance тестирование.
"}},{"type":"quote","cover":false,"hidden":false,"anchor":"","data":{"text":"
Performance тестирование: QA-инженер пишет скрипты (программу), которые отправляют запросы на сервер под видом реальных пользователей.
","subline1":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Что нам дает этот способ проверки? Выявляются предельные нагрузки, с которыми справляется ПО, его точка отказа и скорость восстановления, быстрота ответов от сервера. Выявив проблему, команда разработки начинает процесс ее локализации и устранения.
"}},{"type":"delimiter","cover":false,"hidden":false,"anchor":"","data":{"type":"default"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Выбор той или иной архитектуры ПО необходимо оценивать с учетом уникальных требований и ограничений вашего проекта. Если вы понимаете, что логика системы сложна, и приложением или сайтом будут пользоваться клиенты по всему земному шару, то уже на ранних этапах стоит задуматься, какие шаги приведут к максимальной пользе и сократят вероятность негативного результата. Определиться самостоятельно бывает нелегко, наши специалисты готовы помочь вам с этим непростым решением, выбором оптимальной архитектуры и ее реализацией под нужды конкретного бизнеса.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
P.S. Новости из мира разработки и IT в целом в нашем ТГ-канале и на сайте Fusion Tech.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Читайте также:
"}},{"type":"osnovaEmbed","cover":false,"hidden":false,"anchor":"","data":{"osnovaEmbed":{"type":"osnovaEmbed","data":{"original_id":749120,"isNotAvailable":false,"title":"Вашему проекту тестировщик не нужен? О важности тестирования и кейсах компании","description":"Какая профессия в IT связана с большим количеством мифов и стереотипов? Вероятно, профессия тестировщика! Очень многие до сих пор задаются вопросом, а чем он занимается и можно ли обойтись на проекте без него? Забегая далеко вперед, ответим сразу: “Нет, нельзя!” И в этой статье расскажем почему, проследим его путь на проекте и развеем самые популярные мифы про эту профессию. Что ж, приступаем!","isEditorial":false,"image":{"type":"image","data":{"uuid":"098aa4e4-3869-5837-beea-42827bab7577","width":1920,"height":1200,"size":58930,"type":"png","color":"090a11","hash":"","external_service":[]}},"url":"https://vc.ru/life/749120-vashemu-proektu-testirovshik-ne-nuzhen-o-vazhnosti-testirovaniya-i-keisah-kompanii","blocks":[{"type":"media","cover":true,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"098aa4e4-3869-5837-beea-42827bab7577","width":1920,"height":1200,"size":58930,"type":"png","color":"090a11","hash":"","external_service":[]}}}]}},{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"
Какая профессия в IT связана с большим количеством мифов и стереотипов? Вероятно, профессия тестировщика! Очень многие до сих пор задаются вопросом, а чем он занимается и можно ли обойтись на проекте без него? Забегая далеко вперед, ответим сразу: “Нет, нельзя!” И в этой статье расскажем почему, проследим его путь на проекте и развеем самые популярные мифы про эту профессию. Что ж, приступаем!
"}}],"date":1688566379,"author":{"id":1272116,"name":"Fusion Tech","avatar":{"type":"image","data":{"uuid":"37086fce-6f04-5c26-8937-8c5a4a550cfa","width":500,"height":500,"size":2598,"type":"png","color":"040404","hash":"","external_service":[]}}},"subsite":{"id":199123,"name":"Личный опыт","avatar":{"type":"image","data":{"uuid":"68e0e807-2b43-55b9-9b76-b3f0f76f3d32","width":2400,"height":2400,"size":98919,"type":"jpg","color":"93dbd3","hash":"d0dc0c10303010","external_service":[]}}},"likes":0,"comments":0,"isBlur":false,"warningFromEditor":null,"warningFromEditorTitle":null}}}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
#it #digital #диджитал #разработка #по #программноеобеспечение #softwaretesting #fusiontech #архитектурапо #фьюжн #тестирование #qa
"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":2,"reposts":3,"views":325,"hits":361,"reads":null,"online":0},"dateFavorite":0,"hitsCount":361,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/dev/841887-kak-vybrat-pravilnuyu-arhitekturu-po-pri-sozdanii-it-proekta-ponyatie-vidy-testirovanie-polza-dlya-biznesa","author":{"id":1272116,"name":"Fusion Tech","nickname":null,"description":"Об опыте развития IT-компании, бизнес-процессах, кейсах и решениях. Веб/мобильная разработка, дизайн, аутстаффинг, аудит проектов: https://fusion-tech.ru/","uri":"","avatar":{"type":"image","data":{"uuid":"37086fce-6f04-5c26-8937-8c5a4a550cfa","width":500,"height":500,"size":2598,"type":"png","color":"040404","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"feff2fed-aa3e-54ca-8826-37887754012f","width":1920,"height":560,"size":73289,"type":"png","color":"040404","hash":"","external_service":[]}},"cover_y":0},"achievements":[{"title":"3 года на vc.ru","code":"registration_3_years","description":"Провёл 3 года вместе с vc.ru. Получена 16 августа 2025.","previewUuid":"d9d72ac5-bcb5-55e0-8c72-b99251e5cdd9","formats":{"glb":"https://static.vc.ru/achievements/shark.glb","usdz":"https://static.vc.ru/achievements/shark.usdz"},"viewData":{"contentColor":"#8E6F09","textMaxWidth":0.66796875,"textX":0.5205078125,"textY":0.341796875,"logoX":0.5205078125,"logoY":0.4609375,"logoXNoText":0.5,"logoYNoText":0.3662109375},"id":5551845,"userId":1272116,"count":0,"shareImage":"https://api.vc.ru/achievements/share/5551845"},{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":4176131,"userId":1272116,"count":0,"shareImage":"https://api.vc.ru/achievements/share/4176131"}],"lastModificationDate":1764914636,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":true,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":235819,"name":"Разработка","description":"Сообщество разработчиков: публикации о личном опыте, выдающиеся приёмы при решении рутинных задач, полезные материалы для профессионального роста.","uri":"/dev","avatar":{"type":"image","data":{"uuid":"fef5b5fb-e488-5b7f-8445-e3a26a910b44","width":1200,"height":1200,"size":7757,"type":"png","color":"343434","hash":"04042b2b1c1000","external_service":[]}},"cover":{"type":"image","data":{"uuid":"2a214cc5-35cc-58ca-bc07-fc1c892d2101","width":960,"height":280,"size":177,"type":"png","color":"343434","hash":"","external_service":[]}},"lastModificationDate":1642411346,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":false,"isDisabledAd":false,"nickname":"dev","isUnsubscribable":true,"badge":null,"badgeId":null,"isDonationsEnabled":false,"isOnline":false,"isPlus":false,"isUnverifiedBlogForCompanyWithoutPro":false,"isVerified":false,"isRemovedByUserRequest":false,"isFrozen":false,"isPro":false,"type":2,"subtype":"community"},"reactions":{"counters":[{"id":1,"count":7}],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}}],"ogTitle":null,"ogDescription":null,"isAnonymized":true}};