Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ===== Overview ===== Condensation of software testing tutorial [[https://www.guru99.com/software-testing.html|here]]. ===== STUFF ===== ==== General points ==== * Use library routines as much as possible. * Develop wrappers that incorporate your features. * Use REGEX parsers to validate input, this forces you to clarify valid input. * Library packages frequently come with userspace demo programs. * Emphasize libraries to identify dependencies. * Static analyzers * cppcheck * clang (scan-build) * gcc/C11 debugging features * -Wall * extensions and attributes * assertions * Add checking to version control hooks (cppcheck with Git) ==== Tools to automate testing ==== * Selenium * QTP * Jmeter * Loadrunner * TestLink * Quality Center (ALM) ===== Testing Fundamentals ===== ==== What is software testing? ==== Verification of Application Under Test (AUT). Types: * functional * unit * integration * smoke * user acceptance (UAT) * interoperability * non-functional * performance * endurance * load * volume * scalability * usability * maintenance * regression * maintenance ==== Software testing as a career path ==== Non-technical skills: * analytical * communication * time management/organizational Technical skills: * database/SQL * test management tools * defect tracking tools * automation tools ==== 7 software testing principles ==== * Exhaustive testing is generally not possible. * Defect clustering (most defects clustered in small number of modules) * Pesticide paradox (same tests gradually become ineffective) * Presence of defects * Absence of error * Early testing * Testing is context dependent ==== V model ==== * SDLC: Software development life cycle * STLC: Software test life cycle * V Model: combination of the above ==== STLC - Software testing life cycle ==== Each phase has entry criteria and exit criteria: * Requirements analysis * functional vs non-functional * Test planning * Test case development * Environment setup * Test execution * Test cycle closure ===== Types of testing ===== ==== Manual testing ==== * acceptance * integration * system * unit * white vs black box ==== Automation testing ==== Why? * Manual Testing of all workflows, all fields, all negative scenarios is time and money consuming * It is difficult to test for multilingual sites manually * Automation does not require Human intervention. You can run automated test unattended (overnight) * Automation increases the speed of test execution * Automation helps increase Test Coverage * Manual Testing can become boring and hence error-prone. Stuff that can be automated: * Smoke Testing * Unit Testing * Integration Testing * Functional Testing * Keyword Testing * Regression Testing * Data Driven Testing * Black Box Testing ==== Automation vs manual ==== ==== Unit testing ==== * isolate a section of code and verify its correctness Coverage testing categories: * statement * decision * branch * condition * finite state machine ==== Integration testing ==== ==== System testing ==== * testing of a complete and fully integrated software product * black box (system) * white box Different types of system testing: * Usability Testing - Usability Testing mainly focuses on the user's ease to use the application, flexibility in handling controls and ability of the system to meet its objectives * Load Testing - Load Testing is necessary to know that a software solution will perform under real-life loads. * Regression Testing- - Regression Testing involves testing done to make sure none of the changes made over the course of the development process have caused new bugs. It also makes sure no old bugs appear from the addition of new software modules over time. * Recovery Testing - Recovery testing is done to demonstrate a software solution is reliable, trustworthy and can successfully recoup from possible crashes. * Migration Testing - Migration testing is done to ensure that the software can be moved from older system infrastructures to current system infrastructures without any issues. * Functional Testing - Also known as functional completeness testing, Functional Testing involves trying to think of any possible missing functions. Testers might make a list of additional functionalities that a product could have to improve it during functional testing. * Hardware/Software Testing - IBM refers to Hardware/Software testing as "HW/SW Testing". This is when the tester focuses his/her attention on the interactions between the hardware and software during system testing. ==== Sanity vs smoke testing ==== ==== Regression testing ==== When? * Change in requirements and code is modified according to the requirement * New feature is added to the software * Defect fixing * Performance issue fix ==== Non-functional testing ==== * performance * endurance * load * volume * scalability * usability ===== STUFF ===== ==== Test documentation ==== ==== Test scenario vs Test case ==== ==== Test analysis (test basis) ==== ==== Requirements traceability matrix (RTM) ==== ==== Test data generation ==== Generated: * Manually * Mass copy of data from production to testing environment * Mass copy of test data from legacy client systems * Automated Test Data Generation Tools software_testing.txt Last modified: 2019/08/04 09:18by rpjday