Фриланс-платформы / «Особый взгляд» — портал для людей, которые видят по-разному

Какие сервисы были протестированы

  • Сайт и мобильные приложения (Android, iOS) сервиса YouDo.

  • Сайт и мобильные приложения (Android, iOS) сервиса Work-zilla.com.

  • Сайт сервиса Freelance.ru.

Какие пользовательские сценарии были проверены

  • Общая структура сервиса, доступность и информативность главной страницы.

  • Возможность создания и редактирования резюме.

  • Возможность поиска вакансий, использования фильтров.

  • Возможность откликнуться на вакансию, посмотреть информацию о компании.

  • Обратная связь с техподдержкой сайта.

Баллы доступности

4-5 — высокая доступность

3-4 — средняя

2-3 — ниже средней

1-2 — низкая

NA — либо отсутствует ресурс, либо он используется только как информационный и не дает полного доступа ко всем возможностям

Общая оценка доступности

YouDo. Средняя доступность сайта и мобильного приложения на Android. Доступность приложения на iOS — ниже среднего.

Work-zilla.com. Доступность сайта — ниже среднего. Высокая доступность приложения на Android. Средняя доступность мобильного приложения на iOS.

Freelance.ru. Средняя доступность сайта. Мобильных приложений у организации нет.


Оценка доступности по онлайн-ресурсам

YouDo

Сценарии

Сайт

Android

iOS

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

3

4

5

Регистрация, вход и восстановление пароля

1

1

3

Заполнение личных данных профиля/создание резюме

4

3

1

Просмотр своего резюме/профиля и редактирование отдельных блоков информации

4

5

3

Фильтрация вакансий по специализации, просмотр списка вакансий в результатах поиска

3

3

1

Доступность страницы компании с информацией о ней и списком представленных вакансий на сервисе

5

5

3

Отправка отклика на вакансию и доступность контакта с работодателем

1 (Пункт не может быть протестирован без верификации аккаунта)

1 (Пункт не может быть протестирован без верификации аккаунта)

4

Обратная связь и техническая поддержка сервиса поиска работы

4

3

2

Сайт: Общие комментарии

Много элементов, активируемых по щелчку мыши, и элементов, которые можно прочитать, только если видишь.

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

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

Регистрация через социальные сети тоже не работает при использовании скринридера.

Результаты фильтрации и поиска не отмечены элементами быстрой навигации.

Для того чтобы предложить услуги по выполнению задания, нужно верифицироваться, а без этого при нажатии кнопки «Предложить свои услуги» ничего не происходит. Также без верификации непонятен механизм привязки банковской карты к аккаунту.

Android: Общие комментарии

Кнопка «Меню» обозначена как «True».

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

В профиле нет раздела для ввода номера банковской карты.

Нет фильтрации результатов поиска.

iOS: Общие комментарии

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

Профиль нельзя заполнить до конца. Номер телефона, дату рождения ввести невозможно — соответствующие поля неактивны.

Фильтрацию невозможно использовать. На странице просмотра заданий есть кнопка (подписанная на английском), которая, видимо, отвечает за фильтры, но при нажатии на нее появляется лишь один элемент — «Показать X заданий» (число меняется). Если пробовать осуществлять навигацию, приложение теряется для VoiceOver, его приходится перезапускать.

Некорректно подписано поле ввода сообщения и кнопки в разделе «Обратная связь».


Work-zilla.com

Сценарии

Сайт

Android

iOS

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

3

5

3

Регистрация, вход и восстановление пароля

1

3

4

Заполнение личных данных профиля/создание резюме

2

4

3

Просмотр своего резюме/профиля и редактирование отдельных блоков информации

4

4

4

Фильтрация вакансий по специализации, просмотр списка вакансий в результатах поиска

3

5

2

Доступность страницы компании с информацией о ней и списком представленных вакансий на сервисе

1

1

5

Отправка отклика на вакансию и доступность контакта с работодателем

2

5

3

Обратная связь и техническая поддержка сервиса поиска работы

3

5

3

Сайт: Общие комментарии

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

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

