Software Testing

  1. Software testing process
  2. Types and levels of testing
  3. Activities and roles in testing
  4. Testing environments
  5. Test Case Design techniques (open and closed views)
  6. Process for control and management of defects in artifacts

Software testing process

Is a process conducted for acquiring information about the quality of the software in hand. It should yield a perspective from the user side that can work as a path to understand how the product would behave in a real environment, and what undesired effects could occur. To put this in practice a component of the system must be executed to evaluate some properties of interest. And it could yield a result composed of one of the following:

  • meets the requirements that guided its design and development,
  • responds correctly to all kinds of inputs,
  • performs its functions within an acceptable time,
  • is sufficiently usable,
  • can be installed and run in its intended environments
  • achieves the general result its stakeholders desire.

Levels of testing

There are three main levels of testing:

Unit testing


Unit testing refers to tests that verify the functionality of a specific section of code, usually at the function level. In an object-oriented environment, this is usually at the class level, and the minimal unit tests include the constructors and destructors.

These types of tests are usually written by developers as they work on code, to ensure that the specific function is working as expected. One function might have multiple tests, to catch corner cases or other branches in the code. Unit testing alone cannot verify the functionality of a piece of software, but rather is used to ensure that the building blocks of the software work independently from each other.

Integration testing

Integration testing is any type of software testing that seeks to verify the interfaces between components against a software design. Software components may be integrated in an iterative way or all together . Normally the former is considered a better practice since it allows interface issues to be located more quickly and fixed.

System testing

System testing tests a completely integrated system to verify that the system meets its requirements. For example, a system test might involve testing a login interface, then creating and editing an entry, plus sending or printing results, followed by summary processing or deletion of entries, then logoff.

There is a fourth level that may be included by developers. This may be in the form of operational acceptance testing or be simple end-user (beta) testing, testing to ensure the software meets functional expectations. Based on the ISTQB Certified Test Foundation Level syllabus, test levels includes those four levels, and the fourth level is named acceptance testing. Tests are frequently grouped into one of these levels by where they are added in the software development process, or by the level of specificity of the test.

Acceptance testing

Commonly this level of Acceptance testing include the following four types:

  • User acceptance testing
  • Operational acceptance testing
  • Contractual and regulatory acceptance testing
  • Alpha and beta testing

Roles in testing

Manager

Responsible for:

  • Defining the testing activities
  • Test planning
  • Check the team has the necessary resources to perform the testing activities
  • Verify testing is going hand in hand with the development at all phases
  • Prepare the status report of testing activities
  • Interactions with customers
  • Updating the project manager about the status of testing activities

Test Engineer

Responsible for:

  • Understanding what needs to be tested
  • Decide how it is going to be tested
  • Inform the test lead about what resources will be required for the testing activities
  • Develop test cases and prioritize testing activities
  • Execute test cases and report defects, defining severity and priority for each defect
  • Carry out regression testing

Testing environments

  1. Setup of test server with support of needed applications
  2. Network setup
  3. Test PC setup for running the software product
  4. Provide bug reporting tools
  5. Create test data for testing environment

Test case design techniques

  • Boundary Value Analysis (BVA): based on testing at the boundaries between partitions.
  • Decision Table Based Testing: for every function, a table is created to list down all types of combinations of inputs and its respective outputs.
  • State Transition: the testing team provides both positive and negative input test values to evaluate the system behavior.
  • Error guessing: the test analysts use their experience to guess potential problematic parts of the application and write test cases to expose those errors.

Defect Management Process

A defect management cycle contains 6 stages:

  1. Discovery of defect
  2. Defect categorization
  3. Fixing of defect by developers
  4. Verification by testers
  5. Defect closure
  6. Defect reports

Pan, Jiantao (Spring 1999). “Software Testing”(coursework). Carnegie Mellon University. RetrievedNovember 21, 2017.

Software Review

(Peer Review and/or Code Inspection)

  1. Definition and characteristics of review
  2. Activities and roles for each review
  3. How to review the key work products: plans, requirements, design, and code

Software Review is systematic inspection of a software by one or more individuals who work together to find and resolve errors and defects in the software during the early stages of Software Development Life Cycle (SDLC). Software review is an essential part of Software Development Life Cycle (SDLC) that helps software engineers in validating the quality, functionality and other vital features and components of the software. It is a whole process that includes testing the software product and it makes sure that it meets the requirements stated by the client.

Usually performed manually, software review is used to verify various documents like requirements, system designs, codes, test plans and test cases.

