Arunkumar Khannur's Software Testing Knowledge Center

1.3. Software Structure and Software Testing

Software is a system with a well defined structure at different levels.
At the highest level, software is a system that operates on a given inputs, processes and transforms these inputs into outputs. While doing these activities it has to interface with many internal and external components.

In the next level, software consists of modules. To produce results, modules have to interface with each other. Building software in a modular way is dictated by structured programming concepts that emphasize functional decomposition

Each module is made up of units that work together to produce results. This requires appropriate parameter passing amongst them.

Each unit is made up of programs. Programs in turn consist of statements. Statement has variable and expression. Expressions involve data types and operators.

In addition to this, across its development life cycles, software follows processes and also produces documents.

Thus, software product is the complete set, or any of the individual items of the set of computer programs, procedures, and associated documentation and data designated for delivery to a customer or end user. The effectiveness of a computer application in a business environment is determined by how well that application fits in to the environment in which it operates, usually such an environment is composed of: Data, People, Structure, and Rules and standards.

If software has to work properly, it has to be syntactically and semantically right; meet client and user requirements; fit to the operational environment; and also fulfill requirements like efficiency, reliability, usability, portability, and maintainability.

The purpose of software testing is to analyze a particular item (hardware, software, process) of a software product to determine the differences between its requirements and actual behavior, and to evaluate the features and functionality of the given item to ensure it meets the needs of the user. In addition, it evaluates for fulfillment of requirements like efficiency, reliability, usability, portability, and maintainability.

In order to perform this, software testing should start at the lowest (smallest) possible item viz., expression & data types and work towards testing the entire system as a whole (include business processes where applicable).

If the system includes COTS (Commercially Off-the Shelf) products, there may not be any unit testing of the COTS, but integration testing should be conducted to ensure that the various pieces of the COTS work correctly on the proposed system hardware. Interface testing is also important when utilizing COTS products.

Note: there may be cases where it is not possible or feasible to test a given requirement. In this case, other methods must be used to verify the intent of the requirement was met. When writing requirements, "testability" and specific test methods and expected results for testing the requirement should be considered.
Khannur's Book
Arunkumar Khannur, Software Testing - Techniques and Applications, Published by Pearson Publications, 2011 (ISBN:978-81-317-5836-6; Pages:341 + xxii)
Follow Khannur
Khannur's Company
ISQT Process & Consulting Services Pvt. Ltd., Bangalore, INDIA
Khannur's Software Testing Forum
 Contact Khannur
ISQT Process & Consulting Services Pvt. Ltd.
#732, 1st Floor, 12th Main,
3rd Block, Rajajinagar,
Bangalore - 560010, INDIA
Phone: +91 80 23012511
Skype: arun.isqt