Войти в «Профиль» или «Настройки» можно, нажав графический элемент, активируемый по щелчку. При заполнении профиля добавление фотографии невозможно, так как все элементы управления для этой операции не подписаны, а только определяется группа элементов по щелчку.

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

Информации о компании и заказчике нет, только отзывы.

В разделе заданий заказчику нельзя отправить сообщение в чате для того, чтобы уточнить подробности заказа.

Поддержка доступна, но очень скачет курсор и есть элементы по щелчку.

Android: Общие комментарии

При входе и регистрации внизу экрана есть ряд неподписанных кнопок. Выполнять проверочные тесты с телефона сложно, в них не подписаны кнопки. Перед тем, как нажать на кнопку «Вход» или «Регистрация», по экрану движутся отзывы и заказы. Это происходит независимо от действий пользователя скринридера.

В профиле не подписаны кнопки привязки к социальным сетям.

Информации о компании в приложении нет, кроме той, что напишет сам заказчик.

iOS: Общие комментарии

Приложение приходится часто перезапускать — после какого-то действия могут не активироваться вкладки или кнопки. Иногда VoiceOver перестает видеть приложение на экране, показывая только статусную строку телефона. риложение после этого приходится перезапускать.

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

Кнопки для перехода назад и вперед по вопросам подписаны некорректно (на английском языке).

Поиска по заданиям нет, только рекомендованные задания. Кнопка «Отфильтровать» подписана некорректно.

Рядом с каждым заданием есть изображение, подписанное как «Icon».

Просмотр деталей задания: при смахиваниях вправо в какой-то момент VoiceOver замолкает и курсор теряется — экран не реагирует на свайпы.

Кнопки для отправки и прикрепления файла подписаны некорректно.


Freelance.ru

Сценарии

Сайт

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

3

Регистрация, вход и восстановление пароля

2

Заполнение личных данных профиля/создание резюме

3

Просмотр своего резюме/профиля и редактирование отдельных блоков информации

3

Фильтрация вакансий по специализации, просмотр списка вакансий в результатах поиска

4

Доступность страницы компании с информацией о ней и списком представленных вакансий на сервисе

5

Отправка отклика на вакансию и доступность контакта с работодателем

3

Обратная связь и техническая поддержка сервиса поиска работы

5

Сайт: Общие комментарии

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

Также на главной странице есть неподписанные графические элементы и ссылки на социальные сети. Кнопка поиска не имеет корректной текстовой метки. Много повторяющейся информации, это может замедлить навигацию.

После авторизации в главном меню ссылки, ведущие на адреса https://freelance.ru/dialog и https://freelance.ru/notification, не имеют текстовых меток.

Страница входа: форма авторизации доступна, но ссылки на вход через социальные сети или другие внешние провайдеры имеют некорректные текстовые метки. У данных ссылок есть атрибут title, который выдает корректную информацию скринридерам, но у ссылок отсутствует стандартный текст, из-за чего при навигации курсорными стрелками ссылки не озвучиваются.

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

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

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

Результаты поиска доступны. Есть элемент фильтрации, который имеет текстовую метку, но не имеет соответствующей роли.

При нажатии на кнопку «Предложить услуги» открывается страница отправки заявки на участие в проекте. Можно заполнить все пункты, предложенные на ней. Но при вводе текста заявки, в панели инструментов визуального редактора, не озвучиваются кнопки при навигации курсорных стрелок или же клавиш быстрой навигации программ экранного доступа. Они озвучиваются исключительно при навигации клавишей tab. Тексты данных кнопок находятся в атрибуте data-original-title и, скорее всего, показываются как tooltip. Такая же ситуация с кнопкой «Обновить превью».

Способа контакта с заказчиком в данном функционале нет. В меню есть неподписанная ссылка, которая ведет на /dialog, возможно, если заказчик напишет кандидату сообщение, оно там будет отображаться.

Если ваш сайт или мобильное приложение недоступно, вы хотите его улучшить или у вас есть вопросы и комментарии по исследованию, свяжитесь с командой инклюзивного проекта Everland:
[email protected]
+7 (495) 646-04-28

