This post is part of a series on the test IO blog about real bugs that our testers have found during test cycles. In each post, we explore the details of the issue, explain its impact, and discuss what software teams can do to avoid similar problems.
A little about the seven layers of the OSI model:
- The application layer supports applications and end-user processes.
- The presentation layer formats and encrypts data to be sent across a network.
- The session layer establishes, manages and terminates connections between applications.
- The transport layer provides transfer of data between end systems, or hosts and is responsible for end-to-end error recovery and flow control.
- The network layer addresses networking, error handling, and congestion control.
- The data link layer encodes and decodes data packets.
- The physical layer gives hardware the ability to send and receive data on a carrier.
For our bug of the week, we’re taking a look at a bug with transmitted transfers. The tester is able to successfully upload a file, but the website does not display the file in the transfer overview tab.
Transmitted transfer bug
While testing the file transfer process on a file sharing site, one of our testers found a bug while beta testing the user transfer overview section. The tester attempted to upload a file. They completed the registration for an account and uploaded a file. The uploaded file was over 100MB, which was within the 20GB upload limit. The size of the uploaded file was also within the amount of available storage space.
Once the file upload completed, the site indicated that 100% of the file had been transmitted and the transfer was successful. It then generated and displayed a link for the user to copy (and share) for downloading the file. The tester navigated to the transfer overview tab. The transfer overview tab normally displays all transferred files available for sharing. The tab is also where users can check on the download status, edit, forward or delete the files. However, no files appeared under the tab.
The bug was initially discovered on Windows 7, on the Firefox browser. However, it ended up being reproducible across browsers and platforms.
Lessons learned and best practices from test IO
What we can learn from this bug is understanding the importance of the transmission control protocol and the transport layer of the OSI model. TCP helps establish and maintain a network connection through application programs that exchange data. The transport layer is responsible for moving the data.
One of the things the transport layer is responsible for is flow control. As it pertains to TCP, flow control handles on and off functionality, also known as “xon-xoff”. In summary, when the data being sent reaches capacity during transmission, the XOFF stops the data from transmitting. When the system is ready to transmit again it sends an XON character. Since flow control can be implemented on both software and hardware there could be an issue with the software, hardware or firmware being used. Firmware is the software embedded in hardware. As lifewire explains, firmware is software for hardware.
Here are some best practices for handling your transmission transfer issues. In the article “hardware vs software vs firmware, what's the difference” lifewire outlines the benefits and the vulnerabilities of all three. We recommend testing all three separately in order to rule them out. You should also confirm that you have all current updates installed, vulnerabilities are patched, and hardware regularly maintained.
If a large part of your business is offering file storage to customers, ensure that they have access to all features. They should be able to easily view, download, edit, delete or forward their desired files.