मंगळवार, फेब्रुवारी ०७, २०१२

Software testing: मुळ परिचय (Software testing: A Basic Intro)

जेव्हा आपण software testing चा विचार करतो तेव्हा २ प्रश्न आपल्या समोर उभे रहातात. Software म्हणजे  काय? आणि testing म्हणजे काय?

Software काय आहे? : Software हे एक operating information आहे जे आपले प्रत्येक दिवसाचे काम सुरळीत करते. आणि Testing म्हणजे एखाद्या system ला तपासणे व त्याचे अपेक्षित निष्पन्न व्यवस्थित पार पाडले जात आहे का? हे पडताळणे. System जे अपेक्षित आहे तेच करतय का? Software आणि Testing चं वरील वर्णन साधं आहे, अतिशय साधं. हे अजुन चांगल्या शब्दांमध्ये प्रचलित करू शकतो जे नामांकित शब्द्कोशातुन जमा केलेत.
Software: Computer Software किंवा Software म्हणजे computer programmes व संबंधित data चा संग्रह असतो, जे काही नियम computer ला आखून देत आणि सांगत की काय कधी करायच. हे programs तुमच्या computer च्या hard drives मध्ये जतन केले जातात.

Testing: टेस्टिंग ही अशी एक प्रोसेस आहे ज्यामध्ये एखाद्या item च्या features चे मुल्यांकन केले जाते व सध्याच्या आणि अपेक्षित परिणाम या मधला फरक शोधला जातो
मग जर तुम्ही दोन्ही terms एकत्र केले तर software testing बनते.
तर Software Testing म्हणजे Software ची नीट चाचणी करणे आणि ते अपेक्षितपणे चालत आहे का हे तपासून पाहणे. Software जसे पाहिजे तसे चालत आहे का?

Software testing: Software testing हे एक अशी process आहे ज्यामध्ये software ची सुरुवाती पासून शेवत पर्यंत workflow आणि functionality check केली जाते. ह्या मध्ये सर्वात जास्त software ची कमतरता तपासली  जाते ज्याला bugs असेही  म्हणतात. तसे बघितले तर functional किंवा non-functional testing द्वारे system break करण्याचा पूर्ण प्रयत्न केला जातो. ह्यालाच software ची quality वाढवण्याची तार्हा समजली जाते.

Objectives of testing:
  1. Software ची functionality सुरुवातीपासून शेवटपर्यंत check करायला.
  2. जसे चालायला पाहिजे तसे चलते का?
  3. तुटलेल्या links किंवा workflows शोधायला.
  4. System मधले bugs शोधायला.
  5. Positive तसेच negative ways शोधायला.
मग मनात अजुन एक प्रश्न येतो की कोण सांगत की software नी नक्की कसे चालायला पाहिजे? किंवा कुठल्या artifacts च्या विरुध software check करायला हवे? कुठल्या components च्या आधारे आपण म़त ठेवू शकतो की ते पाहिजे तसे चालत आहे?
ह्याचे उत्तर असे की baseline requirement दस्तावेज. आणि हे requirement दस्तावेज customer किंवा client कडून दिले जातात. जेव्हा हे दस्तावेज customer आपल्या service provider ला देतो तेव्हा ते draft format मध्ये असतात. हे analyze आणि review केल्या नंतर जर service provider company ला काही requirement बदलाविशी वाटली किंवा नाकबुल किंवा काही कमीपण, तर customer ला सांगितले जाते. अजुन काही विचाराननंतर requirement पक्की केली जाते. ह्याच पक्क्या केलेल्या requirement ला Base line Requirements असे बोलतात.

Characteristics of Requirement:
  1. स्पष्ट: काय, कधी, कसे असले अगदी स्पष्ट असले पाहिजे.
  2. पूर्ण: workflow ची पूर्ण cycle असायला पाहिजे. म्हणजेच त्याची सुरुवात तसेच शेवट दोन्ही असायला पाहिजेत.
  3. मोजता येण्यासारखे: एखाद्याला ते मोजण्यासारखे असावेत जसे बैंकचे खाते क्रमांक हयात फक्त अंक असले पाहिजेत आणि त्याना अक्षराने sort करता नाही आले पाहिजे.
  4. Test करता येण्यासारखे: अशा requirements ची testing करता येणे शक्य झाले पाहिजे. उदाहरनार्थ software ची testing OS वर, जे अजुनही आले नाही!!!  ह्यालाच future requirements असेही बोलतात आणि हे पूर्ण नाही करू शकत. म्हणून हे test plan च्या out of scope section मध्ये येते.
  5. Not conflicting: Two requirements परस्परविरोधी असू नयेत.
