Прочетете как да използвате Charles за отстраняване на грешки и тестване на вашето приложение. Този лесен и мощен инструмент може да бъде във вашите ръце и да ви спести време.

Приложенията нарастват в обем всеки ден и става все по-предизвикателно да ги тествате. И идва момент, когато трябва да създадем инструменти за отстраняване на грешки или вече нямаме достатъчно стандартни. В тази статия ще разгледаме използването на Charles за отстраняване на грешки в мрежови заявки в iOS приложения и някои от неговите допълнителни функции. Тази статия е подходяща и за тестване на macOS приложения.

Charles ви позволява да управлявате и наблюдавате заявки от вашето приложение към отдалечен или дори локален сървър. Така че няма нужда да използваме или дори да създаваме нашите инструменти за наблюдение на заявки. И ако не направим това, можем да изразходваме спестеното време в разработване на нова функционалност.

Запознайте се с Чарлз

Първо, трябва да изтеглим и инсталираме Charles от връзката. При първото стартиране Charles ще поиска разрешение за автоматично конфигуриране на мрежовите настройки. Ако не стане, натиснете Command-Shift-P, за да накарате Чарлз да поиска това разрешение отново.

Всеки път, когато стартирате Charles, той създава сесия, в която ще работите. Можете да запазите и отворите отново всяка сесия, което може да ви помогне да споделите с колеги.

В областта на списъка със заявки можете да видите дърво със събития. Всеки възел представлява уебсайта или хоста, който посещавате. Щракнете върху едно от записаните събития и ще видите подробностите, погледнете разделите в областта с подробности и информацията, която показват. Фигура 1 показва стандартен изглед при отваряне с вече избрана HTTP заявка. Отделете време, за да проучите зоната със списък със заявки и как работи.

Забележка: Ако нещо не работи за вас или не виждате активност в зоната на дървото на заявките, тогава ви съветвам да посетите страницата с често задавани въпроси на официалния уебсайт.

Област на лентата с инструменти

Областта на лентата с инструменти съдържа основните бутони с инструменти, които често ще използвате, докато работите. Ще изпробваме някои от инструментите на практика. Засега нека да ги разгледаме:

  • „Метла“ изчиства текущата сесия, дървото на заявките и всички записани действия.
  • „Запис / Пауза“, когато е активно, е червено и всички събития се записват и сиво, когато са спрени.
  • „Блокиране“ стартира / спира SSL прокси.
  • Следващите бутони до отметката осигуряват достъп до общи действия, включително ограничаване, точки на прекъсване и заявки.
  • Последните два бутона осигуряват достъп до често използвани инструменти и настройки.

Област на списък със заявки

Тази зона показва всички заявки, преминаващи през Charles. В горната част е превключвателят Структури / Последователност. Ако изберем Структури, всички заявки ще бъдат групирани в дърво с възли. Освен това за удобство можете да щракнете с десния бутон върху заявката и да изберете Фокус, след което всички заявки, които не са във Фокус, ще бъдат под възела „Други хостове“. Функцията за фокусиране е удобна, когато работите с определен набор от хостове и не се интересувате от други.

Когато изберете Последователност, ще получите последователен списък със заявки и допълнителна информация. Искам да отбележа, че интерфейсът ще се промени малко, но същността и функционалността остават същите.

Детайлна зона

След това отидете в зоната с подробна информация за избраната заявка. Ако изберете Структури и хост (не API метод), ще видите три раздела: Общ преглед, Резюме, Диаграма. Тези раздели показват статистически данни за избрания хост, като например броя на успешните заявки, неуспешните заявки, списък със заявки, график на заявките и друга полезна информация.

За избраната заявка ще имате раздел Съдържание, за да видите заглавките, тялото, бисквитките на заявката и отговора. В зависимост от съдържанието можете да изберете формата на показване.

Освен това отделете 5–10 минути за изучаване на раздели и интерфейс. Това ще ви помогне бързо да се ориентирате в бъдеще. Също така ще забележите, че в HTTPS заявки не можете да видите съдържанието. Това е свързано с SSL / TLS криптиране. Заявките се криптират с помощта на сертификати, създадени от доверени трети страни, наречени издатели на сертификати. С помощта на Чарлз можем също да създадем сертификат, но трябва да го инсталираме на нашите устройства, които ще работят през проксито. След това можем да дешифрираме SSL събитията.

Свързване на истинско устройство

Ще започнем, като свържем вашето устройство и след това симулатора.

За да направим това, трябва да разберем нашия IP адрес. Можете да го направите по какъвто и да е начин, който знаете, или щракнете върху „Помощ“ в менюто и изберете „локален IP адрес“.

Сега трябва да вземем устройството, което ще свържем. На устройството отворете настройките и отидете на настройките за Wi-Fi. Уверете се, че вашият компютър и устройство са в една и съща мрежа. В противен случай превключете към същата мрежа като вашия компютър. Кликнете върху иконата „информация“ на текущата мрежа. Намерете секцията HTTP PROXY в Configure Proxy и изберете Manual. В полето Сървър въведете текущото си IP. В полето Порт въведете действителния си порт. Обикновено портът е 8888 по подразбиране. Можете да го промените в настройките на прокси сървъра. И щракнете върху бутона Запазване.

Не забравяйте да актуализирате своя IP адрес. Когато свържете отново компютъра си към мрежата, IP адресът на компютъра може да се промени. В противен случай можете да използвате статичен IP.

В Charles ще видите прозорец за заявка за достъп. Нека го позволим. Ако не се появи, опитайте да отворите който и да е сайт в браузъра и ако това не помогне, проверете отново IP адреса и всички настройки.

Инсталиране на сертификат на устройство

За да инсталирате сертификата, отворете Safari и отидете на chls.pro/ssl. След това даваме разрешение за изтегляне на конфигурационния профил и отиваме в настройките.

В настройките отидете на изтеглените профили и инсталирайте току-що изтегления. Ако имате парола, въведете я. Видеото показва целия процес.

След това отидете на About -› Certificate Trust Settings и активирайте нашия сертификат, както е показано във видеото.

Свързване на симулатора

За да свържем симулатора, трябва да го активираме в Settings -› Proxy Settings и да активираме Enable macOS Proxy. След това отидете на Помощ -> SSL проксииране -> Инсталиране на основния сертификат на Charles към iOS симулатори. Може да се наложи да отворите отново симулатора, ако не се появят подкани.

Сега нека отидем на Charles, изберете адреса, щракнете с десния бутон на мишката и изберете Enable SSL Proxying в контекстното меню.

За всяка следваща заявка вече можете да видите изпратеното и полученото съдържание. Освен това чрез Proxy -› Enable SSL Proxying (Shift + Command + L) може да ви осигури по-гъвкави инструменти за управление. Прекарайте 5 минути, за да научите, че ще бъде полезно да използвате Charles по-уверено.

Забележка:За теста на реално устройство използвах приложението AppStore — AccuWeather, което е напълно безплатно.

Разширено използване

Дросел

Понякога разработчиците или тестерите трябва да тестват приложението си с лоша интернет връзка. Кликнете върху иконата на костенурка в областта с инструменти, за да активирате инструмента Throttle и отидете на Proxy -› Throttle Settings. Както можете да видите, имате много параметри, които могат да симулират загуба на данни, висока латентност и проблеми с надеждността.

Network Link Conditioner предоставя подобни възможности за регулиране на мрежата, но Charles позволява по-разширени мрежови настройки.

Забележка:Не забравяйте да изключите Throttle, когато не ви е необходим. Беше забавно, когато веднъж прекарах цял час в отстраняване на грешки в приложение!

Модифициране

Сега ще разгледаме възможността за промяна на заявката или отговора от сървъра. Тази способност ще ви бъде полезна повече от веднъж, докато работите върху вашето приложение.

Намерете заявката, която искате да промените, и използвайте контекстното меню, за да активирате точките на прекъсване (или чрез Proxy -› Настройки на точките на прекъсване). Сега Чарлз ще поставя на пауза заявката всеки път. И това ще ви позволи да промените данните в раздела Редактиране на заявка. Опитай. Щракнете върху Изпълнение в долната част и след получаване на отговор ще видите прозорец, който ви позволява да редактирате заявката-отговор. Можете да си поиграете с това и да видите как промените в данните на вашето устройство имат ефект. Освен това можете да зададете точки на прекъсване, специфични за заявка или отговор. Отделете малко време, за да овладеете този инструмент.

Понякога има нужда да пренасочите вашите заявки към отдалечен сървър или локален файл. За да направите това, създайте JSON файл, копирайте данните от стария отговор в него, променете стойностите и запазете. Освен това в контекстното меню натиснете Map Local (или Tools -› “Map Local…”). Изберете пътя до нашия JSON файл в полето за локален път. И изпълняваме заявката от приложението. Както можете да видите, сега всеки път получаваме данни от нашия JSON файл. Опитайте сами функцията „Map Remote“.

Също така, други инструменти в областта Toolbox ви позволяват да изпратите отново заявката и по избор да промените данните в заявката. Все пак приложението за iOS няма да отговори по никакъв начин на тези отговори, тъй като самият Чарлз ги изпраща и получава. Опитайте сами тези инструменти. Те са интуитивни и ясни.

Ние проучихме основните инструменти и възможности на Чарлз и от вас зависи да се потопите в тях дълбоко. Опитайте се да промените различни полета и свойства, отделете време за изучаване и ще овладеете това приложение като напреднал потребител. Charles е лесен, но много усъвършенстван инструмент в ръцете на разработчик или тестер. А ако искате да научите повече за Charles, съветвам ви да посетите официалната документация, където всички възможности са добре описани.