Software QA: Types of Testing
Software QA: Types of Testing
Introduction
Testing is very critical process in software development life cycle as it assures quality of
the application that has direct influence on customer satisfaction, repeat sales cycles and
thus company’s revenues. This involves working on the application the same way end users
uses the application before its generally available to public. To assure quality in the product,
it is very critical to understand the business requirements of the application and customer
expectations. To make sure that we deliver quality software product, different
methodologies and strategies are used during the QA life cycle which we will discuss in
detail in later part of this document.
• Idea
• Gathering User requirements
• Developing detailed design document
• Development process (coding)
• QA Cycle
• Exit criteria
• Product release (General Availability)
• Sustaining
• Planning next release
QA Cycle:
Types of Testing
Graphical User Interface (GUI) Testing: The graphical interface provided by the
application to interact with the user is GUI. Testing the GUI involves testing error
messages, looking for required field indicators and clear demarcation of different sections
of the data entry form etc.
Regression Testing: Testing the same features of the application or executing the same
test cases over subsequent builds to ensure that the functionality is not broken due to code
changes is regression testing. When code is changed to fix an issue it may break some other
functionality thus causing some test case to fail. To ensure that code changes are not
breaking anything that was working fine earlier regression testing is done.
Integration Testing: Some times two software applications may share data or communicate
each other either as part of the functionality or to fulfill a business process. Or some times
in complex application likes ERP, two modules may have to communicate each other and share
data between them. Testing this is known as integration testing. If integration is between
two different modules within the same application then it’s known as internal Integration
testing. If integration is between two different application then its external integration
testing.
System Testing: Testing the software application as a single system to make sure that
every aspect of the application is working as per the design is System Testing. Generally
testing end to end business workflow falls under this category. All above types of testing
will be performed in system test cycle.
Load and Performance Testing: Testing the performance of the application under given
known load is load and performance testing. The vital statistics of the application servers
during this testing indicates the scalability of the application under different load patterns.
Unit Testing: Testing individual blocks of the code as unit to make sure that the unit is
working fine is Unit Testing. Generally this is done by developers to make sure that the
code is working fine before making the code changes to the build. Popular tool for Java unit
testing is JUnit.
Methods of Testing:
Black box Testing: Testing the application’s functionality from end user’s perspective is
black box testing. Here the tester does not look into the technical aspects of the
application development like development platform, language, data base details etc. All
involved here is set of input parameters, functional steps and validation the output as per
the test case.
White Box testing: Testing the application leveraging the development environment either
to test the API of the application or for internal testing purpose. Generally white box
testing is done using the same development code by making called to the existing code by
passing different test data. Whenever testing needs to be done bypassing the UI or need
to test the code with different test data before its can take place n the build, white box
testing methodology is used.
Bug Tracking System: A database driven application used to create, track the different
status of the bug during its life is bug tracking system. Report generation capabilities of
the bug tracking system enables look at the bug count against a particular build,
environment, functional module, assigned to individual developer or submitter. Bug tracking
also helps in looking at the bugs found versus bugs fixed and verified and test coverage, a
key measure to determine the readiness of the application for release.
Build: The process of getting all related software components together and making a
workable application is build. The process involves compiling the code together and making
sure all necessary components exists to run the application successfully and then making all
binary code to machine code for deployment.
Deployment: The process of coordinating the hardware and software components of the
application to make it workable is deployment. This involves copying the code to respective
servers and integrating different hardware components together and making sure hardware
and software components communicates each other without any interruption.
Test Plan: High level document that describes overall planning in testing a specific release
of the application specifying supported environments, databases, third party applications
and resource management. This document also serves as guide line document from both
technical and managerial point of view. By going through this document one can assess the
overall test strategy of the application.
Test Case: A detailed step by step documentation that describes navigation path, input
parameters, functional steps and expected results.
Difference between EXE and DLL: Executable occupies memory of the computer even
when user is not using that specific application where as DLL are called whenever needed
and when the call to the DLL is closed the .DLL is unloaded from the memory automatically.
The process of testing the application with the help of a external script that mimics the
user actions of a test cases and runs on the specific application under test is automated UI
testing. Most commonly used UI based automation testing tools are listed below.
Controller:
• Create a scenario with one or more VuGen scripts
• Set design time parameters that involves adding more machines to run pool as well
as number of Virtual users to be executed.
• Set Run Time parameters that dictates ramp up, duration and ramp down of scenario
execution and scheduling.
• Execute the scenario.
Analysis:
• Once scenario is executed in Controller, select Analysis icon on tool bar to create
analysis report to be opened in analysis module.
• Graphs for each measure with respect to time of execution can be seen here with
summary of results.
• At any time we can overlay different graphs to see more than one measure with
respect to each other while x-axis always shows time of execution.
Controller sends the information as recorded in the script in the protocol it was recorded
and reads the reply from the server for validation. During the process, throughput,
response time, transaction information, hits per second, CPU and memory utilization of the
server and client are recorded.
Scenarios can be created either manual or goal oriented. If its goal oriented, predefined
goals are available within Load Runner and can be designed on need based.
Do you have any automation testing in the project? If yes what’s the tool and explain
the process.
Please say yes, if you are comfortable in explaining the automation process. Explain
the process right from evaluation, test case development, frame work development
and automating the test cases.
You do not have any documentation to go through and you need to be on your toes to
release product, how do you about it?
This is common question if you are interviewing for a start up size companies. The
answer goes like this. First I will talk to the product management group to
understand the application from user’s perspective and then talk to development to
understand how the application is developed including detailed architecture and data
base schema of the application. Exit criteria needs to be arrived at after
understanding business workflows and regular bug tracking mechanism needs to
follow to release the product.
What’s a bug tracking system and what did u use for tracking bugs?
Please refer to Load and Performance testing section above.
Did u use any version control systems?
Yes, different version control systems are Visual Source Safe, PVCS, CVS, Perforce,
Clear Case.
UPDATE table
Set column_name = ‘value’
Where <condition>