The Performance of web sites is increasingly becoming important. Companies are realising the importance of snappy performance. Losses caused to businesses due to poor performance issues can be huge (including the company’s image). Tracking the performance issues, analyzing and resolving those before the code moves to production is increasingly important. This increase in the need for performance across major verticals in the market is causing a spur in the industry. With such a rapid movement in the domain, many functional testers are dipping into performance testing. Whilst learning these new technologies and tools many of the basics are missed; often it leads to a lot of re-work or an incorrect deliverable. To minimize this gap, I am writing this article.
A communications protocol is a set of procedures or rules to be followed for exchanging messages (communicating) between devices on a network. Protocols are structured using a layering scheme as a basis. Instead of using a single universal protocol to handle all transmission tasks, a set of cooperating protocols is used. These different protocols are governed by different rules and thus serve different purpose each.
- File Transfer Protocol (FTP) is used to transfer files from one host to another host over network.
- HTTP (Hypertext Transfer Protocol) servers as a request- response protocol for distributed, collaborative, hypermedia information systems. It is the foundation of data communication for world wide web (www). It functions in the client-server computing model. In HTTP, a web-browser, acts as a client, while an application running on a computer hosting a web site functions as a server. The client submits an HTTP request message to the server. The server, which stores content, or provides resources, such as HTML files, returns a response message to the client.
- SMTP (Simple Mail Transfer Protocol) is a protocol for sending e-mail messages between two servers. Most e-mail systems that send mail over the Internet use SMTP to send messages from one server to another; the messages can then be retrieved with an e-mail client using either POP or IMAP.
TCP/IP protocol Suite –
The Internet protocol suite, commonly known as TCP/IP, is the set of communications protocols used for the Internet and is the most popular protocol stack for wide area networks. TCP stands for ‘Transmission Control Protocol’ and IP stands for Internet Protocol. TCP/IP suite falls into 4 different layers –
Application layer: Process to process: On this layer, applications create user data and communicate this data to process (peers) on same or another host. Higher level protocols such as SMTP, FTP, SSH, HTTP, etc. operate on this layer.
Transport layer: Host-to-host: This layer deals with opening and maintaining connections between Internet hosts and constitutes the communication between two network hosts, either on the local network or remote networks. This is where flow-control, error-correction, and connection protocols, such as TCP, exist.
Internet layer: Internetworking: The internet layer has the task of exchanging data and establishing connections across network boundaries. Internet Protocol (IP) that defines IP addresses is a primary protocol in this layer.
Link layer: This layer defines the networking methods within the scope of the local network link on which hosts communicate without intervening routers.
Browser Cookie –
Browser cookie also referred as web cookie is a piece of data stored within a browser by a website and then subsequently sent back to the website by the browser. Cookies help the websites (servers) remember actions that the browser (client) performed in the past – such as logging in. Cookies also serve the purpose of user authentication and if not implemented correctly, a cookie’s data can be intercepted by a hacker to gain unapproved access to the user’s data and possibly to the originating website.
In modern performance test tools, cookies are managed by the tool and hence a performance test engineer doesn’t have to manage the cookie information while automating an end user’s action. The tool maintains the cookie information within itself and provides the web server with the cookie information during run time. Tools like Loadrunner and SilkPerformer also store cache information for each vuser and help performance test engineers to replicate– first time user (no cache) or revisiting user (use stored cache) scenario.
In networking, bandwidth is the maximum channel capacity of a network communication path. This path is the channel connecting computing devices. In performance tests, when aspiration is to emulate test more close to real time situation, bandwidth restrictions are also taken into consideration. Modern performance test tools provide us with the feature of putting network / bandwidth related restrictions. In loadrunner, this can be done using ‘speed simulation in ‘run time settings’. In SilkPerformer, this can be done by changing ‘Internet settings’ in ‘Active profile settings’.
LoadRunner Network Bandwidth Settings –
SilkPerformer Network Settings –
Bandwidth simulation can be achieved more effectively by using WAN emulators.
WAN emulation –
WAN emulation is creating a network scenario in the test environment, exactly similar to production environment (real-time, end user scenario). This can be achieved using WAN emulation tools. Popular amongst those are – WANem, Shunra, etc.
WAN emulation thus allows the performance test team to setup a transparent application gateway which can be used to simulate WAN characteristics like Network delay, Packet loss, Packet corruption, Disconnections, Packet re-ordering, Jitter, etc.
IP Spoofing –
IP spoofing in performance test domain is assigning different IP addresses to different VUsers during a performance test. This helps the web server identify requests coming from different vusers as the ones coming from different machines, thus taking the test to more real time scenario. IP Spoofing in performance center can be done in scenarios section.
Most application development team have moved onto an AGILE environment. This Agility in the software development process is opening more doors within performance testing domain. The aspiration in past was ‘resolving performance issues post app development’. The target now is ‘tracking performance issues right from the first day of development’. The need of performance test experts both conceptually and practically (tool knowledge) is going to increase. The questions that remains is – How will you leverage this opportunity?