Вернуться к списку исследований

Смотрите также

Сервисы поиска работы

Магазины электроники

Почему я использую Dist::Zilla

Dist::Zilla (для краткости dzil) стал великолепным дополнением к моему набору инструментов Perl. Я видел некоторые сообщения в блогах и комментарии IRC, которые вызвали ряд реакций, а также некоторое общее замешательство по поводу того, в чем же дело, поэтому я добавляю свои собственные мысли к дискуссии.

Dist::Zilla модульная, а не монолитная 🔗︎

Часть путаницы с dzil заключается в том, что он может делать много разных вещей и не всем нравится все, что он может. По своей сути dzil — это всего лишь менеджер выпусков дистрибутива CPAN:

  • Собрать файлы дистрибутива в каталог дистрибутива
  • Создать архив каталога

В этом нет ничего страшного — он дублирует функциональность ExtUtils::MakeMaker, Module::Build и Module::Install. Разница в том, что не требует запуска Makefile.PL или Build.PL для работы.

Что это дает нам? Как это помогает Perl-программисту выпускать материал для CPAN? (Привет, ТИОБЕ!)

С помощью dzil, разработчик может настроить процесс выпуска вне Makefile. PL или Build.PL , что означает, что конечные пользователи никогда не должны знать об этом. Им не нужны предварительные условия только для запуска PL-файла, им не нужно что-то спрятанное в inc/, им не нужно писать фрагменты Makefile и так далее.

Вместо этого разработчики могут расширять dzil с помощью подключаемых модулей, которые остаются на их машине разработки. Почти все в дзиле является плагином — нет различия между поведением «ядра» и «дополнениями». В отличие от Module::Build, который легко создать подклассом один раз, но затрудняет «примешивание» функциональности подкласса, dzil создается с нуля для координации поведения нескольких плагинов. Это позволяет разработчику смешивать и сочетать полезные функции, когда это необходимо.

Например, легко добавить плагин для автоматической загрузки вещей в CPAN. После добавления dzil делает для меня следующее:

  • Собирает файлы дистрибутива в каталог дистрибутива
  • Создать архив каталога
  • Загрузить архив в CPAN

Замена существующих сценариев выпуска на Dist::Zilla 🔗︎

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

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

  • Собирать файлы дистрибутива в каталог дистрибутива
  • Убедитесь, что все проверено в git
  • Убедитесь, что тесты распределения пройдены
  • Пометить выпуск с помощью git
  • Отправьте тег в мой репозиторий git
  • Создать архив каталога
  • Загрузить архив в CPAN

Если я обнаружу, что кто-то уже написал другие полезные предварительные версии плагинов, я могу просто добавить их:

  • Убедиться, что дополнительные тесты в каталоге xt/ проходят
  • Убедитесь, что я что-то написал в файле изменений

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

dzil может сделать это — и я покажу, как и почему я использую его именно так — но это выбор, который может сделать каждый разработчик. Даже без него я могу извлечь выгоду из всех плагинов управления релизами, которые пишут люди, — чего я никогда не мог сделать со своими доморощенными скриптами релизов. Круто!

Разрешение Dist::Zilla автоматизировать рутинную работу 🔗︎

Если вы готовы сделать следующий шаг с помощью dzil, вы можете настроить его на создание шаблонных файлов в вашем дистрибутиве — вещи, которые должны быть там, но которых нет у вас действительно нужно в репозитории или что должно генерироваться на лету. Это могут быть простые текстовые файлы, такие как LICENSE, но когда вы понимаете, что вам больше не нужен файл Makefile.PL или Build.PL для сборки дистрибутива , вы можете позволить dzil заполнить пробелы в общем шаблоне и для них! Вы даже можете позволить ему угадать ваши предварительные условия, исключив еще одну вещь, которую нужно помнить об обновлении перед выпуском.

