Откуда я приехал

Я зарабатываю на анализе требований и тестировании веб-сервисов. Итак, я тестировщик (некоторые называют меня BA или QA), который получает удовольствие от сценариев задач и создания инструментов для оптимизации работы и автоматизации всего, что имеет смысл автоматизировать.

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

Мой MacBook был моей инвестицией в более яркий рабочий день, но есть несколько инструментов, которые было бы интересно использовать в моей повседневной работе.

SOAP по-прежнему широко распространен в некоторых отраслях, и хотя простой HTTP/REST с данными JSON является отраслевым стандартом для (вероятно) большинства новых проектов, а GraphQL уже в пути, все еще есть новые и текущие проекты, реализующие сервисы SOAP.

Что передумало

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

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

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

SwiftUI был последним триггером

Когда Apple анонсировала SwiftUI, было ясно, что это откроет параллельную вселенную помимо AppKit и UIKit. Поддержка будет расти, но потребуются годы, чтобы достичь тех же результатов в SwiftUI, что и в более поздних версиях. Эти два фреймворка стали результатом десятилетий непрерывной разработки, поэтому я ожидал быстрых побед SwiftUI и некоторой прямой работы с его старшими братьями/сестрами. Я узнал о NSViewControllerRepresentable и NSViewRepresentable. Это был бы путь.

Что мне было нужно и чего не хватало

Моя простая идея состояла в том, чтобы создать SwiftUI ListView для определения наборов тестов, тестовых случаев и тестовых шагов. Эти тестовые шаги будут запросами SOAP и способом передачи данных с одного тестового шага на другой, подумайте о переменных. Кроме того, я хотел создать утверждения для ответов SOAP, чтобы автоматизировать проверку ответа. Ну, в конце концов, я тестер.

Я читал о нескольких инструментах для выполнения запросов URL и обработки ответов URL, и лично я нашел довольно простым использование класса Apples (NS)URLSession. Я заметил, что существуют популярные фреймворки, такие как AlamoFire и другие, которые помогают вам взаимодействовать с Networking API более удобным способом. Для тех, кому нужен простой способ запускать сетевые запросы и обрабатывать ошибки, я понимаю, почему многие полагаются на эти дополнительные уровни. Тем не менее, эти фреймворки должны взаимодействовать с базовыми библиотеками Apple. Они бы не предоставили мне расширенные возможности, они бы помогли мне с обработкой ошибок, но это не то, чего я хотел. Я хочу вернуть исходные ошибки тестеру, чтобы он отобразил результаты и подтвердил, ожидаемы они или нет.

Я искал поддержку XML/SOAP в экосистеме Apple (ObjectiveC Swift), в то время как есть базовая поддержка XML с XMLDocument, я не нашел необходимой поддержки пространств имен, проверки схемы, всеобъемлющего XPath 2, не говоря уже о поддержке MTOM. , с ограниченными финансовыми ресурсами. Мои поиски на Stackoverflow.com убедили меня, что я не первый, кто его искал. Я должен был взаимодействовать с C.

Я искал редакторы с подсветкой синтаксиса, чтобы облегчить редактирование запросов SOAP, выражений XPath, и я нашел интересные проекты на GitHub, но опять же, ничего — бесплатно — что соответствовало бы моим требованиям. Затем снова на WWDC 21 был анонсирован Textkit 2. См.: https://developer.apple.com/wwdc21/10061.

Вызов принят

Это был вызов, и я решил потратить свое свободное время на создание того, что я хотел. Это все на сегодня. Надеюсь, вам понравилось читать и следить за всей историей.