# A Survey on Formal Verification and Validation Techniques for Internet of Things
## 6 Use of AI in Software Testing
### Advantages  
The use of AI in software \(TST_{NG}\) offers numerous advantages that can help improve the efficiency, effectiveness, and quality of software development. In this section, we will discuss some of the major advantages that can be gained from using AI strategies for software \(TST_{NG}\) (Figure 4):  
* **Automatic writing of test cases:** Automatic writing of test cases is one of the most-significant advantages of using AI in software \(TST_{NG}\). AI can analyze code and identify potential areas of weakness, allowing it to generate test cases that can thoroughly test the software. This can save significant amounts of time and effort that would otherwise be spent writing test cases manually. Moreover, AI-generated test cases can often cover more scenarios and edge cases than human-written test cases, leading to more thorough \(TST_{NG}\) and better software quality. * **Fast time-to-market:** Ising AI in software \(TST_{NG}\) can help reduce the time-to-market for software products. By automating repetitive and time-consuming tasks, such as regression \(TST_{NG}\), AI can help speed up the \(TST_{NG}\) process. This can help software companies release products more quickly, gaining an edge in the competitive marketplace. Additionally, a faster time-to-market can lead to increased revenue and \begin{table}
\begin{tabular}{p{56.9 pt} p{113.8 pt} p{113.8 pt} p{113.8 pt}} \hline \hline
**Testing Approach** & **Objective** & **Main Procedures** & **Limitations** \\ \hline Stress \(TST_{NG}\) & Ensures that the system can handle high volumes of traffic or requests without crashing or failing. & \(TST_{NG}\) of the system with a high volume of traffic or requests and observing how it performs. & May not detect errors or defects that arise under normal operating conditions. \\ \hline Performance \(TST_{NG}\) & Ensures that the system is responsive and performs well for its users. & \(TST_{NG}\) of the system with a representative load and observing how it performs. & May not detect errors or defects that arise when the system is under stress or load. \\ \hline Regression \(TST_{NG}\) & Ensures that the system continues to function correctly after changes have been made to it. & Retesting the system against a set of predefined test cases after changes have been made to it. & May not detect errors or defects that arise when the system is under stress or load. \\ \hline \hline \end{tabular}
\end{table} 
Table 5: _Cont._improved customer satisfaction, as customers are more likely to choose products that are released quickly and regularly updated with new features and functionality. * **Earliest response/feedback:** Another advantage of using AI in software \(TST_{\text{NG}}\) is the ability to provide early feedback on software quality. AI can detect defects and vulnerabilities early in the development cycle, allowing developers to address them before they become major issues. This can help improve software quality and reliability, leading to better customer satisfaction. Additionally, early detection of issues can help reduce the cost and effort required for fixing them later in the development process. * **Prognostic analysis:** Prognostic analysis is another advantage of using AI in software \(TST_{\text{NG}}\). AI can analyze historical and real-time data to predict the future behavior of a software system. This can help identify potential issues before they occur, allowing developers to take preventative measures to avoid downtime or system failures. Additionally, prognostic analysis can help optimize the performance and efficiency of software systems, leading to better user experiences and improved customer satisfaction. * **Integrated platform:** Using AI in software \(TST_{\text{NG}}\) can help integrate various \(TST_{\text{NG}}\) tools and platforms. AI can help unify different \(TST_{\text{NG}}\) methods, such as unit \(TST_{\text{NG}}\), integration \(TST_{\text{NG}}\), and system \(TST_{\text{NG}}\).