Test script

A test script in software testing is a set of instructions that will be performed on the system under test to test that the system functions as expected.

Types of test scripts
There are various means for executing test scripts. These last two types are also done in manual testing.
 * Manual testing. These are more commonly called test cases.
 * Automated testing.
 * Short program written in a programming language used to test part of the functionality of a software system. Test scripts written as a short program can either be written using a special automated functional GUI test tool (such as HP QuickTest Professional, Borland SilkTest, IBM TPNS and Rational Robot) or in a well-known programming language (such as C++, C#, Tcl, Expect, Java, PHP, Perl, Powershell, Python, or Ruby). As documented in IEEE, ISO and IEC.
 * Extensively parameterized short programs a.k.a. Data-driven testing
 * Reusable steps created in a table a.k.a. keyword-driven or table-driven testing.

Usage and functionality
Automated testing may be executed continuously without the need for human intervention, they are easily repeatable, and often faster. Automated tests are useful in situations where the test is to be executed several times, for example as part of regression testing. Automated tests can be disadvantageous when poorly written, leading to incorrect testing or broken tests being carried out.

Automated tests can, like any piece of software, be poorly written or simply break during playback. They also can only examine what they have been programmed to examine. Since most systems are designed with human interaction in mind, it is good practice that a human tests the system at some point. A trained manual tester can notice that the system under test is misbehaving without being prompted or directed; automated tests can only examine what they have been programmed to examine. When used in regression testing, manual testers can find new bugs while ensuring that old bugs do not reappear while an automated test can only ensure the latter. Mixed testing, with automated and manual testing, is often used; automating what needs to be tested often and can be easily checked by a machine, and using manual testing to do test design and exploratory testing.

One should consider the return on investment for automating any given test script, i.e. does the cost to build and maintain that script cost less than it would take to simply execute it manually. Where cost can be measured in terms of time and/or money but also the opportunity cost of not freeing up people to do other work.