Разработка статических анализаторов кода и борьба за качество open-source проектов на протяжении более шести лет не могли не сказаться на моём взаимодействии с программами в нерабочее время. К сожалению, мне постоянно встречаются разные баги и, к ещё большему сожалению, повлиять на это почти невозможно. Я решил собрать несколько историй об интересных багах и их исправлении или игноре. Альтернативный формат статьи о поиске ошибок в коде.
Введение
В повседневной жизни мы уже чаще пользуемся сайтами и мобильными приложениями, чем прикладными программами для компьютера. В этой сфере проектов с открытым исходным кодом очень мало. Большинство проектов – продукты крупных компаний, имеющих несколько линий поддержки. Сообщить о баге через первую линию поддержки — практически бесполезное занятие. Особенно остро проблема стоит с банковскими приложениями. А сайты? Владельцы сайтов часто вообще не имеют команды разработки. А если через сайт предоставляется какая-нибудь услуга, то общение с менеджерами этих сервисов проходит ещё хуже, чем с первой линией поддержки. Самые интересные истории будут ниже. Надеюсь, они помогут компаниям обратить внимание на качество своих программных продуктов.
Баги на сайтах
Телеканал 2x2
Пожалуй, 2x2 — единственный телеканал, который я смотрю. Никакого телевидения у меня не подключено, и я был очень рад, когда на сайте появился прямой эфир. Имея телевизор с доступом в Интернет, это было идеальным решением для меня. Но на деле оказалось всё намного сложнее.
Прямой эфир через браузер на телевизоре не работал. Т.к. сообщать о багах разработчикам – часть моей трудовой деятельности, я быстро нашёл контакты на официальном сайте и попытался сообщить о проблеме. Почему попытался? За 2 месяца не удалось получить никаких ответов с двух почтовых адресов. И в группе ВК ничего дельного не ответили (маркетологу, раскручивающему группу в соц. сетях, явно было не до меня с неработающим сайтом).
Но я не отчаялся. Проблема была явно в трансляции и мне удалось её отследить. Она шла с серверов Rutube. Около месяца ушло на попытки связаться с их специалистами. Самое удачное общение произошло с администратором группы Rutube в VK. Мне дали контакты системного администратора. На письмо ему оперативно ответил его коллега, и мы договорились провести подключение, чтобы записать логи. Оказалось, сервер не был настроен для такого подключаемого клиента (телевизор с Tizen). На решение проблемы ушло 2 часа. Спасибо Алексею Лебедеву из Rutube и админу группы в ВК, которые единственные ответственно отнеслись к своей работе во всей этой цепочке «контактов».
Ресторан MaMa Mia
На сайте MaMa Mia нельзя оплатить заказ Online. По крайней мере, это не получилось у меня. А причина, как потом выяснилось, низкое качество кода. Но давайте по порядку.
Когда корзина полностью была сформирована, кнопка «Оформить заказ» не подавала никаких признаков жизни. А потом в почте я обнаружил это:
Каждый клик по «неработающей» кнопке формировал новый заказ. Как видите, я не отказал себе в удовольствии хорошенько протестировать этот баг :D
На сайте отсутствует форма обратной связи и какие-либо другие контакты, кроме телефона. Там, конечно же, отвечают менеджеры, далёкие от подобных проблем. С группой ВК этого ресторана такая же ситуация. Более-менее релевантные проблеме контакты мне получить не удалось.
На самом деле, это серьёзная проблема для бизнеса, когда некоторые недоработки, особенно с финансами (я ведь хотел оплатить заказ, но не смог), остаются незаметными для руководства. Более того, даже мы сами недавно умудрились попасть в подобную ситуацию, когда на пять дней сломалась форма запроса триального ключа. Мы очень сожалеем о потерянных пользователях :( А в ресторане, видимо, нет.
Не получив никакой отдачи от общения с менеджерами, я открыл консоль браузера и начал смотреть (кстати, в web-разработке я практически не разбираюсь):
Да это же неперехваченное исключение! Какая красота. Вот тут-то точно статический анализатор мог бы помочь.
С помощью пары запросов поисковику удалось выяснить, что это счётчик для Яндекс.Метрики. Интерпретация страницы просто прекращается после отказа любого внешнего компонента. Как говорится, на разработку было выделено много рублей… Так почему же кидается исключение? В моём браузере было установлено расширение Kaspersky Protect. Отключение разного рода маячков и счётчиков, видимо, входит в защиту от отслеживания, включенного по умолчанию. Это было причиной проблемы. Заказ еды я потом сделал на другом, более технически продвинутом сайте.
К сожалению, эта проблема довольно распространена. Только после этого случая я понял непонятное поведение и других сайтов, которые мне встречались. Надеюсь, у web-разработчиков, попавших на эту статью, опыта прибавится.
ЛК Ростелеком
Наверное, у каждого россиянина найдётся история «интересного» общения с представителями Ростелекома. Но моя будет про небольшой баг. В поддержке ответили, что так не считают, но программисты прикол поймут.
Скриншот из моего личного кабинета:
Что же такое «n» в инициалах? Правильно, это NULL!.. Т.к. не у всех есть отчество, его можно не указывать:
В базе данных хранится значение NULL, представители Ростелекома считают нормальным выводить это значение на экран. По-моему, это совсем ненормально. Возможно, я просто мыслю как C++ программист, и меня настораживает это значение :D
Мобильные приложения
РЖД Пассажирам
В мобильном приложении РЖД встретилась интересная ошибка.
Скрин из мобильного приложения:
Я читал ответы на вопросы и ничего не понимал. Тексты были абсолютно несвязными. Но после одной странички всё стало понятно:
Параграфы документации хранились в массиве и выводились на экран в обратном порядке. Разработчик что-то напутал с сортировкой или счётчиками циклов в коде. В последней версии приложения этот баг исправлен.
ВТБ-Онлайн
Это был прекрасный банк с удобным приложением. Но летом 2019 года, видимо, в команду пришёл «эффективный» менеджер, и приложение испортилось. Самым большим преимуществом для меня была удобная и быстрая поддержка. Но летом 2019 года начались эксперименты с ботом в чате поддержки. Этот бот был очень сильно забагован. Как минимум на протяжении 3-х месяцев в чате поддержки был жёсткий рассинхрон. На сообщения никто не отвечал, чат пустовал, а после перезагрузки приложения выяснялось, что чат наполнен сообщениями бота, но они выводились только после перезагрузи. Но тогда сеанс уже закрывался, и со следующим сообщением повторялся тот же самый баг. По электронной почте поддержка ВТБ всегда быстро реагировала, но ничего не делала по существу.
Последней каплей для меня стал ещё один баг в чате поддержки, который до сих пор не исправлен:
Приложение тупо не загружает скриншоты с телефона, на котором работает приложение. Это Epic Fail. Я отказался от карт банка и свёл оставшиеся активности в банке к минимуму.
Сбербанк Онлайн
Возможно, самый забагованный банк в России. Среднее время исправления подтверждённого бага по моей многолетней практике – 1 год.
Вот самый вопиющий, на мой взгляд, случай.
При передаче показаний приборов учёта для оплаты жилищно-коммунальных услуг (далее ЖКУ) вас ждёт неприятный сюрприз:
Сразу возникает вопрос, почему мои данные не принялись, но взгляд на следующий скриншот всё объясняет:
Поясню дополнительно: показания ПУ принимаются с точкой, а для ввода на клавиатуре есть только символ «запятая».
Этот баг откровенно мешал пользоваться приложением, и я часто обращался в поддержку за его исправлением. С момента обнаружения баг просуществовал 6 месяцев (февраль-июнь). После чего, в июльском обновлении, его исправили, включив стандартную клавиатуру. Но это не конец истории! В следующем же месяце (август) в очередном обновлении приложения вернули клавиатуру без нужного символа! Я не знаю, что могло произойти в команде разработки, что пришлось делать такой откат изменений, но банком я пользоваться перестал. Это был один из многочисленных багов, и они практически не исправляются.
Связь с поиском ошибок в коде
Появление описанных проблем и ошибок имеет определённые причины. Это недочёты в процессе разработки программ, а также в организации работы сотрудников в целом. От написания кода до доставки приложения пользователю проходит несколько этапов.
Выявленные проблемы – это, в первую очередь, допущение отделов тестирования. В крупных компаниях это обычно большие команды, занимающиеся только тестированием. Но их эффективность может страдать от разных факторов.
Один из важных факторов, ухудшающий работу тестировщиков, – ошибки, которые можно было исправить ещё на этапе написания кода. Обработка найденных багов отнимает время нескольких людей. Но некоторые из них могли бы и не дойти до тестировщиков, что, в свою очередь, сэкономило время тестировщиков. Они бы потратили его на более продуктивное и высокоуровневое тестирование.
Так, наша команда разработчиков анализатора кода PVS-Studio продвигает методологию статического анализа. Это этап разработки программного обеспечения, который стоит перед передачей приложения в отдел тестирования. По нашему опыту, большинство ошибок являются недочётами этапа разработки. И их можно исправить на раннем этапе, сэкономив время и деньги.
К сожалению, в отличии от программ с открытым исходным кодом, тут у меня нет возможности самостоятельно проверить код на наличие ошибок. Но если код написан на C, C++, C# или Java, то этим командам было бы полезно зайти на сайт и прогнать анализатор на своём коде. Для программ с открытым исходным кодом делается очень большой вклад этим инструментом.
Заключение
Замечать баги в используемом программном обеспечении я уже не перестану. Наверное, это не самое страшное, что могло произойти. У меня есть знакомые, которые работают в кинематографе (мультипликация). Так вот они замечают баги при присмотре мультиков, и это доставляет неудобство. По-моему, это даже хуже. Программы хотя бы можно доработать, в отличии от отснятого материала.
Как вы заметили, с поддержкой пользователей совсем всё плохо. Причём это характерно именно для крупных компаний. Им практически невозможно что-то сообщить и поделиться своим опытом. Некоторого успеха я достиг при посещении конференций для разработчиков. Там часто и присутствуют крупные компании, и некоторые вопросы реально можно обсудить и решить.
Если вам понравится новый формат обзоров багов и историй с ними, то я продолжу в том же духе.