К чему может привести замена сертификата на сервере

В последнее время мы ведем разработку клиент-серверного приложения для Smart TV (LG и Samsung), которое взаимодействует с удаленным сервером через HTTPS-соединение.

Буквально пару недель назад на моделях устройств Samsung 2012 года приложение перестало запускаться из-за ошибки соединения с сервером. Мы стали выяснять причину проблемы, и в итоге смогли найти ее.

Проблема была в том, что на удаленном сервере был изменен сертификат безопасности, который больше не поддерживает протокол SSL 3.0 в связи с найденной ранее уязвимостью POODLE (CVE-2014-3566). И все бы ничего, но старые модели Samsung не поддерживают протоколы TSL, только SSL до версии 3.0.

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

А для того, чтобы узнать, какие протоколы шифрования поддерживает сертификат, установленный на удаленном сервере, я воспользовался еще одним сервисом — https://sslcheck.globalsign.com, который вывел очень подробную информацию по уровню безопасности сервера.

Таким вот образом и была выявлена причина проблемы.

Samsung уже пообещал в самое ближайшее время выпустить обновление прошивки для тех устройств, которые не поддерживают TSL.

Про контроль за качеством продукта

C сентября прошлого гола наша команда работала над одним интересным проектом N для мобильных телефонов под Android. Заказчик был доволен нашей деятельностью, потому что в очень сжатые сроки мы смогли выпустить на рынок работоспособный продукт, полностью отвечающий всем первоначальным требованиям. Мы тщательно следили за качеством продукта, и если даже на «продакшене» и находились небольшие проблемы, то в кратчайшие сроки они исправлялись.

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

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

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

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

[Chrome] Проблемы со сглаживанием шрифтов

Для разрабатываемого нами приложения мы решили использовать шрифт с разным начертание по толщине (или как еще говорят, по насыщенности). Минимальная толщина шрифта, которую мы используем, это 300 (font-weight: 300). Шрифт подключаем через @font-face с указанием на хост, от куда его нужно брать и при этом используем два формата шрифтов — WOFF и TTF. Все это должно помочь нам достичь единства отображения шрифта на разных окружениях. И да, это, конечно же, работает, но тут, как всегда, возникла небольшая неприятность — в браузере Chrome для Windows шрифт при небольших размерах и толщиной 300 отображался «рвано», что делало его плохо читаемым.

В сети я нашел несколько топиков с обсуждением похожих проблем, где в качестве альтернативного решения предлагалось отказаться от использования шрифтов в формате WOFF, с которым по умолчанию работает Chrome, и использовать только TTF, но в данном случае мне это все равно не помогло.

А потом мне попалось обсуждение, где люди пишут, что проблема связана с багом в Chrome, и что она уже исправлена в версии Chrome 38. И действительно, в новых версиях браузера проблема со шрифтами уже не стоит так остро:

[Chrome] Проблемы со сглаживанием шрифтов

There was a problem accessing the Developer Program Agreement

Все указывает на то, что на сайте https://developer.apple.com/ имеется определенная проблема при попытке зарегистрироваться в программе разработки в качестве индивидуального лица.

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

Также есть ошибка со вступлением в программу разработки Safari — на последнем шаге, где нужно принять лицензионное соглашение (Program License Agreement), меня ждал неприятный сюрприз — после нажатия «I Agree» появилась ошибка:

We are unable to process your request.
There was a problem accessing the Developer Program Agreement. Please verify that you are using the same Apple ID and password you used to begin your enrollment, and try log in again.

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

Похоже, что придется обращаться в саппорт Apple.

Apple_Developer_Program_Enrollment_-_Update_Information

[macOS] Ограничение скорости Интернета

Есть несколько способов, чтобы ограничить скорость сетевого трафика в Mac OS (бывает полезно для тестирования ПО в условиях медленного Интернета). Наиболее интересным вариантом является графическая утилита Network Link Conditioner от самой Apple, которая имеет ряд уже встроенных профилей различных скоростей сетевого соединения (3G, DSL, Edge и пр.)

