An Introduction to Testing Web-Based Applications
Anyone looking to get started in software testing can learn a lesson from the unsuccessful launch of the 2013 Affordable Care Act’s (ACA) web application. This event highlighted the importance of thoroughly testing software until all major features and functionality of an application have been tested and high level bugs have been fixed before any product launch or go-live event takes place.
In the grand scheme of things, software testing is a critical component of any software development lifecycle (SDLC) that can’t be ignored. Testing must be taken seriously and given the right priority. Prioritizing software testing is one thing, however, having the ability and know how to test software is an entirely different ballgame that must be approached both methodically and systematically.
Today’s competitive world of business and technology requires aspiring software testers as well as the experienced minds to master the skills and abilities necessary to get and stay ahead in order to thrive and remain successful. As in anything in life, knowing what to do is just as important as knowing how to do it. Most software testing job openings today seek candidates that can test web-based applications. Therefore, learning how to test web-apps is necessary to stay ahead of the competition.
In this article, I’m going to walk you through three key areas you should strongly consider when looking to develop your software testing skills when it comes to testing web-based applications.
The first aspect you should consider when testing web-based applications is the basic architecture of how web applications work. Most web-applications consist of the following basic architecture:
- Client System: The client system is where the web browser and User Interface (UI) reside. This is where the user types in a webpage he or she wants to visit and in turn the client system sends a hypertext transfer protocol (HTTP) request to a web server in order to receive information about a website or webpage.
- Web Server: The web server receives this HTTP request from the client system and responds with the requested data. A typical process a web server might take is to send this request to an application server that in turn queries a database for the requested data.
- Application Server: Based on the client system’s requests, the application server processes any request from the web server, performs any needed transactions, or simply queries the database and sends this information back to the web server.
- Database Server: The database server is where most of the system’s data, records, fields, and information are housed. The database server processes the query or transactions and sends the retrieved data back to the application server.
Understanding the basic architecture is key for any software tester looking to formulate a testing strategy when testing web applications. Based on this knowledge, the test strategy can include functional and usability testing for the front end/client side system, integration, performance, and unit testing on the web and application servers. Having knowledge of the Structured Query Language (SQL) and how databases work will be key when data needs to be retrieved while interacting with the database server for testing purposes.
To ensure proper test coverage, testing web-based applications should also consist of manually testing the following areas:
- Web Browsers: Manual testing of web applications should consist of testing web browser differences. Different web browsers have different features and functionalities that make them unique; these differences must be tested accordingly.In addition, when a web application is developed, there’s no telling which web browser a user might decide to use when accessing the web-app. Therefore, a good test case for testing the web-application will be to test all web browsers. I’ve listed below a few of the browsers a tester should keep in mind when testing web applications.
- Usability: When you conduct usability testing, you’re testing the “look and feel” of the web site or application you are testing. This also includes how user friendly the site is and how easy it is to navigate the site.
- Integration: As a web tester, you should test how well the site or application interacts with other applications, data, hardware, mobile devices, etc.
- Basic Functionality: Testers should test that the application functions correctly by validating navigation, drop-down menus, radio buttons, links, calculations, calendars, search functionality, and display of information. One good way to ensure the proper functionality is tested is to review the business requirement document (BRD) and see which key functionality the users are most interested in.
- Security: Test the application’s security features. This should include but not be limited to its login features, role-based access, security controls, and user authorizations.
- Other Components: The other areas of a web-based application a tester should test include testing the reload and refresh functionality, email functionality, each web browsers ability to upload and download files, caching, navigation and printing functionality.
Automation testing is a hot trend in today’s software testing landscape. Therefore, utilizing the advantages that automation testing brings to the fold is a great resource that all software testers should leverage.
However, the first step in building a great automation framework is to have a solid automation strategy in place as an organization and asking oneself what the best automation approach should be. How will the automated test cases be maintained? Who will be building out these automated test cases? What programming or scripting languages are required to write these automated test cases?
If needed, what will be the costs to hire the right resources to build out the test cases? Or, the associated cost to train up in-house testers? What will be the licensing cost for commercial automation tools? These are all questions an organization should consider as they look to automate their web-based applications.
Automation testing is best done when coupled with running regression test cases in areas where you have repeatable and mundane tests that can easily be automated. This will help free up the testing resources to focus more on building out newer and more effective test cases. That being said, when considering automation of web browsers, there are a few automation tools that can come in handy to help accomplish this task.
- Selenium IDE: Selenium Integrated Development Environment (IDE) is a record and playback tool for running tests. Selenium IDE is a Firefox add-on.The tests can be saved in HyperText Markup Language (HTML) format and can also be exported to any programming language or binding (C#, Java, Ruby, Python, PHP, etc). However, one setback to using Selenium IDE for automation testing is that the tests are brittle and can only be used with the Firefox web browser.
- UFT/QTP: Another popular automated testing tool testers should be familiar with is Unified Functional Testing (UFT). It was formerly known as Quick Test Professional (QTP). This is a commercial product licensed by Hewlett Packard (HP).UFT can also be used as a record and playback tool. However, to really harness the power behind UFT, one must have strong knowledge of VBScript. One great advantage UFT has is that it can be used to test both Web-based applications as well as desktop applications.
As one looks to grow in the area of testing web-based applications, don’t forget these three important concepts: understanding the basic architecture of web applications, knowing what to test for when performing manual testing, and being proficient in utilizing automation testing tools. These are great ways to get started and develop the skills necessary for a lasting and rewarding career as a software tester.