faisal's-essay-archive

Testing

Testing refers to the investigation and validation of a software’s behavior to understand the risks of its implementation (Kaner, 2006). It is a necessary step in software development because it reduces the chances of providing the end users an inadequate or unacceptable product, and it also contributes critical information that helps assess the software’s quality. Although testing does not correct all software problems, it improves its correctness by comparing its state and behavior to test oracles (Leitner et al., 2007), which are methods that assist in identifying potential problems. Consequently, testing can correct detectable software failures and ensure that the application is reliable under various conditions. Examples of software test techniques include (a) analyzing the product requirements in different contexts and evaluating its design and architecture, and (b) running the application to learn more about its behavior. 

VALIDATION TESTING

Validation testing is used to make sure that the developed software satisfies the needs of the users (Indeed Editorial Team, n.d.). In this form of testing, the product is evaluated to check if it can work in different required environments. Moreover, validation testing happens after verification testing — the test involved with meeting design specifications — so it can be certain that the specifications meet the consumer needs.

Types of validation testing:

Unit Testing

Unit testing is a way to streamline the development process by addressing construction errors before undergoing any additional tests. It ensures that a particular function is working properly by testing a specific section of the code; in other words, it verifies that each individual “unit” can independently perform their intended purpose (Binder, 2000). Usually, it is done while the developers are working on the code, or when the software development process is at the construction phase. Furthermore, depending on the situation, it may include metrics analysis, data-flow analysis, static code analysis, and other types of software testing processes.

Integration Testing

Interfaces allow different components to communicate and interact with each other (Creating Component Interfaces, 2022), while the program remains modular in design; hence, making each component replaceable. As more groups of components become integrated and tested, they become closer to forming a whole functional system (Beizer, 1990). However, it is not always guaranteed that these interactions between components are working as intended. For this reason, integration testing checks for any possible defects in the interfaces. This means that integration testing deals with the process of unifying different components because of the chances that they are not compatible with each other, despite them being able to successfully function individually (What Is Integration Testing?, n.d.).

System Testing

System testing, also known as system-level testing or system integration testing, is utilized in assessing the integrity of the system as a composition of various components that interact with each other (Yasar, n.d.). It is usually performed after integration testing but before acceptance testing. It has different types, namely, performance testing, usability testing, load testing, migration testing, scalability testing, functionality testing, recovery testing, and regression testing.

Performance Testing

Performance testing measures the performance of the software by looking into its reliability, stability, speed, and average load time.

Usability Testing

Usability testing gauges how user-friendly the product is, and how good the product is at serving the end user. This is done by checking the error rates, task success rates, user satisfaction, and the length of time it would take for a user to complete a task.

Load Testing

Load testing tests the throughput, user numbers, and latency, to evaluate its performance under extreme situations.

Migration Testing

This type of testing measures how well the software migrates from legacy systems to new systems. It is judged based on the presence of disruptions, data loss, and downtimes.

Scalability Testing

Scalability testing is used to ensure that the system can scale up or down depending on the user requirements.

Functionality Testing

This is done to see if the system’s functionality lines up with the requirements, including business requirements.

Recovery Testing

Recovery testing is utilized to confirm that the system can recover from specific errors, failures, and crashes.

Regression Testing

Since it was common for developers to encounter old bugs after making changes to the software’s code, regression testing was used to detect any possible bugs that may be introduced after updating the code (Daityari, 2023).

Acceptance Testing

Acceptance testing, also known as end-user testing, involves the close collaboration between developers and customers so that they can identify any issues with the software product (Hayes, 2022). If problems exist, developers taking advantage of acceptance testing can inexpensively correct the problems before releasing the software to the consumer market. Acceptance testing is usually done using a prototype, and it is conducted near the end of the software’s testing cycle. In addition, Hayes states that it aims to discover if the product can carry out its intended uses while complying with the agreed specifications. There are two types of acceptance testing: alpha testing, and beta testing.

Alpha Testing

Alpha testing is a form of internal acceptance testing, before beta testing, that works by conducting a simulated or actual operational testing at the developer’s site (Woods, 2015).

Beta Testing

Beta testing is a form of external acceptance testing that provides a chosen group of people (beta testers) to test beta versions of the software (O’Reilly, 2005). It can allow developers to rely on customers or potential customers to provide important feedback regarding the product. Nevertheless, the product may optionally be released to the public for testing purposes.

TEST PLANNING

A test plan is a blueprint, overview, rulebook, and timeline for future testing-related activities (“Test Plan - Software Testing,” 2022). It is helpful for future test plans because it can be reused after it is reviewed. Business analysts, project managers, and people associated with the project are also provided access to it. There are three types of test plans: master test plan, phase test plan, and specific test plan.

Master Test Plan

A master test plan is used for detailing the planning and management of testing, and it also gives a bird’s eye view of the decision-making strategies.

Phase Test Plan

A phase test plan is focused on one phase of testing, including different aspects of it, such as schedules, benchmarks, and activities.

Specific Test Plan

A specific test plan is made to plan for specific types of testing, like non-functional testing.

VALIDATION TEST PLAN (IEEE 1012-1998)

According to the IEEE Standard for Software Verification and Validation - Redline (1998), the software verification and validation (V&V) processes are designed to ensure that the products developed during an activity conforms to the activity’s given requirements. These are done so that users’ needs are satisfied. The V&V processes are versatile enough to work with all life cycle models and their processes. V&V activities include analysis, evaluations, and tests, where each one can be accomplished by multiple different organizations. Moreover, they also support the following processes: management process, acquisition process, supply process, development process, operation process, and maintenance process.

REFERENCES

  1. Beizer, B. (1990). Software Testing Techniques. Van Nostrand Reinhold.
  2. Binder, R. (2000). Testing Object-oriented Systems: Models, Patterns, and Tools. Addison-Wesley Professional.
  3. Creating component interfaces. (2022, August 23). IBM. https://www.ibm.com/docs/en/engineering-lifecycle-management-suite/design-rhapsody/8.4.0?topic=model-creating-component-interfaces
  4. Daityari, S. (2023, June 24). Regression Testing: A Detailed Guide. BrowserStack. https://browserstack.wpengine.com/guide/regression-testing/
  5. Hayes, A. (2022, June 30). Acceptance Testing Definition, Types, and Examples. Investopedia. https://www.investopedia.com/terms/a/acceptance-testing.asp
  6. IEEE Standard for Software Verification and Validation—Redline. (1998). IEEE Std 1012-1998 - Redline, 1–139. https://ieeexplore.ieee.org/document/7873195
  7. Indeed Editorial Team. (n.d.). What Is Validation Testing In Software Development? Retrieved February 3, 2024, from https://www.indeed.com/career-advice/starting-new-job/what-is-validation-testing
  8. Kaner, C. (2006, November 17). Exploratory Testing. Quality Assurance Institute Worldwide Annual Software Testing Conference, Orlando, FL. https://kaner.com/pdfs/ETatQAI.pdf
  9. Leitner, A., Ciupa, I., Oriol, M., Meyer, B., & Fiva, A. (2007). Contract driven development = test driven development—Writing test cases. 425–434. https://doi.org/10.1145/1287624.1287685
  10. O’Reilly, T. (2005). What is Web 2.0 (p. 4). O’Reilly Media. http://www.oreilly.com/pub/a/web2/archive/what-is-web-20.html?page=4
  11. Test plan—Software Testing. (2022, March 22). GeeksforGeeks. https://www.geeksforgeeks.org/test-plan-software-testing/
  12. What is Integration Testing? Definition, Examples, How-to. (n.d.). Katalon. Retrieved February 3, 2024, from https://katalon.com/resources-center/blog/integration-testing
  13. Woods, A. (2015). Operational Acceptance Test. Capgemini Australia. https://www.scribd.com/document/257086897/Operational-Acceptance-Test-White-Paper-2015-Capgemini
  14. Yasar, K. (n.d.). System testing. TechTarget. Retrieved February 3, 2024, from https://www.techtarget.com/searchsoftwarequality/definition/system-testing

#2023-2024 #Term-2