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

Про парадокс пестицида

Более 20 лет назад, в 1990 году, Борис Бейзер в свое книге «Software Testing Techniques» ввел понятие, известное как «парадокс пестицида» (pesticide paradox), которое формулируется следующим образом:

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

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

По этой причине тестовые наборы всегда требуют своего обновления, независимо от того, запускаются ли они в автоматическом или ручном режиме.

Существует ряд обстоятельств, по которым хороший тестовый набор со временем утрачивает свою эффективность:

1. Невозможно проверить все возможные сценарии

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

2. Функциональность приложения изменяется с течением времени

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

3. Люди осторожничают только там, где чувствуют непосредственную опасность

Это означает, что разработчики всегда будут проявлять гиперосторожность лишь в тех местах, где ранее тестировщики обнаружили проблемы. Однако там, где раньше было «все ОК», их внимательность снижается на порядок. Т.е. другими словами, разработчики учатся избегать ошибок, которые находятся тестами.

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

Вот несколько рекомендаций на этот счет:

1. Следите за изменениями в продукте и предугадывайте их возможные последствия

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

2. Откажитесь от неэффективных тестов

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

3. Постоянно меняйте тестовые данные

Хоть это и кажется очевидным, но мы порой склонны забывать об этом. Многие ошибки в наших продуктах имеют специфический характер (особенно в автотестах), поэтому мы должны постоянно увеличивать / изменять тестовые данные (к примеру, использовать как можно больше тестовых БД).

4. Используйте неформальные средства тестирования

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

Источник

Про баг в программе Talking Spoonya (v1.0.7 для iOS)

В программе Talking Spoonya («Говорящий Спуня»), созданной в стенах i-Free, есть незамеченный разработчиками баг.

При первом старте, приложение начинает автоматическую загрузку дополнительного контента (набор анимаций для Спуни), после чего он сохраняется в  системном кеше приложений. В дальнейшем приложение оперирует данными, сохраненными в кеше. Если же данные приложения удалить из кеша (к примеру, через программу PhoneClean), то программа аварийно завершает свою работу при попытке запуска:

Jan 19 12:11:33 iPad ReportCrash[209] <Notice>: Formulating crash report for process Talking Spooni[207]
Jan 19 12:11:33 iPad com.apple.launchd[1] (UIKitApplication:com.i-free.talkingspoonya[0xc8d3][207]) <Warning>: (UIKitApplication:com.i-free.talkingspoonya[0xc8d3]) Job appears to have crashed: Abort trap: 6
Jan 19 12:11:33 iPad backboardd[31] <Warning>: Application 'UIKitApplication:com.i-free.talkingspoonya[0xc8d3]' exited abnormally with signal 6: Abort trap: 6
Jan 19 12:11:33 iPad ReportCrash[209] <Notice>: Saved crashreport to /var/mobile/Library/Logs/CrashReporter/Talking Spooni_2014-01-19-121133_iPad.plist using uid: 0 gid: 0, synthetic_euid: 501 egid: 0

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

А мне остается лишь сейчас взять и отправить отчет об ошибке в i-Free.

P.S. обойти проблему можно просто взяв и переустановив приложение.

Про первые $15 на uTest.com

Есть такой сайт — uTest.com. Это площадка, на которой заказчик может искать людей, готовых протестировать его продукт. Сайт весьма популярный за бугром, который в первую очередь ставит на качество оказываемых услуг.

Между заказчиком и конечными тестировщиками выступают, как и в обычных практиках, посредники в виде PM’а (Project Manager) и TM’а (Test Manager). PM набирает команду и потом отдает работу TTL (Test Team Lead), который занимается консультацией по вопросам тестировщиков, общается с PM о продукте и пр. Если у ТТL’а имеется статут Premier, то он также может еще апрувить или реджектить  найденные ошибки.

Большая часть людей, которые выступают в качестве исполнителей, не являются профессиональными тестировщиками. Таким образом, uTest.com — это хорошая площадка для фрилансеров (в основном —  любителей), которые готовы помочь проверить продукт и при этом заработать.

Я зарегистрирован на uTest еще с конца 2012 года, но активности там никакой не проявлял в виду сложной системы отбора исполнителей. И вот недавно меня включили в один из циклов. Задание было не сложное — пройтись по тест-кейсам и проверить правильность работы приложения. Т.к. в ходе верификации ошибок не было найдено, то я смог получить только 15 долларов. Ну что ж, на первый раз неплохо. Выводить деньги можно через систему PayPal или Payoneer. В будущем постараюсь более активно искать проекты ^_^