acm - an acm publication

Articles

Understanding software testing concepts

Ubiquity, Volume 2008 Issue February | BY Goutam Kumar Saha 

|

Full citation in the ACM Digital Library

Software testing concepts have been briefly described in this article. Readers would find it easier to understand fundamental concepts of software testing by going through a concept map thereof. Software testing is itself a discipline as well as a process. Software development is nothing but a process of coding functionality in order to meet the defined end-user requirements. We can think of software testing as an iterative process, which consists of Tests Designing, Tests Execution, Problems Identifying and Problem Fixing, for validating functionality and as well as for attempting the software break. Software testing aims to find problems and to fix them for improving software quality. Software testing may represent 40% of a software development budget. Basic methods of performing software testing include Manual Testing and Automated Testing. Manual software testing is the process of manually testing software (having the possible forms for example, user interfaces navigation, information submission, or attempt to hack the software or database etc.), carried out by an individual or individuals. Manual software testing is labor-intensive and slow. On the other hand, automated software testing is a process of creating test scripts, which can be run then automatically, repetitively, and through a number of iterations. Automated software testing helps us to minimize the variability of results, speed up the testing process, increase test coverage (that is, the number of different things tested), and ultimately provide greater confidence in the quality of the software being tested.


Software testing concepts have been briefly described in this article. Readers would find it easier to understand fundamental concepts of software testing by going through a concept map thereof. Software testing is itself a discipline as well as a process. Software development is nothing but a process of coding functionality in order to meet the defined end-user requirements. We can think of software testing as an iterative process, which consists of Tests Designing, Tests Execution, Problems Identifying and Problem Fixing, for validating functionality and as well as for attempting the software break. Software testing aims to find problems and to fix them for improving software quality. Software testing may represent 40% of a software development budget. Basic methods of performing software testing include Manual Testing and Automated Testing. Manual software testing is the process of manually testing software (having the possible forms for example, user interfaces navigation, information submission, or attempt to hack the software or database etc.), carried out by an individual or individuals. Manual software testing is labor-intensive and slow. On the other hand, automated software testing is a process of creating test scripts, which can be run then automatically, repetitively, and through a number of iterations. Automated software testing helps us to minimize the variability of results, speed up the testing process, increase test coverage (that is, the number of different things tested), and ultimately provide greater confidence in the quality of the software being tested.

Software testing can be based on a strategy like White Box Testing or Black Box Testing. Black Box testing is carried out against the functional specifications in order to check for any abnormal system behavior. Black box testing includes various types of testing like Functional Testing, Stress Testing, Load Testing, Ad-hoc Testing, Exploratory Testing, Usability Testing, Smoke Testing, Recovery Testing, Volume Testing, User Acceptance Testing, Alpha, and Beta Testing. White box testing deals with program's internal logic and code structure. White box testing includes various types of testing like Unit Testing, Static & Dynamic Analysis, Mutation Testing, Statement Coverage, Branch Coverage, and Security Testing. All these testing concepts and their inter-relationships have been visually described for our easy understanding of this important topic.

A Concept Map comprises of concepts and propositions. Concept Maps are the graphical representations of knowledge that are comprised of concepts and the relationships among them. Concept maps are 2- dimensional representations of cognitive structures showing the hierarchies and interconnections of concepts involved in a discipline or a sub-discipline. Concept map is an important tool for developing our both sensing and intuitive skills. Concept maps are useful as a means for representing the emerging science knowledge and for increasing meaningful learning in sciences in contrast to simply memorizing the text. Representing the expert knowledge of individuals and teams in government, business and in education becomes easier by this useful tool. It stimulates our idea generation and creativity. It is carving out a strong position for brainstorming, complex ideas communication, and formal argument representation. Formalized concept maps are being used in software design or in UML. It is a first step in ontology building. This article is a brief primer of this huge topic of software testing.

Further Readings:
[1] Rob Pirozzi, " Introduction to Software Testing."

[2] Nilesh Parekh, " Software Testing - Black Box Testing Strategy."

[3] Jiantao Pan, " Software Testing," CMU, 1999.

[4] Goutam Kumar Saha, "Software Fault Avoidance Issues," ACM Ubiquity, Vol.7, Issue 46, November 2006, ACM Press, USA.

[5] Goutam Kumar Saha, "Understanding Dependable Computing Concepts," ACM Ubiquity, Vol.8, Issue 44, November 2007, ACM Press, USA.

[6] Goutam Kumar Saha, "Software-Based, Low-Cost Fault Detection for Microprocessors," IEEE Potentials, Vol. 27, No. 1, pp. 37-41, 2008, IEEE Press, USA.

[7] Ian Sommerville, "Software Engineering," 6th Ed. Pearson Education.

Author's Biography:

In his last nearly twenty years' R&D and teaching experience, Goutam Kumar Saha has worked as a scientist in LRDE, Defence Research & Development Organisation, Bangalore and at the Electronics Research & Development Centre of India, Calcutta. At present, he is with the Centre for Development of Advanced Computing, Kolkata, India, as a Scientist-F. He is a fellow in IETE and senior member in IEEE, Computer Society of India, and ACM Fellow nominee etc. He has received various awards, scholarships and grants from national and international organizations. He is a referee of CSI Journal, AMSE Journal (France), IJCPOL (USA), IJCIS (Canada) and of an IEEE Journal / Magazine (USA). He is an associate editor of the ACM Ubiquity (USA), International Journal of the Latin American Center for Informatics Studies (CLEIEJ) and of the International Journal of Computing and Information Sciences (Canada). He was a Chair and Member of the Program Committee of the WSNEXT / UBICOMM 2007 (French Polynesia), UBICOMM 2008 (France), IEEE Computer Society Press, CONFENIS2007 (Beijing) etc. His fields of interest include software based fault tolerance, web technology, EIS, Knowledge Modeling and Natural Language Processing. He can be reached via [email protected].









Source: Ubiquity Volume 9, Issue 6 (February 12, 2008 - February 18, 2008)

COMMENTS

Hello I'll like to find out if your organisations offer virtual trainings.

��� Mansur Mamman, Wed, 13 May 2020 22:17:42 UTC

POST A COMMENT
Leave this field empty