Pull to refresh
281.77
PVS-Studio
Static Code Analysis for C, C++, C# and Java

Поиск багов как образ жизни: обзор №3

Reading time 7 min
Views 2.8K

На фоне введения режима самоизоляции возросла популярность некоторых программ и сервисов. А следовательно, большее количество людей столкнётся с багами, которые ранее «не замечали» разработчики. В этот обзор вошли сервисы, которые так популярны сейчас: доставка еды и продуктов Delivery Club, Яндекс.Еда, iGooods и Автосуши. И другой софт, которым мне понадобилось воспользоваться, находясь длительное время дома: Сбербанк, Puzzle Movies и Налоги ФЛ.

Введение


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

Список предыдущих статей: обзор N1, обзор N2.

Доставка еды


Автосуши




Автосуши – большая сеть кафешек в России. Основана в 2009 году и сейчас присутствует примерно в 30 городах.

У меня к этой фирме двоякое отношение. С одной стороны, там лучшие роллы на мой субъективный вкус, с другой – самая ужасная поддержка, которую я только встречал. В наше время таким компаниям очень опасно проиграть конкуренцию на online-арене, но они как-то ещё держатся. Наверняка, из-за хорошей кухни. Но на моей памяти закрылось много кафе с хорошей кухней, поэтому делаем выводы.

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

Задача – повторить последний заказ. Для чего переходим в соответствующий раздел приложения:



Запомните сумму заказа 707 рублей. Эти записи кликабельные, переходим к последнему заказу и видим следующее:



Откуда прибавилось ещё 50 рублей? Я уверен, вы подумаете, что ценник подрос. Но это не так, ведь статья про баги. Переходим на страницу подтверждения заказа:



И тут сразу видим, как проявляет себя найденный баг. Дополнения, из-за недоработки приложения, дублируются в основном заказе. В конце концов, сумма правильная, но баг проявляет себя на начальном этапе повторения заказа, и когда он лежит в корзине – тоже будет неправильная сумма. Я бы не доверял online оплату приложению, которое не может даже заказ правильно посчитать.

Последнее замечание будет по странице готовности заказа:



Вкратце – бесполезная страница. Никогда не работает, никогда ничего не показывает. Тут я бы посоветовал брать пример с сервиса Яндекс.Еда. Вот там отлично работает аналогичный раздел.

Кроме багов, есть ещё куча вопросов к развитию приложения. Например, давно пора отказаться от подтверждения заказа по телефону, ввести Apple Pay и другие системы оплаты. Техническая поддержка ни разу не отвечала мне за много лет. Может, тут смогу донести до руководителей и разработчиков, что делать заказы в Автосуши намного сложнее и дольше, чем у конкурентов.

Delivery Club




Delivery Club – сервис доставки еды от Mail.ru Group. Как и на сервис Яндекс.Еда, на него сейчас возложена большая ответственность по поддержанию работы закрытых для посещения ресторанов. Но есть там одна проблема, с которой я столкнулся ещё в начале этого года. После перезапуска приложения там может пропасть активный заказ. Можно открыть приложение, а там ни статусов, ни заказов, ничего. Как сказали в поддержке: «Такое бывает, с Вашим заказом по-прежнему работают». Я давно не пользовался этим сервисом, но очень надеюсь, что под возросшей нагрузкой этот баг не стал проявляться чаще.

igooods.ru




igooods.ru – сервис доставки продуктов из таких крупных торговых сетей, как Лента, Метро, Глобус и т.п. В моём городе появился совсем недавно. Может, 2-3 месяца назад. И стоит отметить, что очень вовремя. Но, как и в любом софте, тут есть баги, которые мешают пользоваться приложением полноценно.

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



Кнопка добавления товара в существующий заказ находится под всплывающей полоской. Размер экрана телефона – 5.8 дюймов, т.е. вариант со слишком маленькой диагональю не рассматривается. Просто неудачная реализация в совокупности с плохим тестированием. Полоску убрать нельзя. Она «прибита», пока заказ не выполнен. Пришлось добавлять товар через сайт.

Но это не единственные плохие новости про iGooods. В день написания статьи мой район выпал из зоны доставки. Учитывая, что это жилой район в центре города, значит дела у сервиса идут совсем плохо. Им пришлось пойти на уменьшение зоны из-за возросшего спроса. Вместо бурного роста в сложившейся ситуации, сервис стагнирует из-за недоработок на разных уровнях. Например, на сайте мне удалось залогиниться только с третьей попытки.

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

Яндекс.Еда




Яндекс.Еда – тоже сервис доставки еды от одноимённой компании.

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

п.с. промокод за хороший отзыв можно кинуть в личку ;-)

Развлечения


Puzzle Movies




Puzzle Movies – для изучения английского языка по фильмам и сериалам. Со всеми особенностями сервиса можете ознакомиться на официальном сайте. Мне нравится очень большой выбор контента и двойные субтитры. Новинки сериалов оперативно пополняются. Но есть одно неудобство, о котором пойдёт речь.

Любое кино удобно смотреть на большом экране. Поэтому, выбирая между ноутбуком и телевизором, я отдал предпочтение последнему. Там есть Tizen OS и современный браузер. Основной функционал сайта отлично работает. С неудобством я столкнулся, когда начал пользоваться сайтом регулярно. Объём контента очень большой, а на телевизоре я ограничен во вводе. Тогда на помощь приходит раздел «Избранное», в котором можно сохранить начатые фильмы и сериалы, и в пару кликов к ним возвращаться. Вот тут я и обнаружил, что это единственная страница всего сайта, которая не загружается на телевизоре. На экране отображается символ бесконечной загрузки. Меня немного выручает голосовой набор в строке поиска, но из-за такой недоработки удобство пользования сайтом заметно снизилось.

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

Если кому интересно, то User-Agent с такого телевизора выглядит так:

Mozilla/5.0 (SMART-TV; Linux; Tizen 3.0) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/2.0 Chrome/47.0.2526.69 TV safari/537.36

Сбербанк Онлайн




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

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

Оказалось, что алгоритм распознавания QR-кодов в приложении Сбербанк Онлайн реагирует на любую распечатанную информацию. На этой анимации можно посмотреть, как это выглядит:



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

Тут уже видно, что это жуткий баг. Если продолжить «оплату», когда произошло «распознавание», то ожидаемо будет ошибка:



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

Налоги ФЛ




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

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



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

Связь с поиском ошибок в коде


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

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

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

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

К сожалению, в отличие от программ с открытым исходным кодом, тут у меня нет возможности самостоятельно проверить код на наличие ошибок. Но если код написан на C, C++, C# или Java, то этим командам было бы полезно зайти на сайт, скачать анализатор и прогнать его на своём коде. С помощью этого инструмента делается серьезный вклад в улучшение качества программ с открытым исходным кодом

Заключение


В процессе написания статьи я пользовался программой ScreenToGif для конвертации видео в анимации. Я даже не удивлён, что в процессе описания одних багов сталкиваюсь с другими:



В конце каждого обзора надеешься, что разработчики прислушаются, пересмотрят свои циклы разработки, вложатся в тестирование, но этого не происходит.
Tags:
Hubs:
+5
Comments 1
Comments Comments 1

Articles

Information

Website
pvs-studio.com
Registered
Founded
2008
Employees
31–50 employees