Objectives of Software Review:
The objective of software review is:

  1. To improve the productivity of the development team.
  2. To make the testing process time and cost effective.
  3. To make the final software with fewer defects.
  4. To eliminate the inadequacies.


Process of Software Review:

Types of Software Reviews:
There are mainly 3 types of software reviews:

  1. Software Peer Review:
    Peer review is the process of assessing the technical content and quality of the product and it is usually conducted by the author of the work product along with some other developers.
    Peer review is performed in order to examine or resolve the defects in the software, whose quality is also checked by other members of the team. Peer Review has following types:
    • (i) Code Review:
      Computer source code is examined in a systematic way.
    • (ii) Pair Programming:
      It is a code review where two developers develop code together at the same platform.
    • (iii) Walkthrough:
      Members of the development team is guided but author and other interested parties and the participants ask questions and make comments about defects.
    • (iv) Technical Review:
      A team of highly qualified individuals examines the software product for its client’s use and identifies technical defects from specifications and standards.
    • (v) Inspection:
      In inspection the reviewers follow a well-defined process to find defects.
  2. Software Management Review:
    Software Management Review evaluates the work status. In this section decisions regarding downstream activities are taken.
  3. Software Audit Review:
    Software Audit Review is a type of external review in which one or more critics, who are not a part of the development team, organize an independent inspection of the software product and its processes to assess their compliance with stated specifications and standards. This is done by managerial level people.

Advantages of Software Review:

  • Defects can be identified earlier stage of development (especially in formal review).
  • Earlier inspection also reduces the maintenance cost of software.
  • It can be used to train technical authors.
  • It can be used to remove process inadequacies that encourage defects.

GeeksForGeeks (2019). Software Engineering | Software Review. Retrieved from: https://www.geeksforgeeks.org/software-engineering-software-review/

Models and Standards for Software Process Improvement

  1. CMMI
  2. TSP/PSP
  3. ISO-15504
  4. MOPROSOFT
  5. IDEAL method

CMMI

Capability Maturity Model Integration (CMMI) is a model that helps organizations to improve their processes.

This model evaluates three specifics sections:

  • Process and service development.
  • Service establishment and management.
  • Product and service acquisition.


It has a behavioral model that can classify the organizations, so they identify different levels of maturity which indicates how an organization will act on different situations:

  • Initial
  • Managed
  • Defined
  • Quantitatively managed
  • Optimizing
  • Initial

TSP/PSP


PSP (Personal Software Process) and TSP (Team Software Process) are based on stablishing goals, concrete a plan, measure of work, however, PSP focuses on personal processes while TSP focuses on multiple individuals observed as a whole team work while using the same principles of PSP with additional steps.

psp/tsp

ISO-15504

It is the international standard known as Software Process Improvement Capability Determination. It is a tool with the objective of proposing and developing a model for the evaluation of software processes. It establishes the requirements for an evaluation of processes and the models of evaluation, spanning the areas of process improvement, capability, and maturity.

It is conformed by:

  1. Vocabulary and concepts
  2. Realization of an evaluation
  3. Conducting an evaluation
  4. Guide about the use for the improvement of the process and the determination of its capability
  5. An example of an evaluation model of processes in the life cycle of software
  6. An example of an evaluation of the life cycle of the system
  7. Evaluation of organizational maturity
  8. An example model of evaluation of processes for the management of IT services
  9. Profiles of objective process
  10. Security extension

MOPROSOFT

It’s a model for the constant improvement and evaluation of development processes and system maintenance . It was developed by “Asociación Mexicana para la Calidad en Ingeniería de Software” with the collaboration of UNAM

Characteristics:

  • Facilitates the compliance of other models
  • It’s simple to adopt
  • Low cost on implementation

This model focuses more in management and it has three categories:

  • High Management (Management of business)
  • Management (Management of processes, projects and resources)
  • Operation ( Management of specific projects and development and maintenance)

IDEAL method

An improvement model for the CMMI product suite, serving as a roadmap for initiating, planning, and implementing process improvement actions in this standard. It is named after the five phases required to perform a change initiative:

Initiating

Lay the groundwork for a successful improvement. Current way of doing business needs to change, and the appropriate resources to do so are allocated.

Diagnosing

Where you are vs where you want to be. Analysis to determine what are the current practices and highlight potential areas of improvement opportunities.

Establishing

Plan how objectives will be reached. Recommendations of the analysis phase are prioritized, and plans are developed to conduct these activities.

Acting

Do the work that was established in the plan. Implement the designed activities.

Learning

Learn from the experience and improve. Collect lessons that can be applied to future rounds of the IDEAL life cycle.

