For this code, create file name as variable and then add it to the collection. In 2 lines you have used 2 different names coming out of 2 different items
httpPostedFile.SaveAs(Server.MapPath("~/Upload/Testimonial/")+ "\\"+ fileNameExtension);
img.Add(Server.MapPath("~/Upload/Testimonial/") + Path.GetFileName(FileUpload1.PostedFile.FileName));
First line is taking from httpPostedfFile and another is taking from FileUpload control. So this is a contradiction. The file upload control will always have a single file name so it will be a repeated entry.
Having saparate variables instead of inline code will clear out the code and help with debugging breakpoints as well