1. Learning Outcomes#
इस Chapter को पूरा करने के बाद आप:
- समझ पाएँगे कि Software Testing क्या है और इसकी जरूरत क्यों पड़ती है।
- Software Testing के मुख्य Purpose और Objectives पहचान पाएँगे।
- समझ पाएँगे कि Software Quality में Testing की क्या भूमिका है।
- Testing और Debugging के बीच अंतर बता पाएँगे।
- Quality Assurance (QA), Quality Control (QC) और Testing में अंतर समझ पाएँगे।
- Verification और Validation को आसान उदाहरणों से समझ पाएँगे।
- Error, Defect (Bug) और Failure के बीच संबंध पहचान पाएँगे।
- Software Tester की मुख्य Roles और Responsibilities समझ पाएँगे।
- एक वास्तविक Application में सामान्य Testing कैसे की जाती है, इसका शुरुआती अनुभव प्राप्त करेंगे।
2. Software Testing क्या है?#
मान लीजिए आपने एक Online Shopping Website बनाई है।
इस Website पर Customer:
- अपना Account बना सकता है।
- Login कर सकता है।
- Products देख सकता है।
- Cart में Products जोड़ सकता है।
- Online Payment कर सकता है।
- Order Place कर सकता है।
Developer ने इन सभी Features का Code लिख दिया।
अब एक महत्वपूर्ण सवाल है:
क्या सिर्फ Code लिख देने से हम यह मान सकते हैं कि Website सही तरीके से काम करेगी?
नहीं।
हो सकता है:
- सही Password देने पर भी Login न हो।
- Cart में दो Products जोड़ने पर गलत Total दिखाई दे।
- Payment सफल होने के बाद भी Order Create न हो।
- गलत Email डालने पर भी Registration हो जाए।
- Mobile Screen पर कोई जरूरी Button दिखाई न दे।
ऐसी समस्याएँ वास्तविक Users को परेशान कर सकती हैं।
इसीलिए Software को Users के लिए उपलब्ध कराने से पहले और Development के दौरान उसकी जाँच करना जरूरी होता है।
इस प्रक्रिया को Software Testing कहते हैं।
English Definition#
Software Testing is the process of evaluating software and its related artifacts to identify defects and determine whether specified requirements are satisfied.
आसान हिंदी में:
Software Testing का मतलब है Software को व्यवस्थित तरीके से जाँचना ताकि पता चले:
- क्या वह अपेक्षित तरीके से काम कर रहा है?
- क्या उसमें कोई समस्या है?
- क्या वह बताई गई Requirements पूरी करता है?
- क्या उसका व्यवहार Users की जरूरतों के अनुसार है?
यह जाँच केवल Buttons दबाने तक सीमित नहीं है।
Testing में Requirements, Actual Results, Expected Results और Software के Behavior की तुलना की जाती है।
Software Testing का आसान Flow#
Rendering diagram…
Diagram could not be rendered.
इस Diagram में ध्यान दीजिए:
- सबसे पहले हमें पता होना चाहिए कि Feature से क्या अपेक्षा है।
- फिर हम Feature को Test करते हैं।
- उसके बाद Actual Result देखते हैं।
- Expected और Actual Result की तुलना करते हैं।
- दोनों समान हों तो Test Pass हो सकता है।
- अंतर मिलने पर Test Fail होता है और समस्या की जाँच की जाती है।
Test Pass होने का मतलब यह नहीं कि पूरे Software में कोई Bug नहीं है। इसका मतलब केवल यह है कि उस Test में निर्धारित Conditions के अनुसार अपेक्षित Result मिला।
3. Purpose and Objectives of Software Testing#
English Definition#
The purpose of Software Testing is to provide information about software quality, detect defects, reduce risks, and support informed decisions about software readiness.
Software Testing सिर्फ Bugs खोजने के लिए नहीं की जाती।
इसका बड़ा उद्देश्य Software के बारे में भरोसेमंद जानकारी प्राप्त करना है।
2.1 Defects पहचानना#
मान लीजिए Calculator Application में:
10 + 5 का Result 15 के बजाय 14 दिखाई देता है।
Testing के दौरान इस समस्या को पहचानकर Report किया जा सकता है।
इससे Development Team समस्या को ठीक कर सकती है।
2.2 Requirements की जाँच करना#
मान लीजिए Banking Application की Requirement है:
User अपने Account Balance से अधिक Amount Transfer नहीं कर सकता।
अब Account में ₹2,000 हैं।
User ₹3,000 Transfer करने की कोशिश करता है।
Expected Behavior: Transaction Reject होना चाहिए।
यदि Application Transaction Allow कर देती है, तो Requirement पूरी नहीं हो रही।
2.3 Software Quality के बारे में जानकारी देना#
Testing के Results से Team समझ सकती है:
- कौन-से Features सही काम कर रहे हैं।
- कहाँ Defects मिले हैं।
- कौन-से Areas में Risk अधिक है।
- किन Features को दोबारा जाँचना चाहिए।
2.4 Business Risk कम करना#
सोचिए किसी Shopping Application में Payment दो बार Deduct हो जाए।
यह सिर्फ Technical Problem नहीं है।
इसके कारण:
- Customer का पैसा प्रभावित हो सकता है।
- Refund Requests बढ़ सकती हैं।
- Customer का भरोसा कम हो सकता है।
- Company को Financial और Reputational नुकसान हो सकता है।
Testing ऐसे Risks को पहचानने और कम करने में मदद करती है।
2.5 Release Decision में मदद करना#
Software Release करना है या नहीं, यह निर्णय केवल Tester नहीं लेता।
लेकिन Testing Team महत्वपूर्ण जानकारी देती है:
- कितने Tests Pass हुए?
- कितने Fail हुए?
- कौन-से महत्वपूर्ण Bugs अभी बाकी हैं?
- क्या मुख्य Business Features काम कर रहे हैं?
इन जानकारियों के आधार पर संबंधित Stakeholders Release का निर्णय ले सकते हैं।
4. Software Testing क्यों जरूरी है?#
एक सामान्य गलत धारणा है:
"Developer ने Software बनाया है, इसलिए वह सही ही होगा।"
लेकिन Software Development में गलतियाँ हो सकती हैं।
3.1 Human Mistakes#
Developer भी इंसान होता है।
वह Requirement गलत समझ सकता है या Code में Logic Mistake कर सकता है।
उदाहरण:
Requirement है कि Discount केवल ₹5,000 से अधिक खरीदारी पर मिलेगा।
लेकिन Developer ने ऐसी Condition लिख दी जो ₹5,000 पर भी Discount देती है।
Testing इस अंतर को पहचान सकती है।
3.2 Complex Software Behavior#
एक Application में कई Features एक-दूसरे से जुड़े होते हैं।
Shopping Application का Order Flow देखिए:
Rendering diagram…
Diagram could not be rendered.
किसी एक Step में समस्या आने से आगे के Steps प्रभावित हो सकते हैं।
उदाहरण के लिए Payment सफल होने के बावजूद Order Confirmation Fail हो सकता है।
3.3 Different User Conditions#
एक Feature एक User के लिए सही काम कर सकता है, लेकिन दूसरे User के लिए नहीं।
उदाहरण:
- सही Email बनाम गलत Email
- Valid Password बनाम Empty Password
- Available Product बनाम Out-of-Stock Product
- Desktop Screen बनाम Mobile Screen
- Normal Internet बनाम Slow Internet
इन परिस्थितियों की जाँच Quality के बारे में अधिक जानकारी देती है।
3.4 Changes के कारण नए Bugs#
मान लीजिए Website का Login Feature पहले सही काम करता था।
बाद में Developer ने Password Validation में बदलाव किया।
अब पुराने Users Login नहीं कर पा रहे।
यानी एक बदलाव से पहले सही काम कर रहा Feature प्रभावित हो गया।
इसलिए Software बदलने के बाद संबंधित Features दोबारा Test करना महत्वपूर्ण है।
3.5 Early Testing का लाभ#
Testing जितनी जल्दी शुरू की जाती है, समस्याएँ पहचानने के अवसर उतने जल्दी मिल सकते हैं।
उदाहरण:
Requirement लिखते समय ही पता चल जाए कि Maximum Transfer Limit स्पष्ट नहीं है, तो Coding शुरू होने से पहले ही Clarification लिया जा सकता है।
इससे बाद के Rework को कम करने में मदद मिलती है।
Testing का लक्ष्य यह साबित करना नहीं है कि Software में कभी कोई Bug नहीं आएगा। इसका लक्ष्य Defects और Risks के बारे में उपयोगी जानकारी देना है।
5. Software Quality and the Role of Testing#
English Definition#
Software Quality is the degree to which a software product satisfies stated and implied needs under specified conditions.
आसान भाषा में:
Software Quality का मतलब है कि Software अपने उद्देश्य को कितनी अच्छी तरह पूरा करता है।
कोई Website केवल इसलिए High Quality नहीं हो जाती क्योंकि उसका Design सुंदर है।
उसे सही, उपयोगी, सुरक्षित और भरोसेमंद भी होना चाहिए।
Software Quality के महत्वपूर्ण पहलू#
| Quality Aspect | आसान अर्थ | उदाहरण |
|---|---|---|
| Functional Suitability | जरूरी Features सही काम करें | सही Login करने पर Account खुले |
| Performance Efficiency | Speed और Resources उचित हों | Search Results समय पर दिखाई दें |
| Reliability | Software अपेक्षित परिस्थितियों में भरोसेमंद रहे | सामान्य उपयोग में बार-बार Crash न हो |
| Security | Data और Access सुरक्षित हों | एक User दूसरे का निजी Data न देख सके |
| Usability | Application इस्तेमाल करना आसान हो | जरूरी Buttons समझ में आएँ |
| Compatibility | अपेक्षित Environments में काम करे | Supported Browsers में Website चले |
| Maintainability | Software को बदलना और सुधारना संभव हो | Change के बाद समस्या पहचानना आसान हो |
ये Quality के महत्वपूर्ण पहलू हैं। वास्तविक Project में Product के अनुसार उनकी Priority अलग हो सकती है।
Testing Software Quality में कैसे मदद करती है?#
Testing Team अलग-अलग Quality Aspects पर जाँच कर सकती है।
उदाहरण के लिए Login Page:
| जाँच | Quality Aspect |
|---|---|
| Correct Password से Login होना | Functional Suitability |
| Login Response उचित समय में आना | Performance Efficiency |
| Unauthorized Access रोकना | Security |
| Error Message स्पष्ट दिखाई देना | Usability |
Testing इन बातों के बारे में Evidence प्रदान करती है।
लेकिन केवल Testing से Quality पैदा नहीं होती।
अच्छी Requirements, Design, Coding, Reviews और Development Practices भी जरूरी हैं।
6. Software Testing vs Debugging#
Beginners अक्सर Testing और Debugging को एक ही समझ लेते हैं।
लेकिन दोनों में महत्वपूर्ण अंतर है।
Software Testing — English Definition#
Software Testing evaluates software behavior to identify failures, defects, and deviations from expected requirements.
Testing में हम पता लगाते हैं कि समस्या मौजूद है या नहीं।
Debugging — English Definition#
Debugging is the process of finding, analyzing, and correcting the underlying cause of a software defect.
Debugging में समस्या का कारण खोजकर उसे ठीक किया जाता है।
आसान उदाहरण#
मान लीजिए Login Page पर सही Password डालने के बाद भी User Login नहीं कर पा रहा।
Testing के दौरान:
Tester देखता है कि Expected Result नहीं मिला।
वह Problem की जानकारी Record करता है।
Debugging के दौरान:
Developer संबंधित Code, Logs और Conditions देखकर कारण खोजता है।
फिर Code में जरूरी सुधार करता है।
लेकिन काम यहीं समाप्त नहीं होता।
Fix के बाद Tester संबंधित Test दोबारा चला सकता है।
Testing और Debugging का संबंध#
Rendering diagram…
Diagram could not be rendered.
मुख्य अंतर#
| Software Testing | Debugging |
|---|---|
| Software Behavior की जाँच | समस्या का कारण खोजकर सुधार |
| Defects/Failures पहचानने पर Focus | Root Cause और Fix पर Focus |
| Tester और Developer दोनों कर सकते हैं | आमतौर पर Developer करता है |
| Expected और Actual Result की तुलना | Code, Logic, Data और Execution की जाँच |
| Problem के बारे में Evidence मिलता है | Problem को Correct करने का प्रयास होता है |
यह मानना कि Tester का मुख्य काम Code ठीक करना है। बहुत-सी Teams में Tester समस्या Report करता है और Developer Fix करता है। हालांकि वास्तविक Responsibilities Team और Role के अनुसार बदल सकती हैं।
7. Quality Assurance (QA) vs Quality Control (QC) vs Testing#
ये तीनों Terms अक्सर एक साथ सुनाई देती हैं।
इन्हें समझने के लिए एक सरल उदाहरण देखते हैं।
मान लीजिए एक Company Online Ticket Booking Application बना रही है।
Company चाहती है कि Application की Quality अच्छी हो।
इसके लिए तीन अलग-अलग दृष्टिकोण समझिए।
6.1 Quality Assurance (QA)#
English Definition:
Quality Assurance consists of planned and systematic activities intended to provide confidence that quality requirements will be fulfilled.
आसान भाषा में:
QA का Focus उन Processes और Practices पर होता है जो अच्छी Quality प्राप्त करने में मदद करती हैं।
उदाहरण:
- Requirements स्पष्ट तरीके से लिखना।
- Development Standards तय करना।
- Code Review की प्रक्रिया रखना।
- Test Planning की प्रक्रिया बनाना।
- Defect Management का तरीका निर्धारित करना।
QA यह सुनिश्चित करने में मदद करता है कि काम करने की प्रक्रिया व्यवस्थित और Quality-Oriented हो।
6.2 Quality Control (QC)#
English Definition:
Quality Control focuses on evaluating whether a product or work result fulfills specified quality requirements.
QC का Focus तैयार Product या Work Result की Quality जाँचने पर होता है।
उदाहरण:
Ticket Booking Application का Payment Feature आवश्यक नियमों के अनुसार काम कर रहा है या नहीं।
QC में Testing के अलावा Reviews और Inspections जैसी Activities भी शामिल हो सकती हैं।
6.3 Software Testing#
Software Testing वह Activity है जिसमें Software या उससे जुड़े Artifacts को जाँचकर Expected Behavior, Defects और Risks के बारे में जानकारी प्राप्त की जाती है।
Testing सामान्यतः QC की एक महत्वपूर्ण Activity है।
QA, QC और Testing का संबंध#
Rendering diagram…
Diagram could not be rendered.
इस Diagram को समझते समय ध्यान रखें:
- QA मुख्य रूप से Quality के लिए अपनाई गई Processes पर ध्यान देता है।
- QC Product या Work Result की Quality की जाँच पर ध्यान देता है।
- Software Testing QC की महत्वपूर्ण Activities में से एक है।
व्यावहारिक Projects में इन Activities के बीच सहयोग होता है।
आसान तुलना#
| Aspect | QA | QC | Testing |
|---|---|---|---|
| Focus | Process और Confidence | Product Quality की जाँच | Software Behavior और Defects |
| प्रमुख उद्देश्य | Quality-Oriented Process | Requirements की पूर्ति जाँचना | Expected बनाम Actual Behavior जाँचना |
| उदाहरण | Review Process स्थापित करना | Product Inspection | Login Test करना |
| Nature | मुख्यतः Process-Oriented | मुख्यतः Product-Oriented | Evaluation-Oriented |
QA का मतलब सिर्फ Testing नहीं है। वास्तविक Companies में "QA Engineer" नाम का Role Testing भी कर सकता है, लेकिन QA और Testing की अवधारणाएँ समान नहीं हैं।
8. Verification vs Validation#
अब Software Quality के दो महत्वपूर्ण Concepts समझते हैं।
7.1 Verification#
English Definition:
Verification is the process of confirming, through objective evidence, that specified requirements have been fulfilled.
Software Development में Verification का एक महत्वपूर्ण सवाल होता है:
"Are we building the product right?"
आसान भाषा में:
क्या हम Software को तय Requirements और Specifications के अनुसार बना रहे हैं?
उदाहरण:
Requirement Document में लिखा है कि Password की Minimum Length 8 Characters होनी चाहिए।
अब हम Requirement, Design या Implementation की जाँच करते हैं कि यह Rule सही तरह से लागू किया गया है या नहीं।
यह Verification का उदाहरण है।
7.2 Validation#
English Definition:
Validation is the process of confirming, through objective evidence, that requirements for a specific intended use or application have been fulfilled.
Validation का महत्वपूर्ण सवाल है:
"Are we building the right product?"
आसान भाषा में:
क्या Software वास्तव में User की जरूरत पूरी करता है?
एक उदाहरण से समझिए#
मान लीजिए Company ने Food Delivery Application बनाई।
Requirement में लिखा गया:
"Customer को Order करने के लिए कम-से-कम 10 Steps पूरे करने होंगे।"
Developers ने ठीक 10 Steps वाला Flow बना दिया।
अब दो सवाल पूछते हैं।
Verification:
क्या Application Specified 10-Step Requirement के अनुसार बनी है?
उत्तर: हाँ, संभव है।
Validation:
क्या Customers के लिए इतना लंबा Order Flow वास्तव में सुविधाजनक है?
हो सकता है नहीं।
यानी Product Specification पूरी कर सकता है, लेकिन वास्तविक User Need पूरी नहीं कर सकता।
Verification vs Validation#
| Verification | Validation |
|---|---|
| क्या Product Specifications पूरी करता है? | क्या Product Intended User Need पूरी करता है? |
| "Building the product right" | "Building the right product" |
| Reviews, Analysis और Testing से किया जा सकता है | Testing, User Evaluation और अन्य Evidence से किया जा सकता है |
| Specified Requirements पर ध्यान | Intended Use पर ध्यान |
यह कहना कि Verification में हमेशा Software Run नहीं होता और Validation में हमेशा Run होता है। यह कोई Universal Rule नहीं है। Verification और Validation दोनों में Context के अनुसार अलग-अलग Evaluation Activities हो सकती हैं।
9. Error, Defect (Bug) and Failure#
ये तीन Terms Software Testing की Foundation हैं।
इन्हें स्पष्ट रूप से समझना महत्वपूर्ण है।
8.1 Error#
English Definition:
An Error is a human action that produces an incorrect result.
आसान भाषा में:
जब कोई व्यक्ति Requirement समझने, Design बनाने या Code लिखने में गलती करता है, तो उसे Error कहा जा सकता है।
उदाहरण:
Developer ने Discount Rule गलत समझ लिया।
Requirement थी:
"₹5,000 से अधिक खरीदारी पर Discount देना है।"
लेकिन Developer ने समझा:
"₹5,000 या उससे अधिक खरीदारी पर Discount देना है।"
यह Human Error है।
8.2 Defect (Bug)#
English Definition:
A Defect is an imperfection or deficiency in a work product where it does not meet its requirements or specifications and needs correction or replacement.
आसान भाषा में:
जब Software के Code, Design या दूसरे Work Product में ऐसी कमी आ जाती है जिसके कारण वह अपेक्षित तरीके से काम नहीं करता, उसे Defect कहते हैं।
Bug शब्द Software Defect के लिए सामान्यतः इस्तेमाल किया जाता है।
उदाहरण:
Developer ने ऐसी Discount Condition लिख दी जो ₹5,000 पर भी Discount देती है।
यह Implementation Defect है।
8.3 Failure#
English Definition:
A Failure is an event in which a system or component does not perform a required function within specified limits.
आसान भाषा में:
जब Software चलने के दौरान अपेक्षित व्यवहार नहीं करता, तो उसे Failure कहा जाता है।
उदाहरण:
Customer ₹5,000 की Shopping करता है।
Application गलत तरीके से 10% Discount दिखाती है, जबकि Discount केवल ₹5,000 से अधिक Amount पर मिलना चाहिए।
यह दिखाई देने वाला Incorrect Behavior एक Failure है।
Error → Defect → Failure#
Rendering diagram…
Diagram could not be rendered.
महत्वपूर्ण बात:
हर Human Error जरूरी नहीं कि Defect पैदा करे।
और हर Defect प्रत्येक Execution में दिखाई देने वाला Failure पैदा करे, यह भी जरूरी नहीं।
कई Defects केवल कुछ विशेष Conditions में सामने आते हैं।
तीनों में अंतर#
| Term | क्या है? | उदाहरण |
|---|---|---|
| Error | इंसान की गलती | Discount Rule गलत समझना |
| Defect/Bug | Work Product में कमी | गलत Discount Condition |
| Failure | Execution के दौरान गलत व्यवहार | गलत Discount Applied होना |
एक और Real-World Example#
Banking App में User का Balance ₹2,000 है।
- Error: Developer ने Balance Validation का Rule गलत समझा।
- Defect: Code में Insufficient Balance Check सही तरह Implement नहीं हुआ।
- Failure: User ₹3,000 Transfer कर पाता है, जबकि उसे Reject होना चाहिए था।
Error, Defect और Failure आपस में जुड़े हो सकते हैं, लेकिन तीनों एक ही चीज नहीं हैं।
10. Role and Responsibilities of a Software Tester#
अब सोचिए कि किसी Company में आपको Software Tester की Job मिलती है।
आपका वास्तविक काम क्या होगा?
English Definition#
A Software Tester is a professional who evaluates software and related work products, identifies defects, assesses results, and communicates information about software quality and risks.
एक अच्छा Tester सिर्फ यह नहीं देखता कि Software चलता है या नहीं।
वह व्यवस्थित तरीके से सोचता है:
"किस परिस्थिति में यह Feature गलत काम कर सकता है?"
9.1 Requirements समझना#
Tester को पहले समझना होता है कि Software से क्या अपेक्षा है।
मान लीजिए Registration Form की Requirements हैं:
- Name Required है।
- Email Valid होना चाहिए।
- Password कम-से-कम 8 Characters का होना चाहिए।
Tester को इन Rules के अनुसार जाँच की योजना बनानी होगी।
9.2 Test Conditions पहचानना#
Tester अलग-अलग परिस्थितियाँ सोचता है।
Registration Form के लिए:
- सभी Fields सही हों।
- Name Empty हो।
- Email गलत Format में हो।
- Password छोटा हो।
- Required Fields Empty हों।
यहाँ Tester सामान्य और गलत दोनों प्रकार की Inputs के बारे में सोच रहा है।
9.3 Tests Execute करना#
Tester तय करता है कि किसी परिस्थिति में क्या Action करना है।
फिर Software का Actual Behavior देखता है।
उदाहरण:
Email Field में rahul-email.com डालकर Form Submit करना।
यदि Requirement के अनुसार Email Format गलत है, तो Application को इसे Reject करना चाहिए।
9.4 Actual और Expected Results की तुलना#
Tester को दोनों Results स्पष्ट होने चाहिए।
| Item | Example |
|---|---|
| Input | Invalid Email |
| Action | Submit Registration |
| Expected Result | Validation Error |
| Actual Result | Account Created |
| Observation | Unexpected Behavior |
9.5 Defects Report करना#
समस्या मिलने पर Tester को ऐसी जानकारी देनी चाहिए जिससे Team उसे समझ सके।
एक सामान्य Defect Report में ये बातें हो सकती हैं:
- Defect Title
- Affected Feature
- Steps to Reproduce
- Expected Result
- Actual Result
- Relevant Environment Details
- Supporting Evidence
9.6 Fix के बाद Retest करना#
Developer समस्या ठीक करता है।
फिर Tester उसी Problem को दोबारा जाँच सकता है।
इसे अक्सर Retesting या Confirmation Testing कहा जाता है।
इसके बाद संबंधित दूसरे Features भी प्रभावित हुए हैं या नहीं, इसकी जाँच की जरूरत पड़ सकती है।
9.7 Team के साथ Communication#
Software Tester अक्सर इन लोगों के साथ काम करता है:
- Developers
- Business Analysts
- Product Managers
- Designers
- Other Testers
- Project Stakeholders
Tester की जिम्मेदारी केवल Problem पहचानना नहीं है।
उसे स्पष्ट और उपयोगी तरीके से Problem Communicate भी करनी होती है।
11. Basic Real-World Software Testing Example#
अब हम एक छोटा Practical Example देखते हैं।
मान लीजिए हमें Login Page Test करना है।
Application Requirements#
हमारी Example Application के लिए Requirements तय हैं:
- Registered User सही Email और Password से Login कर सकता है।
- गलत Password देने पर Login Reject होगा।
- Empty Email या Password पर Validation Message दिखाई देगा।
- सफल Login के बाद User Dashboard खुलेगा।
ये इस Example की Requirements हैं; सभी Applications के लिए Universal Rules नहीं हैं।
Step 1 — Happy Path Test#
सबसे पहले सामान्य, अपेक्षित Situation जाँचते हैं।
| Field | Value |
|---|---|
| rahul@example.com | |
| Password | Correct registered password |
| Action | Click Login |
| Expected | Dashboard Opens |
यदि Dashboard खुलता है, तो इस Test का Expected Behavior प्राप्त हुआ।
Step 2 — Invalid Password Test#
अब User गलत Password देता है।
| Field | Value |
|---|---|
| rahul@example.com | |
| Password | Wrong password |
| Action | Click Login |
| Expected | Login Rejected with an appropriate error |
यहाँ Tester जाँचेगा कि Application गलत Credentials स्वीकार तो नहीं कर रही।
Step 3 — Empty Fields Test#
अब Email और Password दोनों Empty छोड़ दें।
Expected Result:
Application को Login रोकना चाहिए और User को उपयुक्त Validation Feedback देना चाहिए।
Login Test Flow#
Rendering diagram…
Diagram could not be rendered.
यह Diagram हमारी Example Requirements का Expected Behavior दिखाता है।
Actual Application का Behavior इससे अलग मिलने पर Tester जाँच और Reporting करेगा।
Step 4 — Sample Test Cases#
| Test ID | Scenario | Expected Result |
|---|---|---|
| TC-01 | Valid Email and Password | Login Successful |
| TC-02 | Valid Email, Wrong Password | Login Rejected |
| TC-03 | Empty Email | Validation Message |
| TC-04 | Empty Password | Validation Message |
| TC-05 | Both Fields Empty | Validation Message |
ये छोटे Test Cases शुरुआत के लिए पर्याप्त हैं।
इनमें हर Test का एक स्पष्ट उद्देश्य है।
Step 5 — Sample Defect Report#
मान लीजिए Test के दौरान गलत Password देने पर भी Dashboard खुल जाता है।
Tester ऐसी Report लिख सकता है:
| Field | Details |
|---|---|
| Defect ID | BUG-001 |
| Title | Login accepts incorrect password |
| Feature | User Login |
| Preconditions | Registered test account exists |
| Steps | Enter valid email and wrong password, then click Login |
| Expected Result | Login should be rejected |
| Actual Result | Dashboard opens |
| Status | Open |
इस Report से Developer समझ सकता है:
- Problem क्या है।
- Problem कहाँ है।
- इसे कैसे Reproduce करना है।
- सही Behavior क्या होना चाहिए।
- वास्तव में क्या हुआ।
अच्छी Defect Report में केवल "Login नहीं चल रहा" लिखना पर्याप्त नहीं है। ऐसी जानकारी दीजिए जिससे दूसरा व्यक्ति समस्या दोहरा सके।
12. Tester की सोच विकसित करें#
एक Professional Tester को Software पर अंधविश्वास नहीं करना चाहिए।
उसे Evidence के आधार पर काम करना चाहिए।
मान लीजिए कोई Developer कहता है:
"Login Feature बिल्कुल सही है।"
Tester को केवल इस कथन के आधार पर Feature Pass नहीं मानना चाहिए।
उसे Requirement समझकर उचित Tests करने चाहिए।
सामान्य User और Tester में अंतर#
| सामान्य User | Software Tester |
|---|---|
| Feature इस्तेमाल करना चाहता है | Feature को व्यवस्थित तरीके से जाँचना चाहता है |
| सामान्य Input देता है | Valid और Invalid Inputs पर विचार करता है |
| समस्या आने पर परेशान होता है | समस्या का Behavior और Evidence Record करता है |
| अपना काम पूरा करना चाहता है | Product के Risks समझना चाहता है |
एक अच्छा Tester अक्सर इन सवालों पर ध्यान देता है:
- अगर User गलत Data डाले तो?
- अगर कोई जरूरी Field Empty हो तो?
- अगर Feature अपेक्षित Result न दे तो?
- अगर User सामान्य Flow से अलग Action करे तो?
- अगर Software Change के बाद पुराना Feature प्रभावित हो जाए तो?
यही सोच आगे चलकर बेहतर Test Design में मदद करती है।
13. Common Beginner Mistakes#
Mistake 1 — Testing का मतलब केवल Bugs ढूँढना#
Testing Defects पहचानने के साथ-साथ Quality और Risk के बारे में जानकारी भी देती है।
Mistake 2 — Test Pass का मतलब Bug-Free Software#
एक Test Pass होना पूरे Software के Bug-Free होने की Guarantee नहीं है।
Mistake 3 — QA और Testing को समान समझना#
QA का Scope Testing से व्यापक है। QA में Quality-Oriented Processes भी शामिल होती हैं।
Mistake 4 — Testing और Debugging को समान समझना#
Testing समस्या पहचानने और उसका मूल्यांकन करने पर Focus करती है। Debugging उसके कारण को खोजकर सुधारने पर Focus करती है।
Mistake 5 — Error, Defect और Failure में अंतर न समझना#
Human Error, Work Product में Defect पैदा कर सकती है और Defect विशेष Execution में Failure पैदा कर सकता है।
Mistake 6 — Expected Result स्पष्ट न रखना#
जब Expected Result ही स्पष्ट नहीं है, तो Actual Result का सही मूल्यांकन करना कठिन हो सकता है।
14. Quick Knowledge Check#
अब अपने मन में इन सवालों के जवाब दीजिए।
Question 1: एक Website में गलत Password देने के बाद भी Login हो जाता है। यहाँ Tester सबसे पहले क्या Observe करेगा?
Answer: Actual Behavior, जो Expected Behavior से अलग है।
Question 2: Developer Bug का Root Cause खोजकर Code सुधारता है। यह Testing है या Debugging?
Answer: Debugging।
Question 3: Company Code Review की व्यवस्थित प्रक्रिया बनाती है। यह QA या QC में किसके अधिक करीब है?
Answer: QA।
Question 4: Product Specification पूरी करता है, लेकिन Users की वास्तविक जरूरत पूरी नहीं करता। किस Concept से संबंधित प्रश्न उठता है?
Answer: Validation।
Question 5: Tester ने पाँच Tests Pass किए। क्या इससे पूरे Application के Bug-Free होने की Guarantee मिलती है?
Answer: नहीं। केवल उन Test Conditions के Results के बारे में Evidence मिलता है।
15. Chapter Summary#
इस Chapter में आपने Software Testing की Foundation समझी।
मुख्य बातें याद रखिए:
- Software Testing Software के Behavior, Requirements, Defects और Risks का मूल्यांकन करने की प्रक्रिया है।
- Testing का Purpose Quality के बारे में उपयोगी जानकारी देना और Defects तथा Risks पहचानना है।
- Software Testing Development की गलतियों और Unexpected Behavior को पहचानने में मदद करती है।
- Software Quality केवल Features सही चलने तक सीमित नहीं है। Performance, Reliability, Security और Usability जैसे पहलू भी महत्वपूर्ण हैं।
- Testing और Debugging अलग Activities हैं।
- QA Process-Oriented Quality Activities पर ध्यान देता है, जबकि QC Work Results की Quality जाँचता है।
- Verification Specifications की पूर्ति पर और Validation Intended Use की पूर्ति पर ध्यान देता है।
- Error इंसान की गलती, Defect Work Product में कमी और Failure Execution के दौरान गलत व्यवहार हो सकता है।
- Software Tester Requirements समझता है, Tests करता है, Results का मूल्यांकन करता है और Defects Report करता है।
- एक अच्छा Tester केवल Software इस्तेमाल नहीं करता; वह व्यवस्थित रूप से उसके Expected और Actual Behavior की तुलना करता है।
Software Testing का सबसे महत्वपूर्ण सिद्धांत है: Requirement समझिए, Expected Behavior तय कीजिए, Actual Behavior जाँचिए और Evidence के आधार पर Result बताइए।