) software components adhere to the required performance. Development testing is often done by the software developer as part of the coding process (think about usage of printf() during software development to ensure the code does what was intended) but often not formalized and hence not repeatable. System tests represent a type of testing in which application software stacks, enablement software [board support package (BSP) including operating system], and hardware compo- nents are combined and tested as a system to confirm that they will interact as per their requirements. This typically carried by System Validation Test (SVT) team. Development testing Testing during the development phase is always under pressure, given that testing takes a lot of effort and each project is under time pressure. However, per the famous book "Mythical Man Month," and as known to most experienced engineers and managers, it is found that the cost of finding a bug increases with the time, which is proven many times through vari- ous studies. Basic testing needs to be incorporated into the design flow for any selected soft- ware development methodology. "Agile development" is not an excuse for eliminating test efforts! Static analysis Static code analysis is done to identify two areas of code improvement: Adherence to coding rules or quality metrics such as code complexity and number of lines per function call. Finding bugs. Think about indexing into an array beyond its size or other provable evidence that the code will fail. Open Radio Access Network (O-RAN) Systems Architecture and Design. DOI: https://doi.org/10.1016/B978-0-323-91923-4.00015-X © 2022 Elsevier Inc. All rights reserved. 330 Open Radio Access Network (O-RAN) Systems Architecture and Design Security issues. The classic example is buffer copying outside of intended boundaries. A good security approach requires security aspects to be considered on every level. Static analysis can be done by multiple means, ideally all at the same time: Peer review where software enginee