Summary
Highlights
The video introduces the 12th meeting for the Analysis and Design of Software course, focusing on software testing and maintenance. It highlights these as final topics to ensure software quality after development. The presenter, Muhammad Diki Widianto, an IT Development System at Universitas Selatan, introduces himself.
The learning objectives include understanding the purpose, steps, and techniques of software testing, comprehending software maintenance management and processes, and implementing software testing and maintenance in case studies to ensure proper software functionality.
Software testing is a critical element of software quality assurance. Without systematic and structured testing, software faces high risks of defects, leading to financial losses, reputational damage, and even risks to human lives. Software testing is defined as executing a program or system to find errors and ensure it meets requirements.
According to Summerfell, software testing aims for validation (meeting user needs), verification (adhering to specifications), defect detection (finding errors before release), quality assurance (building stakeholder trust), and defect prevention (avoiding future similar defects).
Software testing is conducted in several sequential levels, from the smallest components to the entire system. These levels include Unit Testing, Integration Testing (with a distinction between integrating testing and System Integration Testing), and End-to-End Testing (typically User Acceptance Testing).
Unit testing is the most basic level, performed by developers during coding. It isolates and tests individual functions, methods, or classes. It's automated, repeatable, and ensures each unit functions according to technical specifications. The process involves identifying units, writing test cases, preparing the test environment, and executing tests.
Integrating testing integrates modules within a single application. System Integration Testing (SIT) verifies that different systems or system components function correctly together, focusing on interfaces and data flow between varied systems (internal and external). SIT is performed after individual systems are ready, involving QA, system analysts, and business analysts, using production-like data.
UAT is the final formal testing stage, performed by end-users or business representatives to verify if the system meets business needs and is ready for production. UAT confirms user requirements, providing final validation before release. Various types of UAT exist, such as business acceptance testing, contract acceptance testing, and alpha/beta testing.
Blackbox testing focuses on application details like UI, functions, and business process alignment with customer requirements. It doesn't examine the source code, concentrating on the domain information. An example is testing an e-PMB application for inputting data, processing payments, and status changes, directly through the application interface.
Whitebox testing examines the internal structure and code of the software to ensure all independent paths are executed, logical decisions are tested (true/false), and loops execute within their boundaries. An example illustrates whitebox testing in a login process, tracing various paths for empty fields, incorrect passwords, or unregistered usernames.
Software maintenance occurs after an application is developed and released. Beyond just fixing bugs, it involves evolving the software to remain reliable, secure, and relevant to user needs and technological advancements. According to IEE standards, maintenance is an ongoing process.
Maintenance types include corrective (fixing defects post-release), adaptive (adjusting to environmental/technological changes like OS upgrades or tax regulation changes), perfective (improving features like adding reports or optimizing queries), and preventive (avoiding future problems through refactoring code or updating documentation).
The maintenance process involves several steps: requests from users/monitoring, impact analysis (identifying affected components, estimating effort, risk, cost), approval, planning and design, implementation via coding and review, testing (unit, regression, SIT, UAT if needed), and finally, deployment and monitoring, including documenting changes and closing the request.