मंगळवार, मार्च २०, २०१२

STLC: Software Testing Life Cycle

माझ्या आधीच्या post मध्ये मी software आणि testing बद्दल बोलेली. ह्या post मध्ये software testing cycle बद्दल बोलेन, जसे ते कसे चालू होते, कधी चालू होते, काही issues असले तर काय, application crash झाले तर काय?, software ची quality कशी decide करायची आणि बरेच काही, काय, कधी, कसे ची उत्तरे.

आपल्याला माहित आहे की software हे लहान गोष्टीना एकत्र करून वापरण्या सारखे बनवलेले असते. जर आपण individual units चा विचार केला तर त्यांना existence नाही आणि असे units चा काही अर्थ राहत नाही . त्यांना वापरता येण्या सारखे करण्या साठी त्यांना एकत्र आशा प्रकारे जोडावे लेगेल की त्याचा एक प्रोडक्ट बनेल आणि कुठलाही task execute करता येइल.

हे units development team तयार करतात. एकदा का सर्व units उभारले आणि टेस्ट केले, integration झाल्यानंतर complete software वापरण्यासारखे होते. हे units पण तपासले जातात आणि त्या unit चे तपासणी developer करतो . Unit testing नंतर integration होते.

Unit Testing: Software लहान units ने बनवले जातात. हे units development team स्वतः टेस्ट करते . ह्यालाच unit testing असे बोलतात.

Integration Testing: Unit testing नंतर हे सगळे लहान units एकत्र केले जातात आणि एखादी task चालवायला वापरले जातात.

Interface Testing: ह्या testing मध्ये , दुसरया applications चे interface किंवा माझ्या software ला जे resource communicate करत आहेत त्याचे checking होते . उदाहरनार्थ : माझे application dusrya application, OS, H/W किंवा environment बरोबर communicate करत आहे . ह्यासाठी सर्वात चांगले उदाहरण असेल online shopping. Online shopping मध्ये खरेदी करण्यासाठी product select केल्यानंतर ग्राहकला payment gateway system चा वापर करतो ज्यामध्ये third party जसे banks, credit cards, master किंवा visa cards वगैरेचा वापर ग्राहकाच्या selection प्रमाणे केला जातो. दुसरं उदाहरण म्हणजे print command जे कुठल्या हि MS word किंवा pdf साठी दिले जाते. ह्या मध्ये MS word माझ्या P.C ला connected माझ्या Printer ला निर्देश देतो.

Smoke Testing(Smoke Testing): जेंव्हा पूर्ण build testing team ला दिला जातो तेंव्हा smoke testing होते. Smoke testing negative attitude आणि system ब्रेक करायच्या इराद्याने केला जातो . दिलेल्या build मध्ये जर system तुटले किंवा खूप महत्वाचा किंवा कठीण feature वास्तव्यात नसेल, तर build नाकारले जाते . Smoke testing test manager कडून केले जाते आणि हे जास्तीत जास्त अर्धा तास घेते. ह्याचे महत्वाचे check करण्याचे कारण म्हणजे system आहे कि नाही हे बघितले जाते .

System Testing(System Testing): System testing ह्यामध्ये system ची तपासणी किंवा पूर्ण application ची तपासणी केली जाते . सर्व workflow सुरुवातीपासून शेवटपर्यंत तपासले जाते . त्यामध्ये तुटलेल्या links किंवा flows नसले पाहिजेत. प्रत्येक सुरुवातीला शेवट असलाच पाहिजे. ह्यामध्ये, test environment हे production किंवा live environment सारखेच असायला पाहिजे . कुठले हि issues किंवा defects ह्या phase मध्ये मिळतील ते bugs म्हणून report होतील. bugzilla सारखे tools defect tracking साठी bugs band होईपर्यंत वापरले जातात. हे सर्व excelsheet मध्ये ठेवता येते पण excelsheet मध्ये ठेवणे किचकट काम असते, म्हणून एखादा tool वापरला जातो . हे tools साधारण पणे open source किंवा freeware असतात आणि net वर सोप्यारित्या मिळून जातात .

Retesting testing(Retesting testing): जे काही bugs log होतात ते development team ला दिले जातात . Development team ते fix करते आणि test team ला fixed build दिले जाते . ह्या नवीन build मध्ये system testing जे bugs log झालेले त्याचा fixes समाविष्ट असतात . ह्या bug fixes न test करायचे त्यालाच Retesting म्हणतात. Retesting हे s/w च्या बदल केलेल्या जागी केले जाते .

Regression Testing(Regression Testing): Regression testing हे change न केलेल्या जागांवर केले जाते . system testing करते वेळी असे काही features असतील जे flawless किंवा defect नसलेले असतात . Regression मध्ये , हेच flawless किंवा defect नसलेले features तपासले जातात , म्हणजे त्यामध्ये defects fix केल्या कारणाने नवीन bug येऊ नये. Development team जेंव्हा नवीन build देते तेव्हा regression testing हि केली जाते . म्हणजे नवीन build वर 2 प्रकारचे testing केले जाते . Resting आणि Regression testing. कुठला हि defect ह्या दरम्यान सापडला तर log केला जातो आणि आधी पासून असलेला defect जर बरोबर work नाही झाला तर reassign केला जातो . हे 2 प्रकार ची testing ते defects बंद होत नाही तो पर्यंत केले जातात.

