Assignment 02

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

SENG 31212 - Software Quality

Assignment 02
Summary report of industrial session.

Josiah P.
SE/2017/022
On September 18, 2021, an industrial session was conducted by SETU in which an industrial expert with
seven years of experience discussed with us many useful things about software quality assurance tools
and techniques.

The discussion was conducted under the following six main topics.

1. What is Quality Assurance?


2. Different components of Quality Assurance.
3. Role of QA in SDLC.
4. Types of Software Testing and techniques.
5. Different tools used in Quality Assurance.
6. What does the industry expect from a QA Engineer now?

Under the first topic he discussed what is QA, how QA differ from software testing, and what is a QA’s
job?

Quality Assurance is defined as a procedure to ensure the quality of software products or services
provided to the customers by an organization, while testing is mainly detecting the bugs or bigger
failures. Quality assurance focuses on improving the software development process and making it
efficient and effective as per the quality standards defined for software products. He mentions that QA
is the Gate Keeper of Software Development.

Under the second topic he discussed Quality Assurance Process, Difference between Quality Control and
Quality Assurance? and Differences between Software Quality Assurance and Software Testing.

There are four phases in quality assurance process

1. Planning - establish the process related objectives


2. Do - development and testing of Processes
3. Check - monitoring of processes
4. Act - implement actions

QA is process-oriented, and it focuses on preventing quality issues. QC is product-oriented and focused


on identifying quality issues in manufactured products.

Then under third topic he discussed roles of a QA in each SDLC phases.

1. Requirement Analysis.

• Feasibility study of the Requirement


• Risk Analysis/Forecasting
• Bug Prevention/Mitigation
• Identifying loopholes
• Properly express functional requirements and review the gap between features so that they
can be analyzed as early as possible.
• Establish the environment requirements.
• Prepare the higher-level test plan including the risk and tools used in the project.
• Establish defect tracking methodology.
• Identify the type of the testing to be carried in the project.

2. Requirement Analysis.
• Feasibility study of the Requirement
• Risk Analysis/Forecasting
• Bug Prevention/Mitigation
• Identifying loopholes
• Properly express functional requirements and review the gap between features so that they
can be analyzed as early as possible.
• Establish the environment requirements.
• Prepare the higher-level test plan including the risk and tools used in the project.
• Establish defect tracking methodology.
• Identify the type of the testing to be carried in the project.

3. Development
• Maintain the algorithm for the development.
• Develop the test case so that it can be used in TDD or BDD.
• Preparation of Environment for testing.

4. Testing
• Verify the test are run according to the test plan.
• Execute the test case.
• Testing is also known as defect detection phase, in this phase, we find the defect and report
them as early as possible.
• Verify the bugs are fixed before release
• Perform Different types of testing and assure that no defects remain in the project.

5. Deployment/Documentation
• Prepare all standard Guides and Manual and ensure nothing has been left behind which can
create a problem with software deployment.

Under forth topic he discussed many things like types of software testing, software testing techniques,
about a QA’s mind set, and what is a test scenario, why create test scenarios, how to write test
scenarios, test scenario identification, test case designing, automation, production release management,
etc. and also, he gives some tips and example.

We can classify software testing under two main types. Functional Testing and Non-Functional Testing.
Unit testing, integration testing, system testing, beta/acceptance testing are some of the functional
testing, and security testing, compatibility testing, usability testing are some of the non-functional
testing.
He mentioned that A Good QA always look at things in different perspective and will not limit
themselves in the requirement specifications.
Software Testing Techniques
1. Test scenario
A Test Scenario is defined as any functionality that can be tested. It is also called Test
Condition or Test Possibility. Creating Test Scenarios ensures complete Test Coverage. He mentions
that a tester can follow these five steps to create Test Scenarios.

Step 1: Read the Requirement Documents like BRS, SRS, FRS, of the System Under Test (SUT). Also
refer uses cases, books, manuals, etc. of the application to be tested.

Step 2: For each requirement, figure out possible users' actions and objectives. Determine the
technical aspects of the requirement. Ascertain possible scenarios of system abuse and evaluate
users with hacker’s mindset.

Step 3: After reading the Requirements Document and doing the due Analysis, list out different test
scenarios that verify each feature of the software.

Step 4: Once listed all possible Test Scenarios, a Traceability Matrix is created to verify that each &
every requirement has a corresponding Test Scenario

Step 5: The scenarios created are reviewed by the supervisor. Later, they are also reviewed by other
Stakeholders in the project.

2. Test case designing


A good test case design technique is crucial to improving the quality of the software testing
process. A test case design must include title, description, preconditions, assumptions, test steps
and expected results.
Types of test case design techniques
1. Specification-Based or Black-Box techniques
• Boundary Value Analysis (BVA)
• Equivalence Partitioning (EP)
• Decision Table Testing
• State Transition Diagrams
• Use Case Testing
2. Experience-Based techniques
• Error Guessing
• Exploratory Testing
3. Structure-Based or White-Box techniques
• Statement Testing & Coverage
• Decision Testing Coverage
• Condition Testing
• Multiple Condition Testing
• All Path Testing

3. Test Automation
Test Automation is the best way to increase the effectiveness, test coverage, and execution speed in
software testing. We can’t automate all test cases.
Test cases to be automated can be selected using the following criterion to increase the automation
ROI (Return on Investment)
• High Risk – Business Critical test cases
• Test cases that are repeatedly executed
• Test Cases that are very tedious or difficult to perform manually
• Test Cases which are time-consuming
The following category of test cases are not suitable for automation
• Test Cases that are newly designed and not executed manually at least once
• Test Cases for which the requirements are frequently changing
• Test cases which are executed on an ad-hoc basis.

Under fifth topic he discussed different tools used in Quality Assurance

There are many different testing tools in use for different purposes.

For Test Management


TestRail, kualitee, QAComplete, TestLodge, PractiTest, Zephyr, spiraTest, TestLink, qTestmanager, jira,
etc.

For Functional Testing


Selanium, TestCafe, Puppeteer, cypress, etc.

For API Testing


Katalon, SoapUI, Tricentis, postman, apache, assertible, apigee, karate DSL, swagger, REST-Assured, etc.

For Performance Testing


JMeter, LoadNinja, LoadRunner, WebbLoad, LoadComplete, NeoLoad, LoadView, etc.

And finally, he discussed What does the industry expect from a QA Engineer now?

He mentioned the following skills which the industry expects from a QA

• Strong Knowledge on QA Basics


• Excellent Communication
• Strong Analytical Skills
• Quick and Continuous Learning
• Technical Tools and Technical Knowledge
• Wise Time Management
• Automation Proficiency
• ISTQB Certification
• DevOps Awareness

You might also like