Теперь мой процесс выпуска в dzil может выглядеть так:

  • Собрать файлы дистрибутива в каталог дистрибутива
  • Изучите код, чтобы найти необходимые компоненты (включая минимальные версии)
  • Создать Makefile.PL (или Build.PL)
  • Создать МАНИФЕСТ
  • Создание файлов META.yml и/или META.json
  • Создать файл ЛИЦЕНЗИИ
  • Создать файл README из модуля основного модуля
  • * Создать несколько общих файлов .t
  • Убедитесь, что все проверено в git
  • Убедитесь, что тесты распространения пройдены
  • Убедитесь, что дополнительные тесты в каталоге xt/ проходят
  • Убедитесь, что я что-то написал в файле изменений
  • Пометить выпуск с помощью git
  • Создать архив каталога
  • Загрузить архив в CPAN

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

Но подождите! Как протестировать дистрибутив без Makefile.PL или Build.PL?

Вы можете сделать это одним из двух способов:

 $ proof -l t
$ дзил тест
 

Первый просто запустит ваши тесты, используя файлы из библиотеки lib/ в рамках проверки (добавьте флаг -v, если хотите, или укажите конкретный файл для тестирования). Второй пройдёт все этапы сборки каталога дистрибутива и генерации файлов, а затем запустит Makefile.PL (или Build.PL) и «сделает тест» («Build test») внутри сгенерированного дистрибутива.

Если вы хотите сделать следующий шаг и позволить dzil изменять ваши файлы, когда он помещает их в каталог дистрибутива, вы можете начать исключать шаблоны из ваших файлов, и dzil добавит их автоматически. Он также может вычислять легко вычисляемые вещи — например, номер следующей версии — и добавлять их.

Вот некоторые вещи, которые я позволил ему сделать за меня:

  • Рассчитать следующую версию и записать $VERSION в мои файлы
  • Найдите реферат и напишите раздел НАЗВАНИЕ в модуле для каждого модуля
  • Запишите $VERSION в Pod для каждого модуля
  • Добавить разделы АВТОРЫ и АВТОРСКИЕ ПРАВА в модуль для каждого модуля
  • Добавить официальное заявление об авторских правах и лицензии в каждый файл
  • Перевести диалект модуля WikiDoc, который я предпочитаю, в обычный модуль
  • Добавить $VERSION и метку времени в мой файл изменений

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

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

Использовать ли Dist::Zilla и как начать работу 🔗︎

Надеюсь, я показал, насколько полезен dzil и как вы можете использовать столько, сколько хотите, или меньше. Тем не менее, вот несколько причин, по которым вы можете не захотеть его использовать или, по крайней мере, пока:

  • Существует ограниченная поддержка (пока) для настройки процесса сборки, поддержки динамических (например, специфичных для ОС) предварительных условий и сборки XS модули. Это улучшается по мере того, как авторы пишут новые плагины — см. Dist::Zilla::Plugin::MakeMaker::Awesome в качестве примера.
  • Существует множество подключаемых модулей, за которыми нужно следить, и их настройка вручную в каждом дистрибутиве может показаться немного утомительной. Некоторые авторы пишут PluginBundles для инкапсуляции своей конфигурации по умолчанию. Будет ли он нужен каждому автору или возможна какая-то глобальная конфигурация? Эти вопросы еще прорабатываются.
  • Сотрудничать немного сложнее. В идеале, любые соавторы должны установить тот же набор плагинов дзила, что и у вас, и могут работать с дзилом так же, как и вы, но это все равно дополнительная работа, которую вы требуете от участников, особенно если они еще не являются поклонниками дзила.
  • dzil все еще быстро развивается, и за последние несколько месяцев не было ничего необычного в том, что некоторые обновления dzil ломали кучу плагинов. Надеюсь, это будет реже, поскольку API стабилизируется, а темпы разработки ядра dzil замедлятся. Из-за темпов разработки документация также немного отстает.

Если вы все-таки хотите попробовать, мой совет по обучению: начните с очень простого файла dzil dist.ini, который вы поддерживаете вручную. Не используйте dzil PluginBundles, пока не ознакомитесь с работой каждого плагина. dzil tutorial — отличный справочник для начала работы. См. раздел о преобразовании существующего дистрибутива для некоторых хороших примеров для начинающих.

