Podcast
Questions and Answers
Which activity exemplifies software validation?
Which activity exemplifies software validation?
- Identifying and rectifying syntax errors present in the source code.
- Determining if the developed software aligns with the actual needs and expectations of its intended users. (correct)
- Ensuring the code adheres to established coding standards and guidelines.
- Confirming that the software accurately implements the requirements outlined in the design specification.
What is a primary goal of defect testing?
What is a primary goal of defect testing?
- To validate the software design against architectural patterns.
- To verify the software meets its performance requirements.
- To demonstrate to clients that the software requirements are met.
- To identify situations where software behaviour is incorrect, undesirable, or does not conform to its specification. (correct)
What distinguishes validation testing from defect testing?
What distinguishes validation testing from defect testing?
- Validation testing ensures the software meets security standards, while defect testing focuses on performance metrics.
- Validation testing is performed by developers, while defect testing is carried out by QA engineers.
- Validation testing aims to identify defects, while defect testing confirms the software operates as intended.
- Validation testing uses test cases reflecting normal system use, whereas defect testing employs obscure test cases to expose defects. (correct)
Which of the following is a key goal of verification and validation (V&V)?
Which of the following is a key goal of verification and validation (V&V)?
In what way do static verification techniques differ from dynamic verification techniques in software testing?
In what way do static verification techniques differ from dynamic verification techniques in software testing?
Why are software inspections considered advantageous in the software development lifecycle?
Why are software inspections considered advantageous in the software development lifecycle?
During the software development process, when is it most appropriate to use both inspections and testing?
During the software development process, when is it most appropriate to use both inspections and testing?
Which strategy is most effective for minimizing bugs and defects during software development?
Which strategy is most effective for minimizing bugs and defects during software development?
What does unit testing primarily focus on?
What does unit testing primarily focus on?
Why can inheritance complicate object class testing?
Why can inheritance complicate object class testing?
In automated testing, which part is responsible for verifying that calling an object or method returns the expected outcome?
In automated testing, which part is responsible for verifying that calling an object or method returns the expected outcome?
What principle underlies partition testing?
What principle underlies partition testing?
What is an 'equivalence partition' in software testing?
What is an 'equivalence partition' in software testing?
What should the focus be when testing composite components?
What should the focus be when testing composite components?
What is a primary objective of interface testing?
What is a primary objective of interface testing?
What should testers consider when designing interface tests?
What should testers consider when designing interface tests?
What is the primary emphasis of system testing?
What is the primary emphasis of system testing?
Which of the following describes how use-cases can be leveraged during system testing?
Which of the following describes how use-cases can be leveraged during system testing?
Which aspect defines testing policies?
Which aspect defines testing policies?
What is the role of tests in Test-Driven Development (TDD)?
What is the role of tests in Test-Driven Development (TDD)?
What is the initial step in the Test-Driven Development (TDD) cycle?
What is the initial step in the Test-Driven Development (TDD) cycle?
What benefit does regression testing provide?
What benefit does regression testing provide?
How is release testing different from system testing performed by the development team?
How is release testing different from system testing performed by the development team?
What is a primary objective of release testing?
What is a primary objective of release testing?
What does requirements-based testing involve?
What does requirements-based testing involve?
When is user testing considered most essential?
When is user testing considered most essential?
In the context of user testing for software, what does alpha testing typically involve?
In the context of user testing for software, what does alpha testing typically involve?
What is 'acceptance testing'?
What is 'acceptance testing'?
What is the primary concern regarding the embedded user in agile methods and acceptance testing?
What is the primary concern regarding the embedded user in agile methods and acceptance testing?
Which of these is considered a key point in software testing?
Which of these is considered a key point in software testing?
During software testing, which action is most effective for identifying defects?
During software testing, which action is most effective for identifying defects?
How can software developers ensure the repeatability and reliability of their tests?
How can software developers ensure the repeatability and reliability of their tests?
Which of the following correctly describes the purpose of 'stress testing'?
Which of the following correctly describes the purpose of 'stress testing'?
What is the main focus of scenario testing?
What is the main focus of scenario testing?
During inspections, what aspects of the software can be assessed?
During inspections, what aspects of the software can be assessed?
What constitutes a 'unit' in the context of unit testing?
What constitutes a 'unit' in the context of unit testing?
What is the main advantage of automating unit testing?
What is the main advantage of automating unit testing?
What is the primary characteristic that distinguishes development testing from other testing stages?
What is the primary characteristic that distinguishes development testing from other testing stages?
How does incorporating inheritance in object-oriented programming impact the design of object class tests?
How does incorporating inheritance in object-oriented programming impact the design of object class tests?
Which of the following is a main component of an automated test?
Which of the following is a main component of an automated test?
What is the purpose of choosing tests from within each identified group in partition testing?
What is the purpose of choosing tests from within each identified group in partition testing?
In the context of interface testing, designing tests to cause a component to fail aims primarily to achieve what?
In the context of interface testing, designing tests to cause a component to fail aims primarily to achieve what?
What is the main goal when system testing during software development?
What is the main goal when system testing during software development?
How can use-case testing aid in the process of system testing?
How can use-case testing aid in the process of system testing?
What statement accurately reflects a key characteristic of testing policies in software development?
What statement accurately reflects a key characteristic of testing policies in software development?
When writing tests in Test-Driven Development (TDD), what serves as the critical driver of development?
When writing tests in Test-Driven Development (TDD), what serves as the critical driver of development?
How does regression testing contribute to software development when changes are made to the code?
How does regression testing contribute to software development when changes are made to the code?
What is the focus of release testing?
What is the focus of release testing?
What action is central to the process of requirements-based testing?
What action is central to the process of requirements-based testing?
What influence from the user has a major effect on the reliability, performance, usability and robustness of a system?
What influence from the user has a major effect on the reliability, performance, usability and robustness of a system?
In which testing type do users of the software work with the development team to test at the developer's site?
In which testing type do users of the software work with the development team to test at the developer's site?
In agile methods and acceptance testing, what is the primary challenge concerning the embedded user?
In agile methods and acceptance testing, what is the primary challenge concerning the embedded user?
In software testing, what can testing only demonstrate?
In software testing, what can testing only demonstrate?
When testing software, what should you try to do?
When testing software, what should you try to do?
What is a key characteristic of software inspections?
What is a key characteristic of software inspections?
What is the main advantage of inspection over testing regarding error detection?
What is the main advantage of inspection over testing regarding error detection?
What limitation applies specifically to inspections as a verification technique?
What limitation applies specifically to inspections as a verification technique?
Within development testing, what is the main focus of unit testing?
Within development testing, what is the main focus of unit testing?
In automated testing, what is the role of the 'call' part?
In automated testing, what is the role of the 'call' part?
What represents an 'equivalence partition' effectively?
What represents an 'equivalence partition' effectively?
When testing composite software components, on which aspect should there be a primary focus?
When testing composite software components, on which aspect should there be a primary focus?
What is a key objective of interface testing?
What is a key objective of interface testing?
What is a key consideration when designing interface tests?
What is a key consideration when designing interface tests?
During system testing, what should be confirmed regarding components in the system?
During system testing, what should be confirmed regarding components in the system?
What is a factor defined by testing policies?
What is a factor defined by testing policies?
In what way does regression testing provide a valuable contribution to software development?
In what way does regression testing provide a valuable contribution to software development?
What distinguishes release testing from system testing performed by the development team?
What distinguishes release testing from system testing performed by the development team?
Flashcards
Program testing
Program testing
Testing to show the program does what it should and to find defects before use.
Program testing goals
Program testing goals
Demonstrate software meets requirements, discover incorrect/undesirable behaviour.
Validation testing
Validation testing
Testing to show the software meets the customer's requirements.
Defect testing
Defect testing
Signup and view all the flashcards
Verification
Verification
Signup and view all the flashcards
Validation
Validation
Signup and view all the flashcards
Software inspections
Software inspections
Signup and view all the flashcards
Software testing
Software testing
Signup and view all the flashcards
Software inspections
Software inspections
Signup and view all the flashcards
Advantages of inspections
Advantages of inspections
Signup and view all the flashcards
Development testing
Development testing
Signup and view all the flashcards
Release testing
Release testing
Signup and view all the flashcards
User testing
User testing
Signup and view all the flashcards
Unit testing
Unit testing
Signup and view all the flashcards
Component Testing
Component Testing
Signup and view all the flashcards
System testing
System testing
Signup and view all the flashcards
Object class testing
Object class testing
Signup and view all the flashcards
Automated testing
Automated testing
Signup and view all the flashcards
Set-up part
Set-up part
Signup and view all the flashcards
Call part
Call part
Signup and view all the flashcards
Assertion part
Assertion part
Signup and view all the flashcards
Partition testing
Partition testing
Signup and view all the flashcards
Guideline-based testing
Guideline-based testing
Signup and view all the flashcards
Equivalence partition
Equivalence partition
Signup and view all the flashcards
Parameter interfaces
Parameter interfaces
Signup and view all the flashcards
Shared memory interfaces
Shared memory interfaces
Signup and view all the flashcards
Procedural interfaces
Procedural interfaces
Signup and view all the flashcards
Message passing interfaces
Message passing interfaces
Signup and view all the flashcards
Interface misuse
Interface misuse
Signup and view all the flashcards
Interface misunderstanding
Interface misunderstanding
Signup and view all the flashcards
Timing errors
Timing errors
Signup and view all the flashcards
System testing
System testing
Signup and view all the flashcards
Use-case testing
Use-case testing
Signup and view all the flashcards
Testing policies
Testing policies
Signup and view all the flashcards
Test-driven development
Test-driven development
Signup and view all the flashcards
Test-driven development
Test-driven development
Signup and view all the flashcards
Regression testing
Regression testing
Signup and view all the flashcards
Release testing
Release testing
Signup and view all the flashcards
Release testing
Release testing
Signup and view all the flashcards
Requirements-based testing
Requirements-based testing
Signup and view all the flashcards
Scenario testing
Scenario testing
Signup and view all the flashcards
Performance testing
Performance testing
Signup and view all the flashcards
Stress testing
Stress testing
Signup and view all the flashcards
User testing
User testing
Signup and view all the flashcards
Alpha testing
Alpha testing
Signup and view all the flashcards
Beta testing
Beta testing
Signup and view all the flashcards
Acceptance testing
Acceptance testing
Signup and view all the flashcards
Study Notes
Program Testing
- The purpose of testing is to demonstrate that a program functions as expected and to identify defects before release.
- Software testing involves executing a program with artificial data.
- Test results are checked for errors, anomalies, and information related to non-functional attributes.
- Testing reveals the presence of errors, but not their absence.
- Testing is a component of verification and validation, incorporating static validation techniques.
Program Testing Goals
- Software should meet requirements of both developer and customer.
- Custom software requires at least one test per requirement in the document.
- Generic software requires tests for all system features and their combinations in the product release.
- Testing aims to uncover incorrect, undesirable, or non-conforming behaviors in the software.
- Defect testing identifies system crashes, unwanted system interactions, incorrect computations, and data corruption.
Validation and Defect Testing
- Validation testing involves using test cases reflecting the system's expected use to ensure correct performance.
- Defect testing involves test cases designed to expose defects, which may be deliberately obscure and not reflective of normal system use.
Testing Process Goals
- Validation testing demonstrates that the software meets its requirements for both the developer and customer.
- Successful validation testing confirms that the system functions as intended.
- Defect testing identifies faults where the software's behavior is incorrect or doesn't match the specification.
- Successful defect testing causes the system to perform incorrectly, revealing defects.
Verification vs. Validation
- Verification checks if we are building the product correctly, ensuring software conforms to its specification.
- Validation checks if we are building the right product, ensuring the software meets user requirements.
Verification and Validation Confidence
- Verification and Validation (V&V) aims to establish confidence that the system is 'fit for purpose'.
- This depends on the system's purpose, user expectations, and the marketing environment.
- Confidence level depends on software criticality for the organization.
- User expectations vary depending on the software type.
- Early market entry may be prioritized over finding defects.
Inspections and Testing
- Software inspections analyze the static system representation to find issues, performing static verification.
- These may include tool-based document and code analysis.
- Testing involves exercising and observing product behaviour, known as dynamic verification.
- The system is run with test data and operational behaviour is watched.
Software Inspections
- Software inspections involve examining the source representation to discover anomalies and defects.
- Inspections do not require execution, and can be used before implementation.
- Inspections can be applied to any system representation including requirements, design, and test data.
- Inspections are effective in discovering program errors.
Advantages of Inspections
- Errors can mask other errors during testing, but inspections are static, eliminating concern for error interactions.
- Incomplete system versions can be inspected without extra costs.
- Program defects, compliance with standards, portability, and maintainability can be checked via inspection.
Inspections and Testing - Complementary Techniques
- They are not opposing verification techniques.
- Both should be used during the V & V process.
- Inspections check for conformance with the specification.
- Inspections cannot check non-functional characteristics like performance or usability.
Stages of Testing
- Development testing aims to discover bugs and defects during the software development.
- Release testing is performed by a separate team to test a complete system version before user release.
- User testing involves users or potential users testing the system in their own environment.
Development Testing
- Development testing are all testing activities by the system development team.
- Unit testing tests individual program units or object classes, focusing on object or method functionality.
- Component testing integrates individual units into composite components, focusing on component interfaces.
- System testing integrates some or all components, testing the system as a whole and focusing on component interactions.
Unit Testing
- Unit testing isolates individual components for comprehensive testing.
- It is a defect testing process.
- Units can be individual functions or methods, object classes with attributes and methods, and composite components with defined interfaces.
Object Class Testing
- Complete test coverage should include testing all operations, setting and interrogating attributes, and exercising the object in all possible states.
- Inheritance complicates object class tests because the information isn't localized.
Weather Station Testing
- Test cases should be defined for weather reports.
- Tests should cover weather calibration, startup, and shutdown.
- Using a state model, identify state transition and event sequences.
- Examples include Shutdown -> Running -> Shutdown, and Configuring -> Running -> Testing -> Transmitting -> Running.
Automated Testing
- Unit testing should be automated whenever possible, avoiding manual intervention.
- Automated unit testing uses testing frameworks like JUnit to write and run program tests.
- Unit testing frameworks offer generic test classes that are extended to create test cases, and report on the success or failure.
Automated Test Components
- The set-up initializes the system with inputs and expected outputs.
- The call part executes the object or method being tested.
- The assertion part compares the actual result to the expected result.
Choosing Unit Test Cases
- Test cases should verify that the component functions as expected.
- Test cases should reveal any component defects.
- Types include tests reflecting normal operation, and tests based on experience of where common problems arise.
Testing Strategies
- Partition testing identifies input groups with common characteristics processed in the same way.
- Tests should be selected from each of these groups.
- Guideline-based testing uses testing guidelines to choose test cases.
- These guidelines reflect past experiences on common programmer errors.
Partition Testing
- Input data and output results often fall into related classes.
- Each of these classes is an equivalence partition, where the program behaves equivalently for each member.
- Test cases should be chosen from each partition.
Testing Guidelines (Sequences)
- Test software with sequences containing only a single value.
- Use sequences of different lengths in different tests.
- Derive tests to access the first, middle, and last elements of a sequence.
- Test with sequences of zero length.
General Testing Guidelines
- Choose inputs to force error messages.
- Design inputs that overflow input buffers.
- Repeat inputs many times.
- Force invalid outputs.
- Force computation results to be too large or too small.
Component Testing
- Software components are often composite, made of interacting objects.
- For the weather station, the reconfiguration component involves objects dealing with each aspect of reconfiguration.
- Functionality of these objects is accessed through the component interface.
- Composite component testing focuses on the behavior of the component interface.
- Unit tests on individual objects within the component are presumed complete.
Interface Testing
- Objectives are to detect faults due to interface errors or invalid assumptions.
- Four types of interfaces: Parameter, Shared Memory, Procedural, Message Passing.
Interface Errors
- Interface misuse: A calling component makes an error in its interface use.
- Interface misunderstanding: A calling component assumes something about the called component’s behaviour that is wrong.
- Timing errors: The called and calling components operate at different speeds.
Interface Testing Guidelines
- Design tests with parameters at the extreme ends of their ranges.
- Always test pointer parameters with null pointers.
- Design tests that cause the component to fail.
- Use stress testing in message passing systems.
- Vary the order of component activation in shared memory systems.
System Testing
- Involves integrating components to test the overall system.
- The focus is on testing the interactions between components.
- It checks component compatibility, correct interaction, and proper data transfer.
- Emergent behavior of a system is tested.
System and Component Testing Integration
- Components, reusable components, and off-the-shelf systems can be integrated.
- Components from different team members may be integrated.
- System testing is a team effort rather than an individual one.
- Some companies may use a separate team without designer or programmer involvement for system testing.
Use-Case Testing
- Use-cases for identifying system interactions can be the basis of system testing.
- Each use-case involves several system components, forcing interactions to occur.
- Sequence diagrams document the components/interactions being tested.
Test Cases Derived from Sequence Diagram
- An input request should have an acknowledgement, and ultimately a report should be returned.
- Create summarized data to check the report is correctly organized.
- An input request to WeatherStation should generate a summarized report.
- Testing involves raw data to test SatComms and WeatherStation object, also used to test WeatherData object.
Testing Policies
- Exhaustive system testing is impossible, so policies define required system test coverage.
- Policies include: Testing all menu functions, testing combinations of functions accessed through the same menu and testing all functions with correct/incorrect user input.
Test-Driven Development (TDD)
- TDD interweaves testing and code development.
- Tests are written before the code, and ‘passing’ tests critically drives development.
- Code is developed incrementally with a test for each increment, progressing only when the code passes the test.
- Introduced in agile methods like extreme programming, but applicable in plan-driven processes.
TDD Process Activities
- Identify the increment of functionality, which should be small and implementable in a few code lines.
- Write a test for that function and implement as automated test.
- Run all tests, including the new one; initially, the new test will fail.
- Implement the functionality and rerun the tests.
- After all tests run successfully, the next part can be implemented.
Benefits of Test-Driven Development
- Every code segment has at least one associated test.
- A regression test suite is developed incrementally.
- Debugging is simplified because the problem source is obvious.
- The tests themselves act as documentation.
Regression Testing
- Checks that changes haven't ‘broken’ previously working code.
- Expensive in manual testing, but automated testing makes it simple.
- All tests must run ‘successfully’ before the change is committed.
Release Testing
- Involves testing a particular system release for use outside the development team.
- The primary goal is to ensure the system is good enough for use; it delivers specified functionality and does not fail during normal use.
- Tests are derived from the system specification.
Release Testing and System Testing - Key Differences
- A separate testing team should be responsible for release testing.
- System testing focuses in discovering bugs in the system (defect testing).
- Release testing is to check the system meets requirements and is good for external use (validation testing).
Requirements-Based Testing
- Examines each requirement and developing a test for it.
- Mentcare system requirements: if a patient is allergic to a medication, a warning must appear and if a prescriber ignores the warning they must provide a reason.
Requirements Tests
- Scenarios include: testing with no allergies, known allergies, multiple allergies and to check the specific warnings related to each case including the ability to overrule medication.
Features Tested by Scenario
- Authentication by logging on to the system
- Downloading and uploading of specified patient records to a laptop
- Home visit scheduling
- Encryption and decryption of patient records on a mobile device
- Record retrieval and modification
- Links with the drugs database
- System prompting function
Performance Testing
- Can test emergent properties like performance and reliability.
- Tests should reflect system use.
- Performance tests involve increasing load until system performance degrades.
- Stress testing deliberately overloads the system to test its failure behavior.
User Testing
- Users provide input and advice on system testing.
- User testing is essential because the influences from user’s environment cannot be tested.
Types of User Testing
- Alpha Testing: Users work with the development team to test the software.
- Beta Testing: Users experiment with the software and highlight any problems to the developers.
- Customers test a system to decide if it is ready to be accepted.
The Acceptance Testing Process
- Define acceptance criteria
- Plan acceptance testing
- Derive acceptance tests
- Run acceptance tests
- Negotiate test results
- Reject/accept the system
Stages in The Acceptance Testing Process
- Define acceptance criteria
- Plan acceptance testing
- Derive acceptance tests
- Run acceptance tests
- Negotiate test results
- Reject/accept system
Agile Methods and Acceptance Testing
- In agile methods, the user/customer is part of the team and decides on the system’s acceptability.
- Tests are defined by the user/customer and are integrated with other tests.
- There is no separate acceptance testing process.
- The embedded user might not be ‘typical’ and represent stakeholder interests.
Key points
- Testing shows the presence of errors but cannot prove their absence.
- Development testing is the software team's responsibility.
- A distinct team should be responsible for testing.
- Development testing includes unit, component, system testing.
- Break the software using test cases proven to discover defects in other systems.
- Tests should be automated, where possible.
- Test-first development involves writing tests before code.
- Scenario testing involves using a typical scenario to derive test cases.
- Acceptance testing assesses deployment readiness.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.