The development of static code analyzers and the struggle for the quality of open-source projects for more than six years could not but affect my interaction with the programs after hours. Unfortunately, I constantly encounter various bugs and, even more unfortunately, it is almost impossible to influence this. I decided to collect some stories about interesting bugs and their correction or ignore. An alternative format for an article on finding errors in code.
In everyday life, we already use websites and mobile applications more often than computer applications. There are very few open source projects in this area. Most projects are products of large companies with several support lines. Reporting a bug through the first support line is an almost useless activity. The problem is especially acute with banking applications. What about sites? Site owners often do not have a development team at all. And if a service is provided through the site, then communication with the managers of these services goes even worse than with the first line of support. The most interesting stories will be below. I hope they help companies pay attention to the quality of their software products.
Bugs on sites
2×2 tv channel
Perhaps, 2×2 – the only TV channel that I watch. I haven’t connected any television, and I was very pleased when live broadcast appeared on the site. Having a TV with internet access was the perfect solution for me. But in reality it turned out to be much more complicated.
Live through the browser on the TV did not work. Because reporting bugs to developers is part of my career, I quickly found contacts on the official website and tried to report a problem. Why did you try? For 2 months it was not possible to receive any answers from two mailing addresses. And the VK group did not answer anything sensible (the marketer, promoting the group in social networks, was clearly not up to me with a non-working site).
But I did not despair. The problem was clearly in the broadcast and I was able to track it. She came from Rutube servers. It took about a month to try to contact their specialists. The most successful communication happened with the administrator of the Rutube group in VK. I was given the contacts of the system administrator. His colleague promptly answered the letter to him, and we agreed to connect to record the logs. It turned out that the server was not configured for such a connected client (TV with Tizen). It took 2 hours to solve the problem. Thanks to Alexei Lebedev from Rutube and the admin of the group in VK, who were the only ones who responsibly reacted to their work in this entire chain of “contacts”.
Restaurant MaMa Mia
Online Mama mia Can not pay online order. At least it didn’t work out for me. And the reason, as it turned out later, is the poor quality of the code. But let’s take it in order.
When the basket was fully formed, the button “Place an order” did not show any signs of life. And then in the mail I found this:
Each click on the “idle” button formed a new order. As you can see, I did not deny myself the pleasure of thoroughly testing this bug: D
There is no feedback form on the site and any other contacts except the phone. There, of course, managers who are far from similar problems answer. With the VK group of this restaurant the same situation. I could not get more or less relevant contacts.
In fact, this is a serious problem for the business, when some flaws, especially with finances (I wanted to pay for the order, but could not), remain invisible to the management. Moreover, even we ourselves recently managed to get into like a situation where the trial key request form has broken for five days. We really regret the lost users 🙁 And in the restaurant, apparently not.
Having not received any feedback from communicating with managers, I opened the browser console and started looking (by the way, I hardly understand web development):
Yes, this is an uncaught exception! What a beauty. This is where a static analyzer could help.
Using a couple of queries, the search engine managed to find out that this is a counter for Yandex.Metrica. The interpretation of the page simply stops after the failure of any external component. As they say, a lot of rubles were allocated for development … So why is the exception thrown? The Kaspersky Protect extension was installed in my browser. Disabling all sorts of beacons and counters, apparently, is in protection from tracking, enabled by default. This was the cause of the problem. I then ordered food on another, more technically advanced site.
Unfortunately, this problem is quite common. Only after this incident, I realized the incomprehensible behavior of other sites that I met. I hope that the web developers who came to this article will have more experience.
Probably, every Russian has a history of “interesting” communication with representatives of Rostelecom. But mine will be about a small bug. They answered in support that they didn’t think so, but the programmers would understand the joke.
Screenshot from my personal account:
What is the “n” in the initials? That’s right Null! .. Because not everyone has a middle name, you can not specify it:
The value is stored in the database Null, representatives of Rostelecom consider it normal to display this value on the screen. In my opinion, this is completely abnormal. Perhaps I’m just thinking as a C ++ programmer, and this value alarms me: D
Russian Railways Passengers
An interesting error was encountered in the Russian Railways mobile application.
Screen from a mobile application:
I read the answers to the questions and did not understand anything. The texts were completely incoherent. But after one page everything became clear:
Documentation paragraphs were stored in an array and displayed in reverse order. The developer messed up something with sorting or loop counters in the code. In the latest version of the application, this bug is fixed.
It was a wonderful bank with a convenient application. But in the summer of 2019, apparently, an “effective” manager came to the team, and the application went bad. The biggest advantage for me was convenient and quick support. But in the summer of 2019, experiments began with the bot in the support chat. This bot was very buggy. For at least 3 months, there was a hard desync in the support chat. Nobody answered the messages, the chat was empty, and after restarting the application it turned out that the chat was full of bot messages, but they were displayed only after a reboot. But then the session was already closed, and with the next message the same bug was repeated. By email, VTB support has always responded quickly, but has done nothing in essence.
The last straw for me was another bug in the support chat, which has not yet been fixed:
The application stupidly does not download screenshots from the phone on which the application is running. This is an Epic Fail. I refused bank cards and kept the remaining activity in the bank to a minimum.
Probably the most banked bank in Russia. The average fix time for a confirmed bug in my many years of practice is 1 year.
Here is the most egregious case, in my opinion.
When transmitting the readings of metering devices for payment of housing and communal services (hereinafter ZhKU), an unpleasant surprise awaits you:
The question immediately arises why my data were not accepted, but a look at the following screenshot explains everything:
I will explain additionally: PU readings are taken with a dot, and for input on the keyboard there is only a “comma” symbol.
This bug frankly interfered with the use of the application, and I often contacted support for fixing it. Since detection, the bug has existed 6 months (February-June). Then, in the July update, it was fixed by turning on the standard keyboard. But this is not the end of the story! The next month (August), in the next update of the application, the keyboard was returned without the desired character! I do not know what could have happened in the development team, that I had to make such a rollback of changes, but I stopped using the bank. This was one of many bugs, and they are practically not fixed.
Connection with the search for errors in the code
The appearance of the described problems and errors has certain reasons. These are flaws in the process of developing programs, as well as in organizing the work of employees as a whole. From writing code to delivering the application to the user, there are several steps.
Identified problems are, first and foremost, the approval of the testing departments. In large companies, these are usually large testing teams. But their effectiveness can suffer from various factors.
One of the important factors that worsens the work of testers is errors that could be corrected even at the stage of writing the code. Processing found bugs takes a few people time. But some of them might not reach the testers, which, in turn, saved the time of the testers. They would spend it on a more productive and high-level testing.
So, our code analyzer development team PVS-Studio promotes the methodology of static analysis. This is the software development phase that faces the transfer of the application to the testing department. In our experience, most errors are flaws in the development phase. And they can be fixed at an early stage, saving time and money.
Unfortunately, unlike open source programs, here I have no way to independently check the code for errors. But if the code is written in C, C ++, C # or Java, then these commands would be useful to go to website and run the analyzer on your code. For open source programs, very big is done contribution this tool.
I will not stop noticing bugs in the software used. This is probably not the worst thing that could have happened. I have friends who work in cinema (animation). So they notice bugs when watching cartoons, and this is inconvenient. In my opinion, this is even worse. At least the programs can be modified, unlike the footage.
As you noticed, with user support, everything is completely bad. Moreover, this is typical for large companies. It is almost impossible for them to communicate something and share their experience. I achieved some success when attending developer conferences. Large companies are often present there, and some issues can really be discussed and resolved.
If you like the new format for reviewing bugs and stories with them, then I will continue in the same vein.