Скачать данную утилиту можно непосредственно на сайте разработчика в разделе «Downloads» (https://developer.apple.com/downloads/), которая входит в состав пакета «Hardware IO Tools for Xcode». После установки утилита будет доступна через оснастку  «System Preferences».

Network Link Conditioner

Небольшая подборка ошибок в сторонних продуктах

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

1. Сайт Facebook — не так давно в этой социальной сети проходил процесс смены UI для страниц сообществ. В качестве информирования о том, что можно перейти на новый облик, выводился поп-ап, правда в нем почему-то вместо символа апострофа виднелся его html-код '

facebook_site

2. Сайт NVIDIA — кто-то забыл корректно закрыть тег <div>:

nvidia_site

3. Антивирус Avast — на последнем шаге установки приложения показывается реклама об антивирусе для Android-устройств. Внизу — две кнопки, вот только что они означают, остается догадываться:

avast_promo

4. VMWare Workstation — в окне установщика приложения нижние кнопки почему-то взяли и налезли друг на друга:

vmware_installer

5. Программа обновления Apple — значок обновления выводится в ограниченной цветовой палитре:

apple_update

Немного визуальных проблем в YouTube

Зашел сегодня в приложение YouTube для iOS (версия 2.7.0.11277) и увидел приветственное сообщение с просьбой выбрать аккаунт для продолжения. Как видно на скриншоте, в приложении явно отсутствует ряд языковых строк для русского языка, из-за чего в UI выводятся их константы.

youtube_bug

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

youtube_bug1

Немного визуальных проблем в iOS 7

На прошлой недели на конференции WWDC 2014 была анонсирована новая версия мобильной операционной системы iOS 8, которая доступна для ознакомления уже сейчас, а официальный релиз состоится, как обычно, осенью.

Недавно я тут порылся с своей фотоленте на iPad и обнаружил пару скриншотов с экрана iOS 7, на которых присутствуют баги в UI. А все потому что, когда вижу проблему, стараюсь ее всегда зафиксировать. Времени выложить обнаруженные проблемы ни как не хватало, но сегодня не тот случай 🙂

1. Ширина область нотификации сократилась в два раза:

Немного визуальных проблем в iOS 7

2. В App Store некорректно отображается иконки приложения «Ведомости», которая в свою очередь налезает на иконку другого приложения:

Немного визуальных проблем в iOS 7

3. Иногда в App Store на странице обновления не подгружаются иконки обновляемых приложений:

Немного визуальных проблем в iOS 7

P.S.: по время Сочинской Олимпиады загрузил приложение «Смотри+» от Мегафон. К сожалению, оно также не обошлось без существенных проблем в UI:

Смотри+ от Мегафон

[JMeter] Запуск тестов на нескольких компьютерах через SSH-туннелирование

Есть задача провести нагрузочное тестирование сайта. В качестве инструмента был выбран Apache JMeter. Решил распараллелить нагрузку, используя экземпляр JMeter еще на одном компьютере. Таким образом нагрузка будет генерироваться с двух компьютеров:

  • Компьютер А — на нем запущен JMeter client (работает на Windows)
  • Компьютер B — на нем запущен JMeter server (работает на Debian)

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

И тут на помощь приходит SSH-туннелирование, которое по сути создает VPN-сеть.

Далее следует описание того, что и как нужно сделать, чтобы все заработало.

На компьютере А редактируем файл настроек bin/jmeter.properties:

remote_hosts=127.0.0.1:55501
client.rmi.localport=55512

На компьютере В редактируем файл настроек bin/jmeter.properties:

server_port=55501
server.rmi.localport=55511

Теперь необходимо создать SSH-туннель:

ssh -L 55501:127.0.0.1:55501 -L 55511:127.0.0.1:55511 -R 55512:127.0.0.1:55512 user@hostname

JMeter я запускаю на Windows, поэтому, чтобы использовать SSH, я поставил соответствующий пакет в Cygwin ^_^ (а можно еще туннелирование сделать, допустим, через PuTTY).

После того, как создался туннель, необходимо на компьютере В запустить JMeter server:

./jmeter-server -Djava.rmi.server.hostname=127.0.0.1

Будет выведено:

Using local port: 55511
Created remote object: UnicastServerRef [liveRef: [endpoint:[127.0.0.1:55511](local),objID:[6050b6ed:1449682cee5:-7fff, -8747782421079060026]]]

А на компьютере А запустить JMeter client:

jmeter.bat -Djava.rmi.server.hostname=127.0.0.1

Теперь осталось в открывшемся JMeter GUI запустить тест меню «Run» -> «Remote Start All»

В консоль на компьютере А будет выведено:

Using remote object: UnicastRef [liveRef: [endpoint:[127.0.0.1:55511](remote),objID:[6050b6ed:1449682cee5:-7fff, -8747782421079060026]]]

В консоль на компьютере В будет выведено:

Starting the test on host 127.0.0.1:55501 @ Thu Mar 06 12:29:30 MSK 2014 (1394094570737)
Finished the test on host 127.0.0.1:55501 @ Thu Mar 06 12:29:50 MSK 2014 (1394094590461)

Немного слов об утилите Problem Steps Recorde

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

На днях он прислал еще один отчет о найденной проблеме (позже выяснилось, что он не правильно растолковал функциональность, посчитав ее за ошибку). Отчет был в виде mht-файла (веб-архив), который содержал детализированный отчет с шагами воспроизведения, включая скриншоты и некоторую системную информацию. Вау! По правде говоря, такое я видел впервые. Что это такое? Это он сам все написал? Навряд ли… Начал гуглить. Нашел — называется «Problem Steps Recorder«, утилита, которая входит в состав Windows 7.

Основное назначение «Problem Steps Recorder», как следует из названия, это запись каких-либо шагов. Записанные действия сохраняются в отчет формата mht, а сам же файл автоматически добавляется в zip-архив. Т.е. для рядового пользователя достаточно просто запустить запись, пощелкать, затем нажать «Сохранить», и отправить уже сформированный архив, скажем, в службу тех.поддержки. То, что добавили в Windows 7 — это мечта любого специалиста, имеющего дела с пользователями, которые порой не могут толком объяснить, что же у них там за проблема такая. А тут взял, записал и отправил.

Найти утилиту «Problem Steps Recorder» можно в панели управления или вызвать через командную строку: psr.exe

Немного слов об утилите Problem Steps Recorde