Module 5-1
Module 5-1
ENGINEERING
Module:5 Validation And Verification
Strategic Approach to Software Testing, Testing Fundamentals Test Plan,
Test Design, Test Execution, Reviews, Inspection and Auditing –
Regression Testing – Mutation Testing - Object oriented testing - Testing
Web based System - Mobile App testing – Mobile test Automation and
tools – DevOps Testing – Cloud and Big Data Testing
Test plan(procedures)
• A test plan is a detailed document which describes software testing
areas and activities. It outlines the test strategy, objectives, test
schedule, required resources (human resources, software, and
hardware), test estimation and test deliverables.
• The test plan is a template for conducting software testing activities
as a defined process that is fully monitored and controlled by the
testing manager. The test plan is prepared by the Test Lead (60%),
Test Manager(20%), and by the test engineer(20%).
Types of Test Plan
There are three types of the test plan
• Master Test Plan
• Phase Test Plan
• Testing Type Specific Test Plans
Master Test Plan
• Master Test Plan is a type of test plan that has multiple levels of testing. It includes a
complete test strategy.
Phase Test Plan
• A phase test plan is a type of test plan that addresses any one phase of the testing
strategy. For example, a list of tools, a list of test cases, etc.
Specific Test Plans
• Specific test plan designed for major types of testing like security testing, load testing,
performance testing, etc. In other words, a specific test plan designed for non-functional
testing.
How to write a Test Plan
Making a test plan is the most crucial task of the test management
process. seven steps to prepare a test plan.
• First, analyze product structure and architecture.
• Now design the test strategy.
• Define all the test objectives.
• Define the testing area.
• Define all the useable resources.
• Schedule all activities in an appropriate manner.
• Determine all the Test Deliverables.
Test plan components or attributes
The test plan consists of various parts, which help us to derive the
entire testing activity.
Test Plan Template
Below find important constituents of a test plan-
• 1 Introduction
• 1.1 Scope
• 1.1.1 In Scope
• 1.1.2 Out of Scope
• 1.2 Quality Objective
• 1.3 Roles and Responsibilities
• 2 Test Methodology
• 2.1 Overview
• 2.2 Test Levels
• 2.3 Bug Triage
• 2.4 Suspension Criteria and Resumption Requirements
• 2.5 Test Completeness
• 3 Test Deliverables
• 4 Resource & Environment Needs
• 4.1 Testing Tools
• 4.2 Test Environment
• Objectives: It consists of information about modules, features, test data
etc., which indicate the aim of the application means the application
behavior, goal, etc.
• Scope: It contains information that needs to be tested with respective of an
application. The Scope can be further divided into two parts:
In scope
Out scope
• In scope: These are the modules that need to be tested rigorously (in-
detail).
• Out scope: These are the modules, which need not be tested rigorously.
• For example, Suppose we have a Gmail application to test, where features
to be tested such as Compose mail, Sent Items, Inbox, Drafts and
the features which not be tested such as Help, and so on which means
that in the planning stage, we will decide that which functionality has to be
checked or not based on the time limit given in the product.
Quality Objective
• Here make a mention of the overall objective that you plan to
achieve with your manual testing and automation testing.
Some objectives of your testing project could be
• Ensure the Application Under Test (AUT)conforms to functional and
non-functional requirements
• Ensure the AUT meets the quality specifications defined by the
client
• Bugs/issues are identified and fixed before go live
Roles and Responsibilities
Detail description of the Roles and responsibilities of different team
members like
• QA Analyst
• Test Manager
• Configuration Manager
• Developers
• Installation Team
2.2) Test Levels
Test Levels define the Types of Testing to be executed on the
Application Under Test (AUT). The Testing Levels primarily depends
on the scope of the project, time and budget constraints.
Edit Account Manager Manager: A manager can add a edit account details for an existing account
Delete Account Manager Manager: A manager can add a delete an account for a customer.
A customer can be deleted only if he/she has no active current or saving accounts
Delete Customer Manager
Manager: A manager can delete a customer.
Identifying and describing appropriate test techniques/tools/automation architecture Verify and assess
the Test Approach
2. Test
Execute the tests, Log results, Report the defects.
Outsourced members
Developer in
3. Implement the test cases, test program, test suite etc.
Test
Test Builds up and ensures test environment and assets are managed and maintained
4.
Administrator Support Tester to use the test environment for test execution
Develop a Test tool which can auto generate the test result
2. Test tool
to the predefined form and automated test execution
10) KIF
• KIF mobile app testing tool is objective C based framework and is purely
for iOS automated testing. Kif is an mobile automation framework which
integrates directly with XCTests. It can be used when business folk are
not involved in writing or reading test specs.
• What Is DevOps?
• The goal of DevOps is to build better, faster and more
responsive software by bringing Development
and Operations teams together. DevOps is not a
methodology or a suite of tools but a cultural shift to remove
the barriers between Dev and Ops in order to meet the need
for shorter and more frequent software deliveries. This will
allow your organization to respond in a more agile manner
to changing business requirements. The DevOps cultural
shift depends on continuously optimizing workflow,
architecture, and infrastructure in order to deliver high-
quality applications.
• From the Agile Model to the DevOps Model
• Software developed with the Agile Model adheres to the following
four basic priorities stated in The Agile Manifesto:
1.Individuals and interactions over processes and tools;
2.Working software over comprehensive documentation;
3.Customer collaboration over contract negotiation; and
4.Responding to change over following a plan.
• Agile development takes a test-first approach, rather than the
test-at-the-end approach of traditional development. In agile
testing, code is developed and tested in small increments of
functionality. Agile project management promotes frequent
interaction between an IT department and business users and
tries to regularly build and deliver software that meets business
users' changing requirements. The flexible approach of the Agile
Model helps to ensure a streamlined software development
process that responds quickly to customer demand in a wide
variety of use cases.
• Agile software development can be implemented with a number of methodologies,
including Scrum, Kanban, Scrumban (a mix of Scrum and Kanban), extreme programming, and
many more. In the Scrum methodology, the development effort is broken down into a series of
short ‘sprints,’ or iterations, typically lasting 2 to 4 weeks. The goal of each sprint is to create
potentially shippable software by adding new or enhancing existing application features.
• The DevOps Model is the ‘Agile Model on steroids,’ which extends the cross-functional Agile
team made up of software designers, testers and developers to include support people from
Operations. The focus of this expanded agile team is the overall service or software your
company delivers to its customers, instead of just “working software” (the 2nd of the 4 Agile
principles listed above).
• Building a successful continuous, two-way DevOps software pipeline between your company
and your customers means creating a DevOps culture of collaboration among the various
teams involved in software delivery (developers, operations, quality assurance, business
analysts, management, and so forth), as well as reducing the cost, time, and risk of delivering
software changes by allowing for more incremental updates to applications in production. In
practice, this means teams produce software in short cycles, ensuring that the software can be
reliably released at any time. Where regular agile teams strive to deliver shippable software in
2 to 4 weeks, the ideal DevOps goal is to deliver code to production daily or every few hours.
• DevOps Tools
•
• software applications pass through five different stages when developed in a
DevOps pipeline:
1.Continuous Development
2.Continuous Testing
3.Continuous Integration
4.Continuous Delivery
5.Continuous Monitoring
• Because DevOps is a cultural shift that promotes collaboration between
development, QA and operations, there is no one single product that can be
considered the definitive DevOps tool. Often a collection of tools, from a
variety of vendors, are used in one or more stages of the DevOps toolchain.
The DevOps tools used in each stage will vary from organization to
organization, based on tools already in place, the skill level of your
developers and testers, and the types of applications you’re deploying.
• Here is a short list of some the most common DevOps tools and an
explanation of how they’re used in each stage:
• Continuous Development with Jira
• The de facto standard for the agile DevOps software development and
testing, Jira Software has powerful collaborative functionality that
visually highlights issues as they move through the project workflow,
which makes the Jira platform easy to use for planning development,
tracking daily work and reporting on project progress.
• Continuous Testing with Zephyr for Jira
• Although Jira Software is designed for issue, project and workflow
tracking on IT projects, many DevOps teams are also using it for test
case management so that development and testing teams can work
together in one system. Test issues can be created, executed, tracked
and reported on just like any other Jira issue in Zephyr for Jira, which
has the same look n’ feel of Jira.
• Continuous Integration with Jenkins
• Jenkins is a CI/CD server that runs tests automatically every
time a developer pushes new code into the source
repository. Because CI detects bugs early on in development,
bugs are typically smaller, less complex and easier to
resolve. Originally created to be a build automation tool for
Java applications, Jenkins has since evolved into a multi-
faceted platform with over a thousand plug-ins for other
software tools. Because of the rich ecosystem of plug-ins,
Jenkins can be used to build, deploy and automate almost
any software project--regardless of the computer
• Continuous Delivery/Deployment with Puppet or Chef
• Automated configuration tools such as Puppet or Chef allow you to avoid the
problem of “snowflake servers" in your delivery/deployment environment.
“Snowflake servers" are long-running production servers that have been
repeatedly reconfigured and modified over time with operating system
upgrades, kernel patches, and/or system updates to fix security
vulnerabilities. This leads to a server that is unique and distinct, like a
snowflake, which requires manual configuration above and beyond that
covered by automated deployment scripts.
• Using definition files (called manifests in Puppet, or recipes in Chef) to
describe the configuration of the elements of a server is a key best practice
in Infrastructure as Code, which allows environments (machines, network
devices, operating systems, middleware, etc.) to be configured and specified
in a fully automatable format rather than by physical hardware configuration
or the use of interactive configuration tools.
• Continuous Monitoring with Splunk or Elk
• Both Spunk and Elk are log monitoring tools that allow you to do
data analysis on transactions that take place in your IT
applications after they’ve been deployed to ensure uniform
performance, availability, security, and user experience. Both
Splunk and ELK supply a scalable way to collect and index log files
and provide a search interface for users to interact with the data
in order to create visualizations such as reports, dashboards or
alerts.
• Splunk is a paid service that bills according to the volume of your
transactions. The ELK Stack is a set of three open-source
products—Elasticsearch, Logstash, and Kibana—all developed
and maintained by Elastic.
• DevOps Test Automation
• Choosing the right DevOps test automation tool is vitally
important for your organization since the right software testing
tool in the right hands can foster team collaboration, drive down
costs, shorten release cycles, and provide real-time visibility into
the status and quality of applications in your DevOps pipeline.
• Test automation works by running a large number of tests
repeatedly to make sure an application doesn’t break whenever
new changes are introduced—at the different Unit-, API- and GUI-
levels of the Test Automation Pyramid. In addition to Continuous
Integration tools such as Jenkins described above, here are some
other useful tools for building, testing and deploying applications
automatically when requirements change in order to speed up
the release velocity of your pipeline apps.
• Bamboo
• Bamboo is a CI/CD server from Atlassian. Like Jenkins and other CI/CD
servers, Bamboo allows developers to automatically build, integrate, test and
deploy source code. Bamboo is closely connected with other Atlassian tools
such as Jira for project management and HipChat for team communication.
Unlike Jenkins, which is a free and open source agile automation tool,
Bamboo is commercial software that is integrated (and supported) out of the
box with other Atlassian products such as Bitbucket, Jira, and Confluence.
• Selenium
• Selenium is a suite of different open-source software tools used for
automated software testing of web applications across various
browsers/platforms. Most often used to create robust, browser-based
regression automation suites and tests, Selenium--like Jenkins--has a rich
repository of open source tools that are useful for different kinds of
automation problems. With support for programming languages like C#, Java,
JavaScript, Python, Ruby, .Net, Perl, PHP, etc., Selenium can be used to write
automation scripts that run against most modern web browsers.
• TestComplete
• TestComplete has a powerful and comprehensive set of features for
web, mobile, and desktop application testing. In addition to having an easy-
to-use record and playback feature, TestComplete allows testers to use
JavaScript, VBScript, Python, or C++Script to write test scripts. The tool also an
object recognition engine that can accurately detect dynamic user interface
elements, which makes it especially useful in applications that have dynamic
and frequently changing user interfaces. Since it’s a SmartBear product,
TestComplete can be integrated easily with other products offered by
SmartBear.
• SoapUI
• SoapUI is a test automation tool for functional testing, web services testing,
security testing, and load testing. Specifically designed for API testing, SoapUI
supports both REST and SOAP services. SoapUI provides drag and drops
options for creating test suites, test steps and test requests to build complex
test scenarios without having to write scripts.
Big Data Testing
• Big Data Testing is a testing process of a big data application in
order to ensure that all the functionalities of a big data application
works as expected. The goal of big data testing is to make sure that
the big data system runs smoothly and error-free while maintaining
the performance and security.
• Big data is a collection of large datasets that cannot be processed
using traditional computing techniques. Testing of these datasets
involves various tools, techniques, and frameworks to process. Big
data relates to data creation, storage, retrieval and analysis that is
remarkable in terms of volume, variety, and velocity. You can learn
more about Big Data, Hadoop and MapReduce
What is Big Data Testing Strategy?
• Testing Big Data application is more verification of its data processing rather
than testing the individual features of the software product. When it comes to
Big data testing, performance and functional testing are the keys.
• In Big Data testing strategy, QA engineers verify the successful processing of
terabytes of data using commodity cluster and other supportive components. It
demands a high level of testing skills as the processing is very fast. Processing
may be of three types
• Along with this, data quality is also an important factor in Hadoop
testing. Before testing the application, it is necessary to check the
quality of data and should be considered as a part of database
testing. It involves checking various characteristics like
conformity, accuracy, duplication, consistency, validity, data
completeness, etc. Next in this Hadoop Testing tutorial, we will
learn how to test Hadoop applications.
• How to test Hadoop Applications
• The following figure gives a high-level overview of phases in Testing
Big Data Applications
•
• Big Data Testing or Hadoop Testing can be broadly divided into three steps
• Step 1: Data Staging Validation
• The first step in this big data testing tutorial is referred as pre-Hadoop stage involves process validation.
• Data from various source like RDBMS, weblogs, social media, etc. should be validated to make sure that
correct data is pulled into the system
• Comparing source data with the data pushed into the Hadoop system to make sure they match
• Verify the right data is extracted and loaded into the correct HDFS location
• Tools like Talend, Datameer, can be used for data staging validation
• Step 2: “MapReduce” Validation
• The second step is a validation of “MapReduce”. In this stage, the Big Data tester verifies the business
logic validation on every node and then validating them after running against multiple nodes, ensuring
that the
• Map Reduce process works correctly
• Data aggregation or segregation rules are implemented on the data
• Key value pairs are generated
• Validating the data after the Map-Reduce process
• Step 3: Output Validation Phase
• The final or third stage of Hadoop testing is the output validation
process. The output data files are generated and ready to be moved
to an EDW (Enterprise Data Warehouse) or any other system based
on the requirement.
• Activities in the third stage include
• To check the transformation rules are correctly applied
• To check the data integrity and successful data load into the target
system
• To check that there is no data corruption by comparing the target
data with the HDFS file system data
• Architecture Testing
• Hadoop processes very large volumes of data and is highly resource
intensive. Hence, architectural testing is crucial to ensure the
success of your Big Data project. A poorly or improper designed
system may lead to performance degradation, and the system could
fail to meet the requirement. At least, Performance and Failover
test services should be done in a Hadoop environment.
• Performance testing includes testing of job completion time,
memory utilization, data throughput, and similar system metrics.
While the motive of Failover test service is to verify that data
processing occurs seamlessly in case of failure of data nodes
• Performance Testing
• Performance Testing for Big Data includes two main action
• Data ingestion and Throughout: In this stage, the Big Data tester verifies how
the fast system can consume data from various data source. Testing involves
identifying a different message that the queue can process in a given time
frame. It also includes how quickly data can be inserted into the underlying
data store for example insertion rate into a Mongo and Cassandra database.
• Data Processing: It involves verifying the speed with which the queries or map
reduce jobs are executed. It also includes testing the data processing in
isolation when the underlying data store is populated within the data sets. For
example, running Map Reduce jobs on the underlying HDFS
• Sub-Component Performance: These systems are made up of multiple
components, and it is essential to test each of these components in isolation.
For example, how quickly the message is indexed and consumed, MapReduce
jobs, query performance, search, etc.
• Performance Testing Approach
• Performance testing for big data application involves testing of
huge volumes of structured and unstructured data, and it requires a
specific testing approach to test such massive data.
• Performance Testing is executed in this order
1.The process begins with the setting of the Big data cluster which is
to be tested for performance
2.Identify and design corresponding workloads
3.Prepare individual clients (Custom Scripts are created)
4.Execute the test and analyzes the result (If objectives are not met
then tune the component and re-execute)
5.Optimum Configuration