# A Survey on Formal Verification and Validation Techniques for Internet of Things
## 5 Testing Techniques  
Testing (\(Tst_{NG}\)) is an essential part of the software development process, as it helps to ensure that software systems are reliable, performant, and meet the needs of their users. There are many different approaches to \(TST_{NG}\) software, each with its own specific objectives and procedures (Figure 3):  
* **Unit \(Tst_{NG}\)**[67]:** Unit \(Tst_{NG}\) is a method of \(TST_{NG}\) that focuses on individual units or components of a software system. The goal of unit \(TST_{NG}\) is to guarantee that each component of the system works as expected and meets its standards. Unit \(TST_{NG}\) is normally accomplished by creating and executing test cases for each unit. Unit \(TST_{NG}\) has the main advantage of detecting faults and defects early in the development process, making them easier and less expensive to rectify. The biggest disadvantage of unit \(TST_{NG}\) is that it may fail to uncover flaws or faults that occur when units are merged. * **Integration \(Tst_{NG}\)**[68]:** Integration \(Tst_{NG}\) is a \(Tst_{NG}\) method that focuses on the interactions of several units or components of a software system. The goal of integration \(TST_{NG}\) is to guarantee that the system as a whole works as planned and that the units work properly when joined. Integration \(Tst_{NG}\) is often accomplished by \(TST_{NG}\) with various combinations of units and ensuring that they function as expected. The primary benefit of integration \(TST_{NG}\) is that it can uncover flaws and defects that occur \begin{table}
\begin{tabular}{p{113.8 pt} p{284.5 pt}} \hline \hline
**Advantage** & **Description** \\ \hline Reliability & Formal methods can help to ensure that a software system is reliable and performs as expected under different conditions. This can help to increase the trust in the system and reduce the risk of failures or errors. \\ \hline Efficient Test Scenarios & Formal methods can help to identify test scenarios that cover all possible system behaviors, which can reduce the number of tests needed and the time required for \(TST_{NG}\). This can result in more-efficient \(TST_{NG}\) and faster time-to-market for software systems. \\ \hline Maintainability & Formal methods can improve the maintainability of software systems by providing a clear and precise specification of the system’s behavior. This can make it easier to modify or refactor the software without introducing errors or defects. Formal methods can also help to ensure that modifications do not violate the system’s specifications or requirements. \\ \hline Reusability & Formal methods can improve the reusability of software components by providing a clear and precise specification of their behavior. This means that software components can be reused in different contexts without introducing errors or defects. Formal methods can also help to ensure that reused components behave correctly in all contexts. \\ \hline Standardization & Formal methods can provide a standardized approach to software development and verification. This means that software systems can be developed and verified using a common set of techniques and tools, which can improve interoperability and reduce the risk of errors or compatibility issues. \\ \hline Confidence & Formal methods can provide developers and stakeholders with confidence in the correctness and reliability of the software system. This can increase trust in the software system and reduce the risk of negative consequences, such as system failures or safety hazards. \\ \hline \hline \end{tabular}
\end{table} 
Table 4: _Cont._when units are merged, making them easier and less expensive to correct. The biggest disadvantage of integration \(TST_{NG}\) is that it may miss faults or problems that occur when the system is stressed or loaded. * **Acceptance \(TST_{NG}\)[69]:** Acceptance \(TST_{NG}\) is a method of determining whether a software system meets its requirements and specifications.