Gerardo Salgado. (2017). MoProSoft: Un modelo para mejorar la calidad del software en México. 2020, November 1, Conogasi.org Retrieved from: http://conogasi.org/articulos/moprosoft-un-modelo-para-mejorar-la-calidad-del-software-en-mexico/

Version Control

  1. Tools for version control
  2. Tools for testing
  3. Tools for process administration of V&V

Version control can be broken down to managing changes done to a product, monitoring the state at which a configuration is. This ‘process’ is used in the software development industry to develop a project in the best way possible, since any modification is easy to compare with previous code or edition.

Tools for version control

Git

When you need a software to do everything mentioned above git should come to mind, a free software available on all platforms, capable of handling any project’s size and in any shape, multiple workflows and local branches. It also is open source and completely free!

Tools for testing

Selenium

Selenium was designed as a software testing environment for web based apps, really easy to learn since it doesn’t require a scripting language for testing, thanks to its record/play feature. Developed in Java and also open source, seems like a good tool to try.

Tools for process administration of V&V

WinA&D

It is a software design tool for drawing process (DFD), data (ERD), class and screen models. These are the most popular models in structured analysis & design, information modeling, UML and user interface design.
It supports code generation, integrated code browsing, linked text specifications or foreign documents and data dictionary. Using WinTranslator to generate diagrams from source code.

  1. Data Flow Diagrams
  2. Data Models
  3. Class Diagrams
  4. Screen Models
  5. Data Dictionary

Collins-Sussman, Ben; Fitzpatrick, B.W. and Pilato, C.M. (2004). Version Control with Subversion. O’Reilly.

Tools for V&V

Tools for version control:

Git

Git is a distributed version-control system for tracking changes in any set of files, originally designed for coordinating work among programmers cooperating on source code during software development. Its goals include speed, data integrity, and support for distributed, non-linear workflows

CVS

Concurrent Versions System is a revision control system originally developed by Dick Grune in July 1986. CVS operates as a front end to RCS, an earlier system which operates on single files. It expands upon RCS by adding support for repository-level change tracking, and a client-server model

TortoiseCVS: About

Mercurial

Mercurial is a distributed revision-control tool for software developers. It is supported on Microsoft Windows and Unix-like systems, such as FreeBSD, macOS, and Linux

Mercurial - Reviews, Pros & Cons | Companies using Mercurial

Tools for testing:

Managment tool

“Manual & Automated Test Management App for QA. It’s a full-featured tool that lives inside and seamlessly integrates with Jira. Its aim is to help companies improve the quality of their products through effective and efficient testing.”

Automated Testing Tools

“is the GUI Test Automation tool of choice for more than 3000 companies worldwide to automate the functional regression tests and system tests of their graphical user interface (GUIs) and Human Machine Interfaces (HMIs). The Squish GUI testing tool, a 100% cross-platform tool, features”

API Testing Tools

Tricentis is an Api Testing tool which helps to manage test cases reduces testing time, manual effort and costs by building up and executing test cases.

Software Testing

Software testing process

“Software testing is the process of evaluating and verifying that a software product or application does what it is supposed to do. The benefits of testing include preventing bugs, reducing development costs and improving performance.” -IBM

Free Software Testing Tutorial for Beginners | ISTQB Preparation Tutorials

Types and levels of testing

  1. Unit Testing -> software components
  2. Integration Testing -> the data flow between modules
  3. System Testing -> functional and non-functional needs
  4. Acceptance Testing -> requirements of a specification by delivery
  5. Functional testing-> Checking functions by emulating scenarios, functional requirements
  6. Performance testing-> performance under different workloads. Load testing
  7. Regression testing -> Checking features breaking functionality
  8. Stress testing ->Testing the system before it fails. Non functional
  9. Usability testing-> Validating customer usage

Activities and roles in testing

Test managers

  • Defining the testing activities
  • All responsibilities of test planning.
  • check necessary resources
  • Prepare the status report of testing activities.
  • Required Interactions with clients.
  • documenting progress of testing activities.

Test engineers

  • Decide how it is to be tested.
  • Inform the test manager
  • Develop test cases and prioritize testing activities.
  • Execute all the test case and report defects
For Software Testing Passionates...

Testing environments

“A testing environment is a setup of software and hardware for the testing teams to execute test cases. In other words, it supports test execution with hardware, software and network configured.” -guru99

'testing-environment' tag wiki - Software Quality Assurance & Testing Stack Exchange

Test Case Design techniques (open and closed views)

1. Specification-Based Design Technique:

“This is also popularly known as the black-box design technique. In this design technique, the test cases are written by taking the client’s functional requirements and specifications into consideration” -educba

2. Structure-Based Testing

“Structure-based testing deals with an applications internal structure and architecture. Here, the source code used to develop the application is tested. Therefore in the case of structure-based testing, a good understanding of the code and its internal flow are necessary in order to be able to design the test cases. Structure-based testing is also called white-box testing ” -educba

3. Experience-Based Testing

“As the name states, this testing technique is based on a tester’s experience and expertise in similar applications and technologies. These are further divided into:”

Error guessing (based in prior cases” and Exploratory testing (parallel testing).

Stock video of documents in folder and case closed, | 5503466 | Shutterstock

Process for control and management of defects in artifacts

Defect Life Cycle Flowchart

Tools

Tools for version control

Git

It is a free, cross-platform and open-source distributed version control set of tools, which provides strong support for non-linear development and is able to handle from small to very large projects. Some important features git offers are local branching, convenient staging areas, and multiple workflows. It also offers the entire history tree.

Concurrent Versions System (CVS)

It is a version control system in which you can record the history of source files and documents. It handles conflicts between two programmers by only allowing for the latest version of the code to be worked on and updated.

Mercurial

It is a free, open-source and distributed source control management tool that is able to handle projects of any size, while offering an easy, intuitive interface. It is a major competitor of git, supported in various operating systems like Mac, Windows and Linux. It is known for its high performance, robustness, and scalability, and it is capable of branching and merging.

Tools for software testing

XRAY

It is a Manual and Automated Test Management App for QA. It lives inside and seamlessly integrates with Jira. Some of its features include traceability between requirements, tests, defects and executions, reusable preconditions, organization of tests in folders, tracking of progress, test environments, built-in REST API, CI integrations with Bamboo or Jenkins, and built-in reports.

Testpad

It is a manual test tool that prioritizes pragmatism over process. It uses checklist-inspired test plans that can be adapted to a wide range of testing styles. Some key features it has include guest testers that don’t need an account, simple to be used, keyboard-driven editor, drag’n’drop organization of test plans, adding of new tests, and Jira integration.

Practitest

It is an end-to-end test management tool. Some of its features are third-party integrations with bug trackers and automation tools, reusing of tests, unique hierarchical filter trees, anti-bug duplicates, and visualization of data with advanced dashboards and reports.

Tools for V&V

GDPro

It is a tool that generates UML diagrams from code or code from UML diagrams. It uses reverse engineering and supports C++ and Java.

WinA&D

It is a tool that uses verification reports to check consistency between class diagrams and project dictionary. It supports data modeling.

AxiomSys

For small to medium projects. It is a tool that can trace any type of information to the processes, modules and data items in the model. It validates trace files.

References

GeeksForGeeks. Top 5 Free and Open-Source Version Control Tools in 2020. Retrieved from: https://www.geeksforgeeks.org/top-5-free-and-open-source-version-control-tools-in-2020/

Guru99. Top 50 Software Testing Tools in 2020. Retrieved from: https://www.guru99.com/testing-tools.html

MSE Modeling and Simulation Enterprise. V&V Tools. Retrieved from: https://vva.msco.mil/default.htm?Ref_Docs/VVTools/default.htm

VV Tools

When trying to automate validation and verification tasks the impact of efficency is important thast why its important to select the correct tools.In this post we will focus in some usefull tools.

Version Control Tools

Version control is useful when something goes wrong with the code and you need to go back to a functional previous version of the code, it is widely use throughout the tech industry:

Version ControlAdvantagesDisadvantages
GitFast and efficient performance
Cross-platform
Code easily tracked
Maintainable and robust
Command line (git bash)
Git GUI
Complex and biggerhistory log
doesn’t support keyword expansion
CVSCross-platform
Robust and fully-featured command-line
Support from CVS community
Good web browsing of source code repository
Collaborative nature if the open-source world
No integrity checking for source code repository
Poor support for distributed source control
Doesn’t support signed revisions.
SVNGood GUI
Good Windows support compared to git
Easy set up and administer
Integrates with windows, leading IDE and Agile tools
Doesn’t store time files modification
Doesn’t support signed revisions

Tools for Testing

There are a lot of tools out there that help testers in automation for software, and there is an increased demand that is rapidly growing. Here are some useful testing tools:

  • Selenium:
    • Framework for web application testing in browsers
  • TestingWhiz:
    • Complete package for several automated tests that includes web testing, software testing, database testing, API testing, mobile app testing, regression test suite maintenance.
  • TestComplete:
    • offers testing for desktop, web and mobile.