Software Quality and Test:
Concepts, Tools and Job Market
Mehdi Shokoohi
What is Software quality?
● Software quality refers to the overall characteristics of
software that meet the needs of its users.
● It encompasses various attributes like functionality,
reliability, usability, efficiency, and maintainability.
● It’s all about requirements.
● A software requirements specification (SRS) is a
document that describes what the software will do and
how it will be expected to perform.
Business requirement vs Technical requirement
● Business requirements define what the organization wants or needs to
be able to do once the project is completed.
● Technical requirements, define solutions for how Business
requirements will be satisfied.
● Example for Netflix:
○ BR: New users can use our service for free for 30 days
○ TR:
■ User Registration and activation
■ Adding accepted Credit card
■ Access to service from day 0 to 29
■ User can cancel, no charge of CC
■ If not canceled CC will be charged on day 30 with default plan
cost
What is Software Testing?
● Software testing is the process of evaluating a software
product to identify bugs, defects, and any deviations from its
intended functionality.
● It involves creating test cases, executing them, and analyzing
the results to ensure the software meets specific
requirements.
● Testing plays a crucial role in delivering high-quality
software.
Types of Software
● Applications (majority of the market):
○ Desktop applicants
○ Web Applications
○ Mobile Applications
○ APIs (Application Programming Interface)
● System Software (less popular but gem!):
○ OS
○ Device drivers
○ Firmware
○ low level services, etc
● Games:
○ Console
○ Mobile
○ Web
○ Steam
○ Windows
Types of Software Testing
● Unit testing: Tests individual units of code (functions,
modules)
● Integration testing: Tests how different units interact
together
● System testing: Tests the entire software system as a whole
● Manual, Automated and Semi-Automated Testing
Automation Test Tools for Web Applications
● Codeless/Semi: Katalon Studio, Applitools,
Ranorex Studio, Robot Framework, etc
● Needs coding: Selenium, Playwright, Cypress,
WebdriverIO, Puppeteer, TestComplete, Testim
Technical skills
● Testing Fundamentals:
A strong understanding of software testing concepts, methodologies (like black-box
testing, white-box testing), and the Software Development Life Cycle (SDLC) is
essential.
● Test Case Design and TCMS: The ability to create comprehensive and
well-designed test cases that effectively cover different functionalities and potential
scenarios is crucial.
● Defect Management: Proficiency in using bug tracking tools to document, report,
track, and manage software defects is important.
● Automation Testing Skills: While not always mandatory, knowledge of automation
testing tools and scripting languages (like Selenium, Python) is increasingly
valuable.
● API Testing: Understanding of API (Application Programming Interface) testing
principles and tools is becoming a plus as many applications rely on APIs.
Non-Technical skills
● Analytical and Problem-Solving Skills:
The ability to analyze test results, identify root causes of defects, and think critically
to solve problems is essential.
● Communication Skills: Effective communication is key for collaborating with
developers, product managers, and other stakeholders. Testers need to clearly
document issues, explain technical concepts to non-technical audiences, and
advocate for quality.
● Attention to Detail: A keen eye for detail is crucial for spotting potential bugs and
inconsistencies in software.
● Teamwork: Testers often collaborate with developers, designers, and other team
members. The ability to work effectively within a team is important.
● Learning Agility: The software development landscape is constantly evolving.
Testers need to be adaptable and willing to learn new technologies and testing
methodologies.
More and nice to have:
● Understanding of Agile Methodologies
● Database Knowledge (SQL, NoSql)
● Working with Linux and command line
● Working with containerized technology (Docker)
● Working with CI/CD pipelines
● Working with Git
● Working with Test case management systems (qTest, xray, TestRail, etc)
● Experience with specific domains: knowledge in a specific domain (e.g.,
healthcare, finance, music, etc)
More to read
● https://www.guru99.com/software-testing.html
● https://www.softwaretestinghelp.com
● https://asq.org/quality-resources/software-quality
● https://www.w3schools.com/
● https://www.youtube.com/channel/UCpG5A4PZHTmdHnq23dmSEVg
● https://shokoohi.ca
Business Intelligence Developers Association Registered
لینک اینستاگرام:
https://www.instagram.com/p/C6Jss-4BacP/
لینک توییتر:
https://twitter.com/bidar_ca/status/1783178843383099529
2024/04/22