Lecture 3 Flashcards
What are software testing techniques ?
These are methods applied to verify that the application meets the functional and non functional requirements specified by the business.
Each testing technique helps to find a specific type of defect.
What are the two main categories of software testing?
These are static testing techniques and dynamic testing techniques
Describe the two main categories of software testing
Static testing techniques are techniques which are used to find defects in the application without executing the code. It is done to avoid errors at an early stage of the SDLC.
Dynamic testing techniques are techniques which are used to test the dynamic behaviour of the application by executing the code. The main purpose is to test the application with dynamic inputs some of which may be allowed and some that are not
What are the two categories of static testing techniques? Describe each
Reviews which range from informal which is peer reviews done between two testers on the artifacts (code/test cases/test data) to formal which is done by moderators who are internal/external to the organization
Static analysis which is the examination of the code or design with the aim of identifying defects that may or may not cause failures. (Reviewing code for the following of standards). A compiler is a static analysis tool since it points out syntax errors
What are the three dynamic testing techniques, explain each
Structure based techniques which focus on how the code structure works and code coverage then you test accordingly
Experience based techniques which is the execution of testing activities with the help of experience gained over the years. Domain skill and background heavily contribute to this testing.
Specification based techniques which is the execution of tests based on specifications from the business rules to identify defects.
What are the structure based techniques?
Statement coverage: (No. of statements of code exercised/total no. of statements) * 100
Decision coverage: (No. of decision outcomes exercised/total no. of decisions) * 100
Conditional coverage: Aims to identify that each outcome of every logical condition in a program has been exercised
What are the experience based techniques?
Error guessing which is used by a tester who has good experience in testing or with the application and hence may know where the system might have a weakness. It isn’t an effective technique without structured techniques.
Exploratory testing which is hands on testing where the aim is to have maximum execution coverage with minimal planning. Test design and execution are carried out at the same time without documenting test steps. The tester gets to learn about the strengths and weaknesses of the application and this isn’t effective without structured techniques.
What are the specification based techniques?
Equivalence partitioning where you partition the input range of data into valid and non valid sections so that one partition is considered equivalent hence we only need to test any given value in a partition.
Boundary value analysis which test the boundaries of the range, both valid an invalid. This is done because boundaries are not handled gracefully in code most times.
Decision tables which are good when inputs are small and it is used to test the combination of inputs. AKA cause effect table.
State transition which is used when the application or part of it can be treated as a FSM.
What must we consider with FSMs?
The states a system can achieve
The events that cause a change of state
The transition from one state to another
The outcomes of change of states
What is automation testing ?
Testing which uses the assistance of tools, scripts and software to perform test cases by repeating pre defined actions.
What are the benefits of automation testing?
Cost: can reduce hourly fees by more than 75%
Speed and accuracy: automating testing, data collection and data analysis provides actionable results quicker
Effectiveness: automation testing allows for increased test coverage and earlier detection of bugs and vulnerabilities
What are the criteria for automation testing?
Tests that are repetitive and time consuming.
Tests that run for multiple builds
Tests that are vulnerable to human error
Tests of high risk, frequently used functions within the software
Tests that can’t be done manually
Tests that need to be run on multiple software or hardware configurations and platforms
What are the automation testing approaches?
Linear Tools which allow users to record their actions on the application and then replay them automatically.
Data driven tools which allow the user to parameterize test cases using external data sources such as spreadsheets, databases or XML files. This allows for testing with different scenarios.
Coding tools which require the user to write code to automate the testing process. More flexible and allows for the creation of complex and customized test cases.
What are the categories of automated testing?
Functional tests which verify the software meets the acceptance criteria and business requirements
Non functional test which verifies software characteristics that aren’t related to specific functions or behaviours but the overall quality and performance
What are the most popular automated tests?
Unit testing
Smoke tests
Regression testing
Integration testing
Security tests
Performance tests
API testing