참고 답변
|
Aspect |
||
|
Definition |
A testing approach where the internal structure and logic of the system under test are not known to the tester. |
A testing approach where the tester has knowledge of the internal structure, design, and implementation of the system. |
|
Focus |
External behavior and functionality of the system. |
Internal logic, code coverage, and structural aspects of the system. |
|
Knowledge Required |
No knowledge of internal code or design is required. |
In-depth knowledge of programming languages, code, and system architecture is needed. |
|
Test Design |
Test cases are designed based on functional requirements and user expectations. |
Test cases are designed based on internal code paths, branches, and data flow within the system. |
|
Test Coverage |
Emphasizes testing from a user's perspective, covering all possible scenarios and inputs. |
Can target specific code segments, paths, and branches for thorough coverage. |
|
Test Independence |
Tester and developer are independent of each other. |
Collaboration between testers and developers is often necessary for effective testing. |
|
Skills Required |
Understanding of system requirements, creativity in designing test cases, and domain knowledge. |
Strong programming skills, debugging capabilities, and technical expertise are required. |
|
Test Maintenance |
Tests are less affected by changes in the internal structure of the system. |
Tests may need to be updated or reworked when there are changes in the code or system design. |
|
Test Validation |
Ensures that the system meets customer requirements and behaves as expected. |
Verifies the correctness of the implementation, adherence to coding standards, and optimization of the system. |
|
Test Types |
Functional testing, system testing, regression testing, acceptance testing, etc. |
Unit testing, integration testing, code coverage testing, security testing, etc. |
|
Advantages |
Tests are designed from a user's perspective, independent of the implementation. |
Can achieve higher code coverage, identify coding errors, and optimize system performance. |
|
Disadvantages |
Limited visibility into the internal workings of the system, potential for missing edge cases or implementation issues. |
Highly dependent on technical expertise, time-consuming, and may miss requirements or user expectations. |