Abstract
Finding, pinpointing and correcting bugs in the software takes a lot of effort for software developers. Traditional testing requires humans to search and analyze data. Humans being prone to poor assumptions and hence skewed results leads to overlooked bugs. Machine learning helps systems to learn and apply the learned knowledge in the future which helps software testers with more accurate knowledge. Capability of several advanced machine learning techniques such as deep learning in a number of software engineering tasks such as code completion, defect prediction, bug localization, clone detection, code search and learning API sequences. A lot of approaches have been proposed by the researchers over the years at modifying programs automatically. Repairing programs by generate-and-validate techniques gain a lot by producing acceptable patches to the programmers and not overfitting through learning from past history and generating patches from correct code via probabilistic model. These approaches given the right environments play significant role in reducing the effort and time consumption as well as cost of the bug fixing for the software developers. In this chapter, various machine learning algorithms and their impact in software testing and bug fixing are explored. The last chapter concludes with the future of machine learning and predictive analysis and how they might be used for addressing the challenge of reacting faster to dynamic expectations of customers and their needs.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsReferences
K. Nayak, D. Marino, P. Efstathopoulos, T. Dumitras, Some vulnerabilities are different than others. in Proceedings of the 17th International Symposium on Research in Attacks, Intrusions and Defenses (RAID’14) (Springer, 2014), pp. 426–446
US-CERT, Adobe flash and Microsoft windows vulnerabilities (2015), Retrieved from https://www.us-cert.gov/ncas/alerts/TA15-195A
US-CERT, Oracle java contains multiple vulnerabilities (2013), Retrieved from https://www.us-cert.gov/ncas/alerts/TA13-064A
H. Shahriar, M. Zulkernine, Mitigating program security vulnerabilities: Approaches and challenges. ACM Comput. Surv. (CSUR) 44(3), 11 (2012)
I.V. Krsul, Software Vulnerability Analysis. Ph.D. Dissertation. Purdue University, 1998
A. Ozment, Improving vulnerability discovery models, in Proceedings of the 2007 ACM workshop on Quality of Protection (QoP’07) (ACM, 2007), pp. 6–11
M. Dowd, J. McDonald, J. Schuh, The Art of Software Security Assessment, Identifying and Preventing Software Vulnerabilities (Addison-Wesley Professional, 2007)
AIEEE Standards, IEEE Standard Glossary of Software Engineering Terminology, IEEE Std. 610.12-1990 (1990)
W. Landi, Undecidability of static analysis. ACM Lett. Program. Lang. Syst. (LOPLAS) 1(4), 323–337 (1992)
T. Reps, Undecidability of context-sensitive dat a-dependence analysis. ACM Trans. Program. Lang. Syst. (TOPLAS) 22(1), 162–186 (2000). S.J. Russell, P. Norvig, Artificial Intelligence: A Modern Approach, 3 rd edn. (2009)
Y. Xie, M. Naik, B. Hackett, A. Aiken, Soundness and its role in bug detection systems. in Proceedings of the Workshop on the Evaluation of Software Defect Detection Tools (BUGS’05, 2005)
R. Jhala, R. Majumdar (2009) Software model checking. ACM Comput. Surv. (CSUR’09) 41(4):21
P. Godefroid, Random testing for security: Blackbox vs. whitebox fuzzing, in Proceedings of the 2nd International Workshop on Random Testing (RT’07) (ACM,1, 2007)
P. Godefroid, M.Y. Levin, D. Molnar, SAGE: Whitebox fuzzing for security testing. Queue 10(1), 20 (2012)
D. Evans, D. Larochelle, Improving security using extensible lightweight static analysis. IEEE Softw. 19(1), 42–51 (2002)
J.R. Larus, T. Ball, M. Das, R. DeLine, M. Fahndrich, J. Pincus, S.K. Rajamani, R. Venkatapathy, Righting software. IEEE Softw. 21(3), 92–100 (2004)
N. Ayewah, D. Hovemeyer, J.D. Morgenthaler, J. Penix, W. Pugh, Using static analysis to find bugs. IEEE Softw. 25(5), 22–29 (2008)
A. Bessey, K. Block, B. Chelf, A. Chou, B. Fulton, S. Hallem, C. Henri-Gros, A. Kamsky, S. McPeak, D. Engler, A few bil lion lines of code later: Using static analysis to find bugs in the real world. Commun. ACM (CACM) 53(2), 66–75 (2010)
V. Chandola, A. Banerjee, V. Kumar, Anomaly detection: A survey. ACM Comput. Surv. (CSUR) 41(3), 15 (2009)
T.J. McCabe, A complexity measure. IEEE Trans. Softw. Eng. 2(4), 308–320 (1976)
M.H. Halstead, Elements of Software Science (Elsevier, New York, NY, USA, 1977)
N. Japkowicz, C. Myers, M.A. Gluck, A novelty detection approach to classification, in Proceedings IJCAI (1995) pp. 518–523
H. He, E.A. Garcia, Learning from imbalanced data. IEEE Trans. Knowl. Data Eng. 21(9), 1263–1284 (2009)
Z.-H. Zhou, X.-Y. Liu, Training cost-sensitive neural networks with methods addressing the class imbalance problem. IEEE Trans. Knowl. Data Eng. 18(1), 63–77 (2006)
G. Brown, J.L. Wyatt, P. Tino, Managing diversity in regression ensembles. J. Mach. Learn. Res. 6, 1621–1650 (2005)
K. Tang, P.N. Suganthan, X. Yao, An analysis of diversity measures. Mach. Learn. 65, 247–271 (2006)
N.V. Chawla, A. Lazarevic, L.O. Hall, K.W. Bowyer, SMOTE- Boost: Improving prediction of the minority class in boosting, in Knowledge Discovery in Databases: PKDD, vol. 2838 (2003), pp. 107–119
S. Wang, H. Chen, X. Yao, Negative correlation learning for classification ensembles, in Proceedings of the International Joint Conference on Neural Networks (WCCI, 2010), pp. 2893–2900
S. Wang, X. Yao, Negative Correlation Learning for Class Imbalance Problems, School of Computer Science, (University of Birmingham, 2012) Technical Report
L. Pelayo, S. Dick, Applying novel resampling strategies to software defect prediction, in Annual Meeting of the North American Fuzzy Information Processing Society (2007), pp. 69–72
L. Pelayo, S. Dick, Evaluating stratification alternatives to improve software defect prediction. IEEE Trans. Rel. 61(2), 516–525 (2012)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this chapter
Cite this chapter
Mahapatra, S., Mishra, S. (2020). Usage of Machine Learning in Software Testing. In: Automated Software Engineering: A Deep Learning-Based Approach. Learning and Analytics in Intelligent Systems, vol 8. Springer, Cham. https://doi.org/10.1007/978-3-030-38006-9_3
Download citation
DOI: https://doi.org/10.1007/978-3-030-38006-9_3
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-38005-2
Online ISBN: 978-3-030-38006-9
eBook Packages: Intelligent Technologies and RoboticsIntelligent Technologies and Robotics (R0)