Basics of Software Testing
Basics of Software Testing
Software testing is the process of evaluating and verifying that a software application meets the
specified requirements and works as expected. It involves identifying bugs, ensuring the quality of the
software, and validating that the software performs as intended.
Key Objectives of Software Testing:
1. Defect Identification: Find bugs or defects in the software.
2. Quality Assurance: Ensure the software meets the required standards and specifications.
3. Validation and Verification: Confirm that the product is built correctly (verification) and is the
right product for the user (validation).
4. Performance and Security: Ensure the software is secure and performs well under various
conditions.
Types of Software Testing:
1. Manual Testing:
o Involves human interaction to test the software.
2. Automated Testing:
o Uses tools like Selenium, JUnit, or TestNG to execute test cases.
15. Can you describe a challenging situation you faced while testing and how you resolved it?
Answer: Example: “During a project, I encountered a critical bug in the production environment.
I collaborated with the development team to reproduce the issue, documented the steps clearly,
and performed rigorous regression testing after the fix to ensure no further defects were
introduced.”
Preparation Tips:
1. Understand Testing Fundamentals: Be clear about the basics of testing methodologies and
tools.
2. Familiarize with Tools: Practice using tools like Selenium, JIRA, or Postman.
3. Prepare Real-World Examples: Be ready to explain challenges and solutions from previous
experiences.
4. Soft Skills: Showcase problem-solving, communication, and analytical thinking.
Good luck with your interview!
Here’s an expanded explanation of software testing types with examples tailored to a Junior Demand
Tester role:
Functional Testing
Definition: Verifies that software features and functionalities work according to the
requirements.
Example for a Junior Demand Tester: Check that the "Add to Cart" button on an e-commerce
site correctly adds the selected item to the shopping cart.
Tools: Manual testing or tools like Selenium.
Non-Functional Testing
Definition: Tests the software’s non-functional aspects like performance, scalability, and
usability.
Example for a Junior Demand Tester: Measure the page load time of a product catalog when
accessed by multiple users.
Tools: JMeter for performance testing.
Regression Testing
Definition: Ensures new updates or bug fixes don’t break existing functionality.
Example for a Junior Demand Tester: After developers fix a login bug, test the login page and
surrounding features like password reset or account creation to confirm they still work.
Tools: Automated test scripts in Selenium.
Exploratory Testing
Definition: Unscripted testing to explore the software and identify potential issues.
Example for a Junior Demand Tester: Navigate through a new e-commerce feature without
pre-written test cases to find unexpected behaviors, such as incorrect discount calculations.
Tools: Performed manually.
Acceptance Testing
Definition: Determines if the system meets the business requirements and is ready for release.
Example for a Junior Demand Tester: Validate that the checkout process flows smoothly and
matches the customer's expectations for usability.
Tools: TestRail for test case management.
Smoke Testing
Definition: A quick test to check if the basic functionalities of an application work.
Example for a Junior Demand Tester: Confirm that the homepage loads correctly, the login
form is functional, and key links work.
Tools: Can be manual or automated.
Sanity Testing
Definition: A focused test on new functionalities or fixes to verify they work as expected.
Example for a Junior Demand Tester: After adding a new payment method (e.g., PayPal), test
the checkout process using PayPal to ensure proper integration.
Tools: Performed manually or with tools like Postman for API testing.
Integration Testing
Definition: Tests how different modules or systems interact.
Example for a Junior Demand Tester: Ensure that an online booking system correctly
integrates with a third-party payment gateway like Stripe.
Tools: Tools like Postman (for APIs) or manual testing.
System Testing
Definition: Testing the complete system as a whole to ensure it meets requirements.
Example for a Junior Demand Tester: Test an entire e-commerce platform by simulating a
customer journey: browsing products, adding them to the cart, checking out, and receiving an
email confirmation.
Tools: Can use automation tools for repetitive tasks.
Unit Testing
Definition: Focuses on individual components or units of code.
Example for a Junior Demand Tester: Test that the "Calculate Total" function correctly sums
up the prices of items in a cart.
Tools: Not commonly done by testers; primarily a developer's task using JUnit or NUnit.
Usability Testing
Definition: Ensures the application is user-friendly and intuitive.
Example for a Junior Demand Tester: Observe users attempting to navigate through the
account creation process to identify areas of confusion or difficulty.
Tools: Session recording tools like Hotjar.
Load Testing
Definition: Determines how the system behaves under expected load conditions.
Example for a Junior Demand Tester: Simulate 1,000 concurrent users browsing a website to
ensure it doesn’t crash.
Tools: JMeter, LoadRunner.
Stress Testing
Definition: Evaluates the system's behavior under extreme conditions.
Example for a Junior Demand Tester: Simulate a sudden influx of 10,000 users to see if the
application crashes or slows down.
Tools: JMeter, LoadRunner.
Security Testing
Definition: Identifies vulnerabilities in the application.
Example for a Junior Demand Tester: Test if users can access restricted areas without proper
credentials.
Tools: OWASP ZAP.
Compatibility Testing
Definition: Ensures the software works on different browsers, devices, and operating systems.
Example for a Junior Demand Tester: Verify that an e-commerce website functions correctly
on Chrome, Firefox, and Safari.
Tools: BrowserStack, Sauce Labs.
End-to-End Testing
Definition: Tests the flow of an application from start to finish.
Example for a Junior Demand Tester: Test an e-commerce site from logging in, searching for
a product, adding it to the cart, checking out, and receiving a confirmation email.
Tools: Manual or automated tools like Selenium.
Localization Testing
Definition: Ensures the software is adapted for different regions, languages, or cultural
standards.
Example for a Junior Demand Tester: Verify that currency, date formats, and text translations
display correctly when the application is set to French or German.
Tools: Manual testing or specialized localization tools.
1. Základné definície
Softvérové testovanie: Proces overovania a hodnotenia softvéru, aby sa zabezpečilo, že
spĺňa požiadavky a je bez chýb.
Bug/Defekt: Chyba alebo nedostatok v softvéri, ktorý spôsobuje nesprávne alebo neočakávané
správanie.
SDLC (Softvérový životný cyklus): Fázy vývoja softvéru: plánovanie, návrh, vývoj, testovanie,
nasadenie a údržba.
STLC (Softvérový testovací životný cyklus): Fázy testovania: analýza požiadaviek,
plánovanie testovania, tvorba testovacích prípadov, nastavenie prostredia, vykonávanie testov a
uzavretie testovania.
2. Typy testovania
Manuálne testovanie: Testovanie vykonávané ručne bez použitia automatizačných nástrojov.
Automatizované testovanie: Testovanie pomocou nástrojov alebo skriptov (napr. Selenium).
Funkčné testovanie: Overuje, či softvér funguje podľa požiadaviek.
Nefunkčné testovanie: Kontroluje výkon, použiteľnosť a bezpečnosť softvéru.
Regresné testovanie: Zaisťuje, že nové zmeny nepoškodia existujúcu funkcionalitu.
Integračné testovanie: Testovanie interakcií medzi integrovanými modulmi.
Jednotkové testovanie: Testovanie jednotlivých častí kódu (väčšinou vykonáva vývojár).
Smoke testovanie: Rýchla kontrola, či aplikácia funguje.
Sanity testovanie: Zamerané retestovanie konkrétnej funkcionality.
Akceptačné testovanie: Overenie, či produkt spĺňa požiadavky používateľa.
4. Bežné nástroje
Sledovanie chýb: JIRA, Bugzilla, Trello.
Správa testov: TestRail, Zephyr.
Automatizácia: Selenium, TestNG, Postman (API), Appium (mobilné).
Výkon: JMeter, LoadRunner.
Kompatibilita: BrowserStack, Sauce Labs.
5. Testovacie artefakty
Testovací prípad: Krok za krokom opis, ako overiť konkrétnu funkcionalitu.
Testovací plán: Dokument popisujúci rozsah, ciele a zdroje testovania.
Testovací scenár: Vysoká úroveň predstavy, čo sa má testovať.
Testovací skript: Automatizovaný kód na vykonávanie testov.
Report o chybe: Dokumentácia detailov defektu vrátane krokov na jeho reprodukciu.
8. Kľúčové metriky
Hustota defektov: Počet chýb na veľkosť modulu.
Pokrytie testovania: Percento požiadaviek, ktoré boli otestované.
Pomer detekcie chýb: Pomer medzi chybami zistenými počas testovania a v produkcii.
9. Otázky na správanie
1. Ako riešite situáciu, keď unikne chyba do produkcie?
o Odpoveď: „Analyzujem, prečo chyba unikla, aktualizujem testovacie prípady a zlepším
pokrytie testovania.“
2. Ako pracujete pod časovým tlakom?
o Odpoveď: „Prioritizujem kritické testy, otvorene komunikujem s tímom a zameriavam sa
na testovanie na základe rizika.“
Použite tento tahák na rýchlu prípravu pred pohovorom a prispôsobte odpovede konkrétnym
požiadavkám danej pozície. Veľa šťastia! 🚀