Product or Project Categories:
एखाद्या product आणि project ची criticality त्याच्या targeted आणि त्याचा वापर करणारया वर आधारित असता म्हणजेच कोणत्या लोकांचा गट आणि हे software त्याच्यावर काय परिणाम करणार आहे. एखाद्या software ची Product or Project समजुन जेव्हा testing केली जाते तेव्हा tester ला module च्या काही parts वर जोर द्यावा लागतो. ह्यालाच आपण categorized करू शकतो:
  1. Life Affecting software: उधारण : Medical Domain - जर कोंटा Software Medical Domain किवंह Healthcare domain करीता बनवण्यात आला आहे तर त्याचा effect प्रत्यक्ष किंवा अप्रत्यक्षपणे end users वर पडतो. म्हणून, अशा software चा अचूकपणा, गति आणि स्पष्टता यावर जास्त जोर देला जातो. म्हणून असे softwares मध्ये fail नाही झाले पाहिजेत.
  2. Money Affecting software : कोणतीही Share marketing sites, banking sites किवंह transactional related sites जे प्रत्यक्ष किंवा अप्रत्यक्षपणे आपल्या targeted customer च्या financial life ला affect करतात.
  3. Simulated testing : Space research किंवा असेच काही simulation करीता तयार करण्यात आलेले Software किंवा products(NASA मध्ये वापरण्यात येणारे Software).
  4. Others : इतर सर्व Software ह्या category मध्ये नामांकित करता येतात.
माझ्या पुढच्या post मध्ये मी software requirements , त्याचे प्रकार आणि अजुन काही testing च्या माहित बद्दल बोलेन. तो पर्यंत आनंदाने वाचा...!!!



Software testing: A Basic Intro


When we talk about the software testing, the word itself has two good questions: What is software? & what is testing?

So what is software? A Software is operating information used by computer to automate & easy going our day to day life. What is testing: Testing is to check any system & its desired expectations whether they are fulfilled or not. Is it doing what it is supposed to do? The above description for software & testing is very basic, just to keep simple. It can be defined in good words, collected from good dictionaries:

Software: Computer software, or just software, is a collection of computer programs and related data that provides the instructions for telling a computer what to do and how to do it. These programs are stored in hard drives of your computer.

Testing: Testing is the process of analyzing an item to detect the differences between existing and required conditions and to evaluate its features.
So if we combine the two terms, then it becomes software testing.
So software testing is test the software and check whether it works as expected or not. Is the software doing what it is supposed to do?

Software testing: Software testing is the process of checking the software’s end to end workflows and functionalities. It more about finding out the discrepancy in the software which is known as bugs.
It is more about breaking the system at some point, being functional or non functional. It is also known as an art of improving the quality of the software build.

Objectives of testing:
  1. To check s/w for its end to end functionality.
  2. Is it working what it is supposed to do?
  3. To find out the broken links or broken workflows.
  4. To find out the bugs in the system.
  5. To check it in positive as well as negative ways.
So, another question comes in mind, who decides that what should software do? Or against what artifacts we should check the software? What are the components on which we can decide that it working as desired?
Answer to all the questions is Baseline requirement docs. And these requirement docs are provided by our customer or by clients. When a customer provides a requirement doc to its service provider, it is in draft format. After analyzing them and reviewing them, if the service provider company founds any requirements to be changed or contradictory or any discrepancy, is reported to customer. After few more rounds of discussions, the requirements are finalized. These finalized requirements are known as Base line Requirements. Characteristics of Requirement:
  1. Clear: Should be very clear that what, when, how is required.
  2. Complete: There should be complete cycle of any workflow. It should have some start point as well as end point.
  3. Measureable: One should be able to measure them like Account number in a bank can only be numeric values and cannot be sorted alphabetically.
  4. Testable: Testing of these requirements should be possible. Eg. Testing the s/w on an OS, which is not launched yet!!. These are also known as future requirements and cannot be fulfilled. So it comes under Out of Scope section in Test Plan Document.
  5. Not conflicting: Two requirements should not be conflicting.

Product or Project Categories:
The criticality of any product or project can be decided by the targeted end user i.e. who is group of end user and how this software is going to affect them. While testing any software as Product or Project, tester needs to emphasis on some part or module of the software. This can categorized as: 
  1. Life Affecting software: Eg Medical domain. If any software is build in medical domain or healthcare domain, then directly or indirectly, life of the end user will be affected. So the accuracy, speed, clarity in the results is more emphasized. Also, the failure of these s/w is not accepted.
  2. Money Affecting software: Any Share marketing sites, banking sites, or other transactional related sites, which will directly or indirectly affect the finances of the targeted customer.
  3. Simulated testing: Software or products built for Space research, or any such kind of simulation. (S/w used by NASA)
  4. Others: rest all the s/w can be classified in this category.

In the next post I will talk more on software requirements, its types and more about the testing
Till that Happy Reading….:) !!!

४ टिप्पण्या: