Computer Science

System Testing

System testing is a phase of software testing where the entire system is tested as a whole to ensure that all components work together as expected. It involves testing the system's functionality, performance, and reliability in various scenarios to identify any defects or issues. The goal is to validate that the system meets the specified requirements and functions correctly in its intended environment.

Written by Perlego with AI-assistance

12 Key excerpts on "System Testing"

  • Book cover image for: Software Testing Foundations, 5th Edition
    eBook - ePub

    Software Testing Foundations, 5th Edition

    A Study Guide for the Certified Tester Exam

    • Andreas Spillner, Tilo Linz(Authors)
    • 2021(Publication Date)
    • Rocky Nook
      (Publisher)
    section 3.6.3 ). System Testing effort is often underestimated
    Because of the complex test environment it requires, the effort involved in System Testing is often underestimated. [Bourne 97] says experience has shown that usually only half of the required test and QA work has been done by the time System Testing begins.
    Test objectives
    As previously noted, the objective of System Testing is to verify whether and how well the finished system fulfills the specified (functional and non-functional) requirements (see sections 3.5.1 and 3.5.2 ). System Testing identifies defects and deficiencies that are due to erroneous, incomplete, or inconsistently implemented requirements. It should also identify undocumented or forgotten requirements.
    Data quality
    In systems that rely on databases or other large amounts of data, data quality is an important factor that may need to be considered as part of the System Testing process. The data themselves become a “test object” and they need to be appropriately checked for consistency, completeness, and up-to-dateness.

    Side Note: System Testing issues

    In too many projects, the clarification and documentation of the requirements is either patchy or ignored completely. This makes it difficult for testers to know how the system is actually meant to work, and doubly difficult to reliably reveal failures.
    Vague requirements
    Where no requirements exist any system behavior is permissible, or system behavior simply cannot be evaluated. The user (or the internal/external customer) will of course have an idea what to expect from “his” system. Requirements do exist, but only in the minds of some of the people participating in the project. The testers are then given the thankless task of collating all the relevant information regarding the system’s planned behavior. One way to deal with a situation like this is using exploratory testing (see section 5.3
  • Book cover image for: Fundamentals of Software Engineering
    eBook - ePub

    Fundamentals of Software Engineering

    Designed to provide an insight into the software engineering concepts

    • Hitesh Mohapatra, Hitesh Mohapatra, Amiya Kumar Rath(Authors)
    • 2020(Publication Date)
    • BPB Publications
      (Publisher)
    C HAPTER 9 Software Testing Objective The objectives of testing a system is to identify all defects existing in software, remove them, and achieve error-free operation under stated conditions for a stated period of time. Testing is vital to the success of a system. System Testing makes a logical assumption that if all the parts of the system are correct, the goal will be successfully achieved. Inadequate testing or non-testing leads to errors which may not appear until months later. This creates two problems : The time lag between the cause and the appearance of the problem (the longer the time interval, the more complicated the problem has become). The effect of the system errors on files and records within the system. Small system error can conceivably explode into a much larger problem. Effective testing early in the process translates directly into long-term cost savings from a reduced number of errors. Another objective of System Testing is its utility as a user-oriented vehicle before implementation. The best program is worthless if it does not meet user needs. Unfortunately, the user’s demands are often compromised by the efforts to facilitate program or design efficiency in terms of processing time or memory utilization. Often the computer technician and the user have communication barriers due to different backgrounds, interests, priorities, and languages. The system tester (designer, programmer, or user) who has developed some computer mastery can bridge this barrier. In Software Development Life Cycle (SWDLC), testing is the most important phase. The testing is carried out along with system integration. All types of issues found are unresolved during requirement analysis, design, and coding stage
  • Book cover image for: Software Quality Assurance
    eBook - PDF

    Software Quality Assurance

    Integrating Testing, Security, and Audit

    SECTION II T ESTING This page intentionally left blank This page intentionally left blank 59 3 T ESTING : C ONCEPT AND D EFINITION Introduction This chapter, as the name indicates, introduces the basic relationship between software and testing and how testing is an integral part of overall software development. Part 1 discusses how testing is inte-grated into the whole development process. Part 2 discusses the whole testing process and its life cycle. Part 3 defines the major types of testing. Part 1: Testing in the Software Life Cycle What Is Software Testing? Testing is oriented toward “detection” primarily of the defects and anomalies that fall under the general category of a software “bug.” Functionally, testing involves operation of a system or application under controlled conditions. The controlled conditions should include both positive and nega-tive conditions. Testing should intentionally attempt to make things go wrong to determine if things happen when they should not or things do not happen when they should. The IEEE Standard 610, Glossary of Software Engineering Technology, defines testing as “The process of operating a system or component under specified conditions, observing or recording the results, and making an evaluation of some aspects of the system or component.” IEEE Standard 829-1983 defines testing as “The process of ana-lyzing a software item to detect the differences between existing and 60 SOFTWARE QUALITY ASSURANCE required conditions (that is, bugs) and to evaluate the features of the software items.”* Each project in software development should be following a life cycle model. Where is the place for testing in a software life cycle? The simple answer is “it is part of it.” There can be no software development life cycle (SDLC) without testing. However, when and how should test-ing be done? The general V-model plays an especially important role to answer this question.
  • Book cover image for: Fundamentals of Software Testing
    • Bernard Homès(Author)
    • 2024(Publication Date)
    • Wiley-ISTE
      (Publisher)
    Testing Throughout the Software Life Cycle 69 Sample exit criteria for system tests: 1) no changes – design, code or characteristics – except to fix defects identified by system tests; 2) no unexpected stops, failures or termination of process have occurred on any server software or hardware during the last 3 weeks; 3) no client system became inoperative due to a failing update during system tests; 4) the test team successfully executed all planned tests on the software version that is candidate for release; 5) the development team corrected all the defects categorized as “must fix” by the sales, marketing and customer support teams; 6) test team checked that all items identified in the defect tracking management system have either been closed or postponed to a future version, and, where appropriate, have been verified by regression tests and confirmation tests; 7) test metrics indicate product stability and reliability, completion of all planned test and adequate coverage of all “critical” risks; 8) the project management team accepts that the product, as defined during the last round of system-level tests, will satisfy the reasonable expectations of a client; 9) the project management team implements an end-of-system test phase meeting, and accepts that the systems test be terminated. Tests at system-level focus on how the overall system works. It will thus process end-to-end transactions, from installation to operation of the system, user management and interactions with other systems or software. The system test will focus on functional and nonfunctional aspects of the software. It will also ensure that the software operates in an environment similar to the expected (production) environment, so that user acceptance is facilitated. Usually, the types of tests executed at system test level are based on specifications (black-box tests).
  • Book cover image for: Software Testing Foundations, 4th Edition
    eBook - ePub

    Software Testing Foundations, 4th Edition

    A Study Guide for the Certified Tester Exam

    • Andreas Spillner, Tilo Linz, Hans Schaefer(Authors)
    • 2014(Publication Date)
    • Rocky Nook
      (Publisher)
    Any nonincremental integration—also called →big bang integration—should be avoided. Big bang integration means waiting until all software elements are developed and then throwing everything together in one step. This typically happens due to the lack of an integration strategy. In the worst cases, even component testing is skipped. There are obvious disadvantages of this approach:
    • The time leading up to the big bang is lost time that could have been spent testing. As testing always suffers from lack of time, no time that could be used for testing should be wasted.
    • All the failures will occur at the same time. It will be difficult or impossible to get the system to run at all. It will be very difficult and time-consuming to localize and correct defects.

    3.4 System Test

    3.4.1 Explanation of Terms
    After the integration test is completed, the third and next test level is the system test. System Testing checks if the integrated product meets the specified requirements. Why is this still necessary after executing component and integration tests? The reasons for this are as follows:
    Reasons for system test
    • In the lower test levels, the testing was done against technical specifications, i.e., from the technical perspective of the software producer. The system test, though, looks at the system from the perspective of the customer and the future user.12 The testers validate whether the requirements are completely and appropriately implemented.
    • Many functions and system characteristics result from the interaction of all system components; consequently, they are visible only when the entire system is present and can be observed and tested only there.
    Example: VSR-System tests The main purpose of the VSR-System is to make ordering a car as easy as possible.
    While ordering a car, the user uses all the components of the VSR-System: the car is configured (DreamCar ), financing and insurance are calculated (Easy-Finance , NoRisk ), the order is transmitted to production (JustInTime ), and the contracts are archived (ContractBase ). The system fulfills its purpose only when all these system functions and all the components collaborate correctly. The system test determines whether this is the case.
    The test basis includes all documents or information describing the test object on a system level. This may be system requirements, specifications, risk analyses if present, user manuals, etc.
  • Book cover image for: Software Testing as a Service
    This does not mean that the programmers should not check that their code works before releasing it (which of course applies to any stage of testing). System Testing ◾ —Black box–type testing that is based on overall requirements specifications; it covers all combined parts of a system. In the hierarchy of testing types, System Testing comes below user acceptance testing. It does not cover integration testing, which is done to ensure that the software product works well with other software products with which it has to be integrated. End-to-end testing ◾ —Similar to System Testing, end-to-end testing represents the “macro” end of the test scale; it involves testing of a complete application environment in a situation that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate. Sanity testing or smoke testing ◾ —Typically an initial testing effort to deter-mine if a new software version is performing well enough to accept it for a major testing effort. For example, if the new software is crashing systems every 5 minutes, bogging down systems to a crawl, or corrupting databases, the software may not be in a “sane” enough condition to warrant further test-ing in its current state. Regression testing ◾ —Retesting after fixes or modifications of the software or its environment. It can be difficult to determine how much retesting is Kinds of Software Testing Projects ◾ 21 needed, especially near the end of the development cycle. Automated testing tools can be especially useful for this type of testing. Acceptance testing ◾ —Final testing based on specifications of the end user or cus-tomer or based on use by end users/customers over some limited period of time. Load testing ◾ —Testing an application under heavy loads, such as testing of a Web site under a range of loads to determine at what point the system’s response time degrades or fails.
  • Book cover image for: All About Robotics Software & Important Programming tools
    System integration testing System integration testing verifies that a system is integrated to any external or third-party systems defined in the system requirements. Regression testing Regression testing focuses on finding defects after a major code change has occurred. Specifically, it seeks to uncover software regressions, or old bugs that have come back. Such regressions occur whenever software functionality that was previously working correctly stops working as intended. Typically, regressions occur as an unintended consequence of program changes, when the newly developed part of the software collides with the previously existing code. Common methods of regression testing include re-running previously run tests and checking whether previously fixed faults have re-emerged. The depth of testing depends on the phase in the release process and the risk of the added features. They can either be complete, for changes added late in the release or deemed to be risky, to very shallow, consisting of positive tests on each feature, if the changes are early in the release or deemed to be of low risk. Acceptance testing Acceptance testing can mean one of two things: ____________________ WORLD TECHNOLOGIES ____________________ 1. A smoke test is used as an acceptance test prior to introducing a new build to the main testing process, i.e. before integration or regression. 2. Acceptance testing performed by the customer, often in their lab environment on their own hardware, is known as user acceptance testing (UAT). Acceptance testing may be performed as part of the hand-off process between any two phases of development. Alpha testing Alpha testing is simulated or actual operational testing by potential users/customers or an independent test team at the developers' site. Alpha testing is often employed for off-the-shelf software as a form of internal acceptance testing, before the software goes to beta testing.
  • Book cover image for: Manage Software Testing
    256 Manage Software Testing Consider system tests against the following categories: • Configuration testing: can the system be used on different hardware and operating system con-figurations? See section 15.10.1. • Conversion and cutover testing: how well will the new system match the behavior of the old? How well is the data migrated? See in section 15.10.3. • Documentation and training testing: do the user guides and other such documents do their job? Are users sufficiently-trained? See section 15.10.7. • Installation testing : which tests the installation procedures. See section 15.10.2. • Performance testing: does the system fulfil requirements for response times and throughput? See Chapter 16 and sections A.7 and A.8 in Appendix A. • Stress testing: at what point will the system break, what warning will it give, and how will it manage the break? See Chapter 16 . • Procedure testing: do the procedures work, do they relate to the system? See section 15.10.7. • Reliability (resilience) testing: does the system have a sufficiently long MTBF? See section 16.8, the discussion in section 18.4, and the Resilience Checklist in Appendix B. • Resource use testing: how well does the system use its memory, CPU, network, and disks? See section 15.10.5. • Security testing: can the system security be compromised? See section 15.10.4. • Usability testing: is the user interface usable? See Chapter 17. If system tests are classified in this way we can run a set of tests to ensure that some attribute has been maintained in a new release. This may become important once the complete set of features is present and tested, and confidence in the attribute needs to be quickly established. The system test cases should systematically cover the features of the system. Where workflow diagrams exist, devise test cases to cause execution of all paths in this diagram. Alternatively instrument the code to ensure that all units are exercised by one or more test cases .
  • Book cover image for: Instant Approach to Software Testing
    eBook - ePub

    Instant Approach to Software Testing

    Principles, Applications, Techniques, and Practices

    • Dr Anand Nayyar, Anand Nayyar(Authors)
    • 2019(Publication Date)
    • BPB Publications
      (Publisher)
    Software testing must be planned according to the system requirements to avoid wasting of time and resources for development. Once software development process is completed, software testing is performed.
    There are many software testing strategies, out of them some are enlisted as follows:
    1. Unit Testing: This testing exercises a specific control path to detect errors in each software component. In this technique module interfaces are tested in proper information flow. Here boundary conditions, independent paths, error handling paths and basic paths are tested. Local data is examined to provide and maintain the integrity.
    2. Integration Testing: This technique mainly focuses on the issues related with verification and program construction because components are interacting with each other. Overall plan for integration of software and specific tests must be mentioned in test specification. Integration testing involves another testing strategy’s like:
      • Top-down Integration Testing
      • Bottom-up integration Testing
      • Regression Testing
      • Smoke Testing
    3. Validation Testing: This testing strategy assures that software validation criteria fulfills all functional, behavioural and performance requirements which are established during requirement specification. It mainly focuses on visible user actions and user outcomes of the system. Validation testing is mostly based on use case scenarios, event flow-diagrams and behaviour models created for analysis model.
    4. System Testing: This testing strategy verifies that all system elements functions properly with best performance. Here series of test cases are used to exercise a computer-based system. It is mostly used to identify interfacing errors. System Testing involves other testing strategy’s like:
      • Recovery Testing
      • Security Testing
      • Stress Testing
      • Performance Testing
      • Deployment or configuration Testing

    Technical Reviews

    The main motivation behind technical review is the impossibility to test the entire software. Exhaustive testing of the code is almost impractical. Technology also doesn’t exists for testing a specification or high-level design. The idea of testing a software test plan is also bewildering. Testing also doesn’t address quality issues or adherence to standards, which are possible with review processes [11 -15
  • Book cover image for: Software Testing
    eBook - ePub

    Software Testing

    Concepts and Operations

    • Ali Mili, Fairouz Tchier(Authors)
    • 2015(Publication Date)
    • Wiley
      (Publisher)
  • It is possible to start planning for acceptance testing as soon as the phase of requirements analysis and software specification is complete. Indeed, the software specifications that emerge from this phase can be used to prepare the test oracle, and can also be used to derive, if not actual test data, at least the criteria for selecting test data, and the standards of thoroughness that acceptance testing must meet. On the other hand, acceptance testing checks the final software product against the specifications that were derived in the phase of requirements analysis and software specification.
  • Whereas acceptance testing is a service to the end user, System Testing is a service to the development team. Whereas the goal of acceptance testing is to show that the software behaves according to its specifications within the parameters of the agreement between the developer and the user, the goal of System Testing is to find as many faults as possible prior to acceptance testing (if there are any faults, we want them to show up at System Testing rather than acceptance testing). Planning for System Testing can start as soon as the software architecture is drawn, when we have some idea about what function the software system fulfills, and how it operates; this information affects test data generation and oracle design.
  • Whereas System Testing tests the software system as a monolith, by considering its external behavior and its global specification, integration testing tests a specific attribute of the software product, namely, the ability of the system components to interact according to the design of the system. Accordingly, test data has to be targeted to exercise component interactions, and the test oracle focuses on whether the exercised interactions are consistent with the intent of the designer.
  • Unit testing focuses on testing individual modules against module specifications generated as part of the system design. Test data may be generated in such a way as to cover all aspects of the specification, or all structural features of the unit.
  • Book cover image for: Vocations in Computer Science
    Software performance testing In software engineering, performance testing is testing that is performed, to determine how fast some aspect of a system performs under a particular workload. It can also serve ________________________ WORLD TECHNOLOGIES ________________________ to validate and verify other quality attributes of the system, such as scalability, reliability and resource usage. Performance testing is a subset of Performance engineering, an emerging computer scie-nce practice which strives to build performance into the design and architecture of a system, prior to the onset of actual coding effort. Performance Testing Sub-Genres Load Testing Load testing is the simplest form of performance testing. A load test is usually conducted to understand the behavior of the application under a specific expected load. This load can be the expected concurrent number of users on the application performing a specific number of transactions within the set duration. This test will give out the response times of all the important business critical transactions. If the database, application server, etc. are also monitored, then this simple test can itself point towards any bottlenecks in the application software. Stress Testing Stress testing is normally used to understand the upper limits of capacity within the appli-cation landscape. This kind of test is done to determine the application's robustness in terms of extreme load and helps application administrators to determine if the application will perform sufficiently if the current load goes well above the expected maximum. Endurance Testing (Soak Testing) Endurance testing is usually done to determine if the application can sustain the conti-nuous expected load. During endurance tests, memory utilization is monitored to detect potential leaks. Also important, but often overlooked is performance degradation.
  • Book cover image for: Introduction to Scientific and Technical Computing
    • Frank T. Willmore, Eric Jankowski, Coray Colina, Frank T. Willmore, Eric Jankowski, Coray Colina(Authors)
    • 2016(Publication Date)
    • CRC Press
      (Publisher)
    Another note on ambiguity and terminology: software is a fairly young discipline, so some literature or online guides invert the scale of functional and integration tests such that integration tests are proposed as a finer granularity than functional tests, or use “func-tional test” in place of “system test” as the largest scale of test. Presented here, is the more common notion that the major types of tests, ordered from smallest scope to largest scope, are unit, followed by functional, then integration, and finally system tests. 17.4.1 Unit Tests A unit test typically exercises a single function. The goal is to have the finest granularity possible. For object-oriented systems, the unit may be a class, especially if that class has a limited public interface. Many unit test enthusiasts will adhere to a rule of one assertion per test case, but this is not a strict requirement for a test case to be considered a unit test. It is nonetheless preferable to limit the number of assertions in each case and only group together those assertions that are truly related within the project’s domain. Judicious divi-sion of assertions across multiple cases provides the most fine-grained, and thus most informative, feedback. This is particularly true when edge cases for a function or module are involved. 242 Introduction to Scientific and Technical Computing Another important aspect of well-written unit tests is isolation of the test cases from other units of code in the project. In high numbers, unit tests are the most powerful and useful tests to have, as they provide high levels of insight and confidence into the workings of each component of a project. Isolation is one key aspect of this power. As a simple example, imagine a module that issues a greeting to persons in the language of their current location.
  • Index pages curate the most relevant extracts from our library of academic textbooks. They’ve been created using an in-house natural language model (NLM), each adding context and meaning to key research topics.