Sanity testing(Sanity testing): Sanity testing हि smoke testing सारखीच असते . Sanity testing positive attitude नी केली जाते . ह्या मध्ये कुठले हि failures, defects, issues किंवा crashes नाही मिळणार असे समजले जाते . हे साध्या पद्धतीने फक्त product किंवा website ला navigate केले जाते.

Acceptance testing(Acceptance testing): म्हणजेच UAT(User Acceptance Testing). हे एक formal तपासणी असते जी system built वर केली जाते . Development, bug fixing आणि function testing पूर्ण झाल्या नंतर ही तपासणी केली जाते . ही साधारण पणे ग्राहक करतो. ह्या मध्ये 2 प्रकार आहेत: अल्फा & Beta .
Alpha Testing: ही ग्राहक किंवा बाहेर चे व्यक्ति जे ग्राहकाला represent करतात जे developers आणि testers च्या बरोबर
Beta testing: ही testing customer किंवा बाहेर चे व्यक्ति त्यांच्या स्वताच्या साईटवर करतात. ह्या टेस्टिंग च्या पद्धतीत development team चे testers involve असू किंवा नासु पुन सक्तात.

आतासाठी फ़क्त इतकेच. नवीन post सोबत लवकरच येईन.
तो पर्यंत आनंदाने वाचत रहा.


STLC: Software Testing Life Cycle


In my previous post I talked about the Software and testing. In this post I will talk about the Software testing cycle like how does it starts, when does it starts, what if there are some issues, what is application crashes, how to decide the quality of software and lot many WHAT, WHEN, HOW. We know that s/w is collection of small units joined together to make it usable. If we consider individual units, then they don’t have existence and units independently do not make any sense. To make them useful, we need to join them in such a way that they can form a product and can be used to execute any task. These units are developed by the development team. Once all the units are build and tested individually, integration is done to make the complete s/w usable. These individual units are also tested and its testing is done by developer of that unit itself. This testing is k/as Unit testing. After unit testing integration is done.

Unit Testing: S/w is made up of small units. These units are tested by development team itself. This is known as unit testing.

Integration Testing: After Unit testing, all these small units are combined together to perform or execute any task.

Interface testing: In this testing, we check the interfaces of any other application or resource communicating to my s/w. E.g. My application is talking to other s/w , OS, H/W, environment. The best example for this can be any e-commerce website i.e. online shopping. In online shopping, after selecting the product to buy, user navigates to payment gateway systems, in which third party are included like banks, credit cards, master or Visa cards etc and further it is navigated according to user’s selection. Other example can be giving print command from any MS Word or pdf. In this MS Word Is talking to my Printer connected to my PC.

Smoke testing: When a complete build is given to the testing team then smoke testing is done. Smoke testing done with negative attitude and to break the system. If system crashes or any important or critical feature is not present in the given build, then it is rejected. Smoke testing is generally done by Test manager and takes hardly half an hour. Its main purpose is to check that whether the system is dead or alive.

System Testing: System testing is testing the system or application as whole. All the workflows are executed end to end. There should not be broken links or broken flows. For each start there should be an end. In this, the test environment is same as production or Live environment. Any issues or defects found during this phase are reported as bugs. Defect tracking tools like bugzilla are used to keep track of these bugs till closure. It can be maintained in excel sheet as well, but to maintain the excel sheet is very tedious task, so a tool is used. These tools are generally open source or freeware and are easily available on net.

Retesting testing: All the bugs logged are assigned to development team. Development team fixes them and gives the fixed build to test team. This new build contains the fixes of the bugs which were logged during system testing. Now testing these bugs is known as "Retesting". Retesting is done for the changed part of the software.

Regression Testing: Regression testing is done for the unchanged part of the software. While doing the system testing, there may number of features which may be flawless or defect free. In regression, these flawless or defect free features are tested, so that there should not be possibility of initiating any new bug due to fixing the defects. When development team gives the new build for the defects found, at that time regression is also performed. So on the new build two types of testing are done. Retesting and Regression testing. Any new defect found during this phase is logged and any existing defect which is not working is re-assigned. These two testing are performed till the closure of all the defects. Sanity testing: Sanity testing is as good as smoke testing. Sanity testing done with positive attitude. In this we don’t expect any failures, any defects, any issues or any crashes. It is also done like simple navigation across the product or website.

Acceptance testing: aka UAT(User Acceptance Testing). This is formal testing done on the actual system built. After completion of development, Bug fixing and Functional Testing, this testing is done. It done with real data. It is generally done by Customer or clients. It is of two types: अल्फा & Beta
Alpha Testing: It is an in house testing done customer or external entities representing customer at developers site in presence of developers and testers.
Beta Testing: It is done by customer or external entities at there own site by there own people. In this case testers of development side may present or may not be.

This much for now. Will come up with new posts later.
Till then Happy Reading!!!

२ टिप्पण्या: