Paper Reading AI Learner

On Learning Meaningful Assert Statements for Unit Test Cases

2020-02-13 22:32:13
Cody Watson, Michele Tufano, Kevin Moran, Gabriele Bavota, Denys Poshyvanyk
     

Abstract

Software testing is an essential part of the software lifecycle andrequires a substantial amount of time and effort. It has been esti-mated that software developers spend close to 50% of their time ontesting the code they write. For these reasons, a long standing goalwithin the research community is to (partially) automate softwaretesting. While several techniques and tools have been proposedto automatically generate test methods, recent work has criticizedthe quality and usefulness of the assert statements they generate.Therefore, we employ a Neural Machine Translation (NMT) basedapproach calledAtlas(AuTomaticLearning ofAssertStatements)to automatically generate meaningful assert statements for testmethods. Given a test method and a focal method (i.e.,the mainmethod under test),Atlascan predict a meaningful assert state-ment to assess the correctness of the focal method. We appliedAtlasto thousands of test methods from GitHub projects and itwas able to predict the exact assert statement manually writtenby developers in 31% of the cases when only considering the top-1 predicted assert. When considering the top-5 predicted assertstatements,Atlasis able to predict exact matches in 50% of thecases. These promising results hint to the potential usefulness ofour approach as (i) a complement to automatic test case generationtechniques, and (ii) a code completion support for developers, whocan benefit from the recommended assert statements while writingtest code.

Abstract (translated)

URL

https://arxiv.org/abs/2002.05800

PDF

https://arxiv.org/pdf/2002.05800.pdf


Tags
3D Action Action_Localization Action_Recognition Activity Adversarial Agent Attention Autonomous Bert Boundary_Detection Caption Chat Classification CNN Compressive_Sensing Contour Contrastive_Learning Deep_Learning Denoising Detection Dialog Diffusion Drone Dynamic_Memory_Network Edge_Detection Embedding Embodied Emotion Enhancement Face Face_Detection Face_Recognition Facial_Landmark Few-Shot Gait_Recognition GAN Gaze_Estimation Gesture Gradient_Descent Handwriting Human_Parsing Image_Caption Image_Classification Image_Compression Image_Enhancement Image_Generation Image_Matting Image_Retrieval Inference Inpainting Intelligent_Chip Knowledge Knowledge_Graph Language_Model Matching Medical Memory_Networks Multi_Modal Multi_Task NAS NMT Object_Detection Object_Tracking OCR Ontology Optical_Character Optical_Flow Optimization Person_Re-identification Point_Cloud Portrait_Generation Pose Pose_Estimation Prediction QA Quantitative Quantitative_Finance Quantization Re-identification Recognition Recommendation Reconstruction Regularization Reinforcement_Learning Relation Relation_Extraction Represenation Represenation_Learning Restoration Review RNN Salient Scene_Classification Scene_Generation Scene_Parsing Scene_Text Segmentation Self-Supervised Semantic_Instance_Segmentation Semantic_Segmentation Semi_Global Semi_Supervised Sence_graph Sentiment Sentiment_Classification Sketch SLAM Sparse Speech Speech_Recognition Style_Transfer Summarization Super_Resolution Surveillance Survey Text_Classification Text_Generation Tracking Transfer_Learning Transformer Unsupervised Video_Caption Video_Classification Video_Indexing Video_Prediction Video_Retrieval Visual_Relation VQA Weakly_Supervised Zero-Shot