RecodeLiner / MobileST

Simple TechTask on compose
0 stars 0 forks source link

Замечания к тестовому заданию в компанию Уно-Софт #1

Open ADsty opened 2 months ago

ADsty commented 2 months ago

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

  1. Тест на скорость интернета не покрывает пункты ТЗ про моментальную и среднюю скорость;
  2. Отсутствует возможность переключения темы в настройках;
  3. При отключении одного из параметров теста в настройках, текстовое описание на главном экране меняется на "Недоступно мб/с";
  4. Иногда в замерах проскакивает "null мб/с" что является ошибкой;
  5. Данная реализация тестирования скорости очень приблизительна, данные обновляются через несколько попыток замеров скорости.

Пункты 1-4 обязательно нужно исправить, для пункта 5 можно предложить алгоритм, как бы Вы замеряли скорость иначе.

RecodeLiner commented 2 months ago

Исправил первые 4 пункта, в т.ч. немного поправил внутреннюю логику для непосредственного покрытия ТЗ

По поводу пункта 5 - как я заметил это особенность непосредственно connectivity manager от самих гугл, он пытается одними и теми же данными отправить к себе и в конце немного округляет результат для кб/с, от чего падает незначительно чувствительность, данную особенность с уже существующим классом не исправить и я бы наверное просто в таком случае повторил реализацию как в libreSpeed с созданием сервера для проверки на том же ktor, чтобы иметь высокую совместимость с уже существующим кодом, благо архитектурный подход в решении ТЗ это может позволить сделать путём замены одного класса

ADsty commented 2 months ago

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

RecodeLiner commented 2 months ago

Чтобы реализовать непосредственно проверку скорости, как я и описал выше, можно подготовить сервер, который на входящий запрос о начале тестирования сгенерирует тестовый файл определённого размера(например 10 мбайт). Со стороны приложения-клиента, в ссобственной реализации, можно получать, используя данные от http-клиента(будь то например okhttp), размер переданных значений и высчитывать непосредственно время, за которое пришёл блок данных. При подобной реализации получение данных будет сводиться к вычислению следующего вида: Текущая скорость загрузки = Размер части данных / Время чтения части данных.

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

ADsty commented 2 months ago

Подойдет ли под Ваш алгоритм ftp-сервер? Мы можем предоставить его на время разработки алгоритма

RecodeLiner commented 2 months ago

Да, должен будет подойти для алгоритма

ADsty commented 2 months ago

Отправил Вам на почту креды от сервера, воспользуйтесь ими для реализации алгоритма