1. A computer-implemented method of software testing, the method comprising: in response to a set of input data, executing, by a computer hardware processor, a first script representing a first test case of an application under test, wherein the first test case includes a first test configuration file, a first test parameter, and a first test data file; invoking from the first script a plurality of generalized script elements, each generalized script element when invoked testing a specific functionality of the application under test; executing, by the computer hardware processor, a second script representing a second test case of the application under test, wherein the second test case includes a second test configuration file, a second test parameter, and a second test data file; invoking from the second script at least some of the plurality of generalized script elements that are invoked by the first, wherein the first script, the second script, and the generalized script elements are distinct, and wherein the at least some of the generalized script elements are used to test one or more common functionalities that are common to the first test case and the second test case; and determining whether the first and second test cases have passed or failed the software testing based on execution of the first and second scripts, wherein the first script and the second script are utilized to test functionalities of a storage application of a first storage system that backs up data from a second storage system over a network, wherein data stored in the first storage system is deduplicated into deduplicated segments, wherein the deduplicated segments are compressed into one or more compression regions (CRs) using a compression algorithm comprising a Lempel-Ziv algorithm, and wherein the CRs of the compressed deduplicated segments are then stored in a persistent storage device of the first storage system.