1/40
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
|---|
No study sessions yet.
Software testing
The activity of executing a system or component under specified conditions, observing or recording the results, and evaluating some of the aspects of the system or component
Direct objectives
To identify and reveal as many errors as possible in the tested software
To bring the tested software to an acceptable level of quality after correcting the identified errors and retesting - This means that a certain percentage of bugs tolerable to users will remain unidentified upon installation of the software.
To perform the required tests efficiently and effectively and within the budgetary and scheduling limitations
To establish with a degree of confidence that the software package is ready for delivery or installment at customer premises
Indirect objectives
To compile a record of software errors for use in software process improvement by corrective and preventive actions and for decision-making
Unit Testing
Type of testing that is performed by the developer on the completed unit or module of the software and before its integration with other modules
Unit Testing
Type of testing that is the technical tests of the code, and these require writing test harnesses and creating test data.
Integration Testing
Type of testing that the project team performs this type of testing on the integrated systems once all of the individual units work correctly in isolation
Integration Testing
Type of testing and the objective of this test is to verify that all of the modules and their interfaces work correctly together and to identify and resolve any issues..
System Testing
Type of testing that is tests the functionality of an entire system together with interdependencies between system components. It may include security testing, usability testing, and performance testing.
Performance Testing
Type of testing that the objective of this testing is to ensure that the performance of the system is within the bounds specified by the non-functional requirements.
Acceptance Testing
Type of testing that the system users or customers perform this testing before accepting the product
Test Process in Software Testing
To ensure high quality in software products, integrate software testing into the software development process. Testing activities begin as soon as development activities begin and are carried out in parallel with the development stages.
Requirements analysis and specification
The objective of testing in this phase is to evaluate the gathered requirements. Each requirement should be evaluated to ensure it is correct and testable, and the requirements together are complete. Software inspections and prototyping can be employed to ensure the good quality of requirements
System and software design
This phase partitions the requirements into hardware or software systems and builds the overall system architecture. The objective of testing in this phase is to verify the mapping between the requirements specification and the design.
Intermediate design
In this phase, the software system is broken into components and then classes are associated with each component. Design specifications are written for each component and class. The objective of testing in this phase is to avoid mismatches of interfaces.
Implementation design
In this phase, the developers start writing and compiling classes and methods. The objective of testing in this phase is to perform effective and efficient unit testing. Unit test results and defects should be saved and reported properly for further processing
System deployment
This is the process of delivering a completed software product to clients. The testing activities in this phase is to perform system testing, acceptance testing, and usability testing. System testing validates whether the software meets the functional and non-functional requirements, while acceptance testing can be started when the system testing is completed. Test cases are derived from acceptance test plans and test data set up.
test case or test scenario
a software artifact with a set of test inputs, execution conditions, and expected results developed for a particular objective, such as to exercise a particular program path to verify compliance with a specific requirement and as documentation for a test item. Test cases comprise user inputs that are provided to the application and the procedure for executing the test case during the test
Test Case ID
part of test case that is a name and number to identify a test case
Objective/Description
part of test case that the reason for the test (this may include the type of test)
Unit testing
the activity of writing code that tests other codes. This test focuses on a single unit of the software system, which can be modules such as methods, class, and interface. It is also a source code that can be compiled and executed.
White-Box Testing
This testing approach is used to verify the internal logic and program statements of components or software. It involves stepping through every line of code and every branch in the code
Black-Box Testing
In this testing, the tester derives tests from external descriptions of the software, including specifications, requirements, and design. This test is concerned with the inputs and outputs of the system where a set of input is inserted to the software's user interface
JUnit
These are open-source unit testing frameworks designed for Java programming language
TestNG
These are open-source unit testing frameworks designed for Java programming language
test-driven development (TDD)
An iterative process where tests for the code are written before writing the code. This approach forces the developer to write testable code
Step 1
Write a unit test that tests the functionality to satisfy a given requirement. Run the test, but it will not even compile because there is no supporting code yet.
Step 2
Write just enough code to compile the test successfully
Step 3
Run the test but it will fail because no functionality has been put in the code
Step 4
Write just enough code to satisfy the test.
Step 5
Run the test. It should now pass
Step 6
Refactor the code as necessary, verifying with tests. Refactoring is a process of improving the code without changing its external behavior.
Step 7
Repeat all the steps by writing another test and until all requirements are coded and testable.
Software deployment
the process of delivering a completed software product to clients. This involves packaging, testing, distributing, and installing the software product. Software files can be deployed manually or through automated deployment tools.
Automation
This eliminates the manual tasks of deploying software products. These tools perform tasks such as bug detection, patch protection, performance testing, and code analyzing.
Security
It manages the permission settings of users and groups who can access the information in the software.
Updates
These automate system updates, scan vulnerabilities, and practice regular patch management of latest software versions across applications. Software patching involves acquiring, testing, and installing the code - known as a patch - into an executable program to provide an update, fix, or improved version of the program or its supporting data.
Monitoring
It monitors and analyzes the activities and interactions of the software users. This helps in optimizing the performance and eliminates issues in the software before they spread in the entire network.
Jenkins
- It is a self-contained, open-source automation server that can be used to automate all activities related to building, testing, and delivering or deploying software. This can be installed through native system packages, Docker, or even run standalone by any machine with a Java Runtime Environment (JRE) installed. Jenkins' functionalities can be extended through the installation of plugins in IDEs
Octopus Deploy
This automated deployment tool is compatible with ASP.Net, Java, Node.js, and Windows services, as well as various script languages and database types.
Bamboo
This offers support for the delivery aspect of continuous delivery. Deployment projects automate the releasing into each environment while letting the project team control the flow with per-environment permissions. This supports real-time monitoring across all tools and flag errors of software as soon as they occur
SolarWinds Patch Manager
This is an automated patch management software for Microsoft servers, workstations, and third-party applications. This facilitates easier patching, reporting, and information gathering for servers and workstations, and allows the project team to manage patch deployments with advanced scheduling and rebooting across servers and workstations.