В качестве альтернативы, если вы хотите увидеть пример dist.ini, который делает все, что я упоминал выше в этой статье, см. Dist::Zilla::PluginBundle::DAGOLDEN. В документации к PluginBundle я показываю эквивалентный файл dist.ini. Вы можете закомментировать части, которые вы не понимаете, а затем выборочно снова включить их, чтобы увидеть, что они делают.

Еще один хороший пример см. в разделе Прохождение реального файла dist.ini.

Важно : Пока вы изучаете дзил, замените плагин «UploadToCPAN» на «FakeRelease» в вашем dist. ini. Это будет имитировать выпуск без фактической загрузки в CPAN, что может избавить вас от потенциального смущения.

Статьи других людей 🔗︎

  • Dist::Zilla – часть 1
  • Мои новые отношения любви/ненависти с Dist::Zilla
  • Dist::Zilla Плюсы и минусы

•      •      •

Если вам понравилось это или у вас есть отзывы, пожалуйста, дайте мне знать по   Электронная почта или же   Твитнуть

Хотите время от времени получать информационный бюллетень с новым содержанием? Введите адрес электронной почты:  Модульное тестирование

— тесты Golang в подкаталоге

спросил

Изменено 6 месяцев назад

Просмотрено 120 тысяч раз

Я хочу создать пакет в Go с тестами и примерами для пакета в виде подкаталогов, чтобы поддерживать чистоту рабочего пространства. Возможно ли это, и если да, то как?

Во всей документации код тестирования всегда помещается в то же место, что и другой код. Это лучше или просто соглашение?

  • модульное тестирование
  • перейти
  • построить

3

Обратите внимание, что вы можете запустить пройти тест «рекурсивно»: вам нужно перечислить все пакеты, которые вы хотите протестировать .

Если вы находитесь в корневой папке вашего проекта Go, введите:

 go test ./...
 

Обозначение ‘ ./... ‘ описано в разделе «Описание списков пакетов» команды « go «:

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

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

В качестве особого случая x/... соответствует x , а также подкаталогам x .
Например, net/... расширяется до net и упаковывается в свои подкаталоги.


Если вы храните файлы _test.go в подпапке, команда ‘ go test ./... ‘ сможет их подобрать.
Но:

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

При этом я бы все же предпочел хранить файл _test.go рядом с основным исходным файлом: его легче найти.


Для покрытия кода:

 go test -coverpkg=./... ./...
 

См. «Как построить график покрытия тестов Go с течением времени» от Фредерика Г. МАРАНДА и fgmarand/gocoverstats , чтобы получить сводную статистику покрытия для интеграции CI проектов Go.

Также go-cover-treemap.io это весело.

5

EDITED

Построено на ответе VonC,

Этот ответ действителен в go1.11 . Пока не тестировался в старших версиях и .

Для тех из вас, кто любит хранить свои тесты в подпапке, скажем, test , а затем запустить

 go test ./...
 

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

Выполняется

 пройти тест ./.../тест
 Вместо этого 

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

ВНИМАНИЕ

Помните, что использование тестовых подпапок не позволит составить отчет о покрытии. Философия go заключается в том, чтобы оставлять тестовые файлы в папках пакета.

7

Поместите свои тесты вместе с кодом в тот же каталог в файл с именем file_test.go , где «файл» — это имя файла исходного кода, который вы тестируете. Это соглашение, и я обнаружил, что это лучше всего по моему собственному опыту.

Если инструмент go test недостаточно автоматизирован для вас, вы можете обратить внимание на GoConvey , который имеет веб-интерфейс, который автоматически обновляет и запускает традиционные тесты Go, а также тесты GoConvey (которые основаны на поведения и более самодокументируемы, чем традиционные тесты Go).

2

Обычно я не провожу тест, но вы можете сгруппировать файл по каталогам и использовать импорт, например

import "./models" если на один уровень выше
import ".