Life Cycles, Testing, DevOps Flashcards
Software Development Life Cycle phases
- Analysis of existing system:
- System requirements are identified: Propose new features, address concerns
- Proposed System is defined: Overall design is developed, stack is chosen
- New system is developed: Actual coding/implementation
- Testing/Integration: Test your new features, compatability
- Maintenance/Monitoring: Report deficiency, Use info to start new cycle
Software Testing Lifecycle -STLC
1 Planning/Analysis: What needs to be tested? Is it testable?
2 Design: How to setup tests? Automated? What frameworks?
3 Develop your test cases: Write code for your tests. Find edge cases. Cover all
4 Choose an environment for your tests: What software/hardware ru using to test
5 Test Execution: Run your tests
6 Conclusion/Wrap up: Generate a report of findings
Defect Life Cycle
New - bug/defect detected
Assigned - Assigned to a developer
Rejected - Defect is thrown out for various reasons. Not a real problem
Deferred - Defect is put off for various reasons. Is it really a problem?
Test/Fix - Test the cases and attempt to fix the defect
Reassign - Failed to fix. Might not have been assigned to right developer
Verified - Other developers will verify the bug is fixed. If not, it moves back to Fix
Closed - Bug is documented as fixed
Testing Vocabulary
Test Case: Set of inputs and conditions with expected results
Test Suite - A group of test cases related to each other (same functionality)
Testing Docs:
- Test Strategy - Document that sets the standard for testing process
- Test Plan - Document that tells us what to test how who will test
Types of Testing
White Box Testing: Testing based on a knowledge of the internal code. Low level
Black Box Testing: Testing an application without knowing how it works.
Functional Testing: Test to see if software does what it is supposed to.
Functional Testing
Functional Testing: Tests to see if software does what it is supposed to.
- Unit Testing - Testing of the individual atomic aspects
- Component Testing - Testing components. Comprised of several methods(units)
- Integration Testing - Done to expose deficiencies between code components
- API Testing - Testing an entire process, probably involves several moving parts.
- System Testing - Testing a complete software application
- Acceptance testing - Ensure final complete piece of software as desired(Human)
Non-functional Testing
Testing for non-functional aspects of the application. (The application works but is it ) : Usable, performant, Reliable;
Usability Testing
Testing an application for user friendliness.
- Done by a human. - functions, but hard to use for whatever reason -UAT user acceptance testing: Whether a user would want to use an application.
Performance Testing
Testing responsiveness, stability and efficiency
- Load Testing - Testing a system and evaluating its behaviors under heavy use
- Stress Testing - Evaluates if the system behaves appropriately, under stress
- Endurance Testing - Can the app run for prolonged periods under heavy use?
- Spike Testing - Testing to see how the app deals with sudden usage surge.
Reliability Testing
Tests whether the software can perform failure free operations for a length of time.
- feature testing- test that a features operations are all executed properly
- Load Testing(variation) - test if the software is degrading over time
- Regression Testing - Make sure new bugs havent been introduced with new code
Regression Testing
Incremental testing of software to ensure that new additions to the software do not break existing functionality.
Type of reliability testing
Testing Automation
Using software to perform manual testing
- cuts down testing time - tests are repeatable - After hours of testing - Increase code coverage - Time/Cost to produce these tests can be significant
Positive/Negative Testing
Positive Testing: Testing to see that a certain procedure succeeds
- user enters valid data
Negative Testing: Testing to see that a certain procedure fails
- User enters invalid data - Negative tests don't fail, just the procedure they test fails
Alpha Testing/ Beta Testing
Alpha Testing: Testing an application how an end user might use it.
- Conducted by internal employees
Beta Testing: Releasing the software to a limited number of expected users who have no connection to the development process
Smoke Testing/ Flaky tests
Smoke Testing: Running tests just to see if your application is even in a state to be tested
Flaky Tests: Tests that have different outcomes given the same base conditions