ซอฟต์แวร์ได้รับการทดสอบเพื่อยืนยันว่าอินพุตที่ถูกต้องทั้งหมดถูกตีความและดำเนินการอย่างถูกต้องในขณะที่อินพุตไม่ถูกต้องจะถูกส่งออกไป การทดสอบยังตรวจสอบว่าผลลัพธ์ถูกสร้างอย่างมีประสิทธิภาพและสามารถจัดการข้อมูลจำนวนมากได้โดยไม่ต้องสะดุด การทดสอบสามารถดำเนินการด้วยตนเองหรือทางอิเล็กทรอนิกส์ การทดสอบซอฟต์แวร์อัตโนมัติเกี่ยวข้องกับการใช้ซอฟต์แวร์พิเศษเพื่อทดสอบรหัสที่อยู่ระหว่างการพัฒนา การทดสอบดังกล่าวมีประโยชน์ต่อกระบวนการพัฒนาซอฟต์แวร์เมื่อนำไปใช้อย่างรอบคอบ
การทดสอบด้วยตนเองขึ้นอยู่กับความพิถีพิถันของผู้ที่ทำการทดสอบ การทดสอบซอฟต์แวร์ด้วยตนเองนั้นใช้เวลานานและต้องการอัตราส่วนที่สำคัญของผู้ทดสอบต่อนักพัฒนาสำหรับการใช้งานส่วนใหญ่ ทำให้ต้นทุนการพัฒนาสูงขึ้น นอกจากนี้การทดสอบด้วยตนเองมีข้อ จำกัด ว่าข้อมูลจำนวนมากหรือผู้ใช้หรืออินพุตพร้อมกันจำนวนมากไม่สามารถทดสอบได้อย่างง่ายดาย
การทดสอบซอฟต์แวร์อัตโนมัติจะควบคุมการทดสอบการทำงานของโปรแกรมและการประเมินผลลัพธ์ ซอฟต์แวร์ทดสอบจัดเตรียมอินพุตซึ่งสอดคล้องกับเงื่อนไขที่แตกต่างกันไปยังซอฟต์แวร์ที่กำลังได้รับการประเมิน สำหรับเงื่อนไขแต่ละชุดซอฟต์แวร์ทดสอบจะเปรียบเทียบผลลัพธ์จริงกับผลลัพธ์ที่ต้องการและเก็บสถิติเกี่ยวกับพฤติกรรมโดยรวมของซอฟต์แวร์เป้าหมาย ตามการ "เรียกใช้" โดยทั่วไปซอฟต์แวร์ทดสอบจะให้ผลสรุปเพื่อให้ผู้ใช้สามารถกำหนดสิ่งที่ต้องแก้ไขได้อย่างรวดเร็ว
ในการทดสอบซอฟต์แวร์อัตโนมัติงานที่น่าเบื่อที่เกี่ยวข้องกับการทดสอบเช่นการเข้าสู่ระบบหรือการป้อนข้อมูลเช่นที่อยู่ทางไปรษณีย์ถูกจัดวางเป็นกลไก สามารถทดสอบเงื่อนไขที่หลากหลายได้ในการวิ่งแต่ละครั้ง เนื่องจากการทดสอบอัตโนมัติเกี่ยวข้องกับการใช้คอมพิวเตอร์และซอฟต์แวร์มันยังช่วยให้สามารถจำลองข้อมูลอินพุตจำนวนมากหรืออินพุตที่รวดเร็วมาก เงื่อนไขการทดสอบจำนวนหนึ่งสามารถดำเนินการให้เสร็จภายในเวลาไม่กี่ชั่วโมง ดังนั้นการทดสอบอัตโนมัติจึงมีประโยชน์อย่างมากสำหรับการทดสอบการถดถอยซึ่งช่วยให้มั่นใจได้ว่าฟีเจอร์ใหม่หรือการแก้ไขข้อบกพร่องไม่ได้ทำให้รหัสการทำงานก่อนหน้านี้เสียหาย
วิธีการพัฒนาล่าสุดบางอย่างเช่น Extreme Programming เน้นว่าการทดสอบนั้นมีอยู่ก่อนการเข้ารหัส วิธีการพัฒนาเน้นว่าการทดสอบการถดถอยจะดำเนินการหลายครั้งในแต่ละวันเพื่อให้แน่ใจว่าซอฟต์แวร์นั้นถูกต้องตามที่พัฒนา หากทีมซอฟต์แวร์ต้องปฏิบัติตามระเบียบวิธีนี้สำหรับซอฟต์แวร์ที่มีความสำคัญใด ๆ จะต้องมีการบังคับใช้การทดสอบซอฟต์แวร์อัตโนมัติ
ซอฟต์แวร์ทดสอบระบบอัตโนมัติจะต้องป้อนอินพุตและเอาต์พุตที่ต้องการ วิธีหนึ่งในการทำเช่นนี้คือการจัดเก็บเงื่อนไขการทดสอบด้วยตนเองไว้ในซอฟต์แวร์ อีกวิธีคือการเขียนโค้ดเพื่อสร้างเงื่อนไขต่าง ๆ ภายในขอบเขตที่ยอมรับได้ของซอฟต์แวร์ที่จะทำการทดสอบ ดังนั้นพื้นฐานของการทดสอบซอฟต์แวร์อัตโนมัติเป็นความพยายามของมนุษย์อย่างแน่นอน ซอฟต์แวร์ทดสอบอัตโนมัติไม่สามารถไปไกลกว่านี้ได้ด้วยตนเอง
การทดสอบซอฟต์แวร์อัตโนมัติมีค่าใช้จ่ายที่สำคัญในแง่ของซอฟต์แวร์ที่จะได้รับเช่นเดียวกับการใช้งาน ดังนั้นไม่ว่าจะเป็นแบบอัตโนมัติและส่วนใดของการทดสอบที่จะทำให้เป็นแบบอัตโนมัติคือการตัดสินใจที่สำคัญ การทดสอบอัตโนมัติไม่เหมาะสมสำหรับคุณสมบัติและสภาพแวดล้อมที่คาดว่าจะเปลี่ยนแปลงอย่างมีนัยสำคัญ ในการใช้งานส่วนใหญ่การผสมผสานของการทดสอบแบบแมนนวลและแบบอัตโนมัติเหมาะ


