Software Testing and Debugging.docx

Full Transcript

**Module 1: Introduction to Software Testing** **Software Testing** - - - a. b. c. d. e. f. **Why testing is required?** - - - **Who does the testing?** Software Testing is/can be done by all technical and non-technical people associated with the software. **Developer** -...

**Module 1: Introduction to Software Testing** **Software Testing** - - - a. b. c. d. e. f. **Why testing is required?** - - - **Who does the testing?** Software Testing is/can be done by all technical and non-technical people associated with the software. **Developer** - Does the unit testing of the software and ensure that the individual work currently. **Tester** - The face of the software testing. Verifies the functionality, and usability of the application as a functional tester, a tester checks the performance of the application as a performance tester, a tester automates the manual-functional test cases and creates test scripts as an automation tester. **Test Managers/Lead/Architects** - Define the test strategy and test plan **End Users -** A group of end users do the user acceptance testing (UAT) of the application to make sure the software can work in the real world. **When do we start software testing?** Testing phase gets started in the different phases. There is a software myth that testing is done only when some part of software is built but testing can be started even before a single line of code is written. It can be done in parallel with development phase example in case of VModel **When to stop testing?** - - - - - **How is Software Testing is Done?** Software testing can be done both manually as well as using automation tools. Manual effort includes verification of requirements and design; development of test strategy and plan;preparation of test case and then the execution of tests. Automation efforts includes preparation of test scripts for UI automation, back-end automation, performance test script preparation and use of other automation tools. **Why Testing is Required?** - - - - - - - **What is Quality Software** **Software quality** is the conformance of a software system to its requirements. In software perspective, quality is defined by two factors - **Validation** and **Verification**. **Validation** - Checks if the process used during software development is correct or not. **Verification** - The product is evaluated to check if its meets the specifications. **Verification and Validation** Software testing is basically the sum total of the two activities - **Verification** and **Validation.** **Verification** is the process of evaluating the artifacts of software development in order to ensure that the product being developed will comply with the standards. It is the static process of analyzing the documents and not the actual end product. Whereas, **Validation** is the process of validating that the developed software product conforms to the specified business requirements. It involves dynamic testing of software products by running it. The difference between the two is: ![](media/image1.png) **Attributes of Software Quality** **Correctness** - Measures the software quality for the conformance of the software to its requirements **Reliability** - Checks if the software performs its functions without any failure within the expected conditions **Robustness** - The ability of the software to not crash when provided with unexpected input **Usability** - The ease of operating the software **Completeness** - The extent to which the software system meets its specifications **Maintainable** - The measure of the amount of effort required for software maintenance after it has shipped to end user. **Seven Testing Principles** A number of testing principles have been suggested over the past 40 years and offered general guidelines common for all testing. 1. 2. 3. 4. 5. 6. 7. **Other principles to note are;** - - - - - **Module 2: What is Software Testing Life Cycle** **What is the Software Testing Life Cycle?** - - **Phases of STLC** 1. 2. 3. 4. 5. 6. - **Different Levels of Testing** Software testing can be performed at different levels of software development process. Performing testing activities at multiples levels helps in early identification of bugs and better quality of software product. **Unit Testing** - - - - - **Integration Testing** - - - **System Testing** - - - - - - - - **Test Design Techniques** **What are the different test design techniques?** Are standards of test designing which allow creation of systematic and widely accepted test cases. The test design techniques can be broadly categorized into two parts; **Static Test Design technique** and **Dynamic Test design technique** **Static Test Design technique** Which involves testing without executing the code or the software application. Static testing deals with quality assurance, involving reviewing and auditing of code and other design documents. It can divided further into two parts; **Static testing performed manually** and **Static testing using tools** **Manual Static Design Techniques** **Walkthrough -** A step by step presentation of different requirement design documents by their authors with the intent of finding defects or any missing pieces in the documents. **Informal Reviews -** An informal reviews done by an individual without any process or documentation. **Technical Reviews -** It involves reviewing the technical approach used during the development process. **Audit -** A formal evaluation of the compliance of the different processes and artifacts with standards and regulations. It is generally perform by an external or independent team or person. **Inspection -** A formal and documented process of reviewing the different documents by experts or trained professional. **Management Review -** Perform on the different management documents like project management plans, test plans, risk management plans etc. **Static Design Techniques Using Tools** **Static analysis of code -** The static analysis techniques for the source code evaluation using tools are: - - - - **Dynamic Test Design Techniques** Involves testing by running the system under test, The tester provide input data ro the application and execute it, in order to verify its different functional and non-functional requirements. **Specification Based -** Are also referred to as **Black-box testing**. These involves testing based on the specification of the system under test without knowing its internal architecture. Different types of Black box testing technique are: - - - - - - **Structured Based -** Are also referred to a **Whitebox testing.** The knowledge of code or internal architectural of system is required to carry out the testing. Different types of White Box testing technique are - - - - - - **Experienced Based -** As the name suggest does not require any systematic and exhaustive testing. These are completely based on the experience or intuition of the tester. Two most common forms of experienced based testing are - - **Module 3: Automated Testing (Introduction to Selenium)** **What is Selenium?** Selenium is a free (open-source) automated testing framework used to validate web applications across different browsers and platforms. You can use multiple programming languages like Java, C\#, Python, etc to create a Selenium Test Scripts. Testing done using the Selenium testing tool is usually referred to as Selenium Testing. **Selenium Tool Suite** Is not a single tool but a suite of software, each piece catering to different Selenium QA testing needs of an organization. **Selenium Tools:** - - - - **Who developed Selenium?** It was created by **Jason Huggins** in **2004,** An Engineer at ThoughtWorks, he was working on a web application that required frequent testing. He created **JavaScript** program that would automatically control the browser\'s actions. He named this program the "**JavaScriptTestRunner**". He made JavaScriptRunner open-source, which was later renamed **Selenium Core**. **Birth of Selenium Remote Control** **Paul Hammant** played a significant role in the development of **Selenium Remote Control (RC)**, He create a server that will act as an HTTP proxy to "**trick**" the browser into believing that Selenium Core and the web application being tested com from the same domain. This system became known as the **Selenium Remote Control** or **Selenium 1** **Birth of Selenium Grid** Developed by **Partrick Lightbody** to address the need of minimizing test execution times as much as possible. He initially called the system "**Hosted QA**" It was capable of capturing browser screenshots during significant stages, and also of **sending out commands to different machines simultaneously.** **Birth of Selenium IDE** **Shinya Kasatani** of Japan created **Selenium IDE**, a firefox and chrome extension that can automate the browser through a record-and-playback feature He came up with this idea to further increase the speed in creating test cases, He donated Selenium IDE to Selenium Project in **2006**. **Birth of WebDriver** **Simon Stewart** created WebDriver circa 2006 when browser and we application were becoming more powerful and more restrictive with javaScript programs like Selenium Core. **It was the first cross-platform testing framework that could control the browser from the OS level.** **Birth of Selenium 2** In **2008**, the whole Selenium team decided to merge WebDriver and Selenium RC to form a more powerful tool called **Selenium 2,** with **WebDriver being the core**. Selenium RC is still being developed but only on maintenance mode, Most of Selenium Project efforts are now focused on Selenium 2 **Why name Selenium?** The name Selenium came from a joke that jason cracked once to his team. Another automated testing framework was popular made by the company called **Mercury Interactive.** ### **Selenium Integrated Development Environment (IDE)** Selenium IDE is a browser extension that provides a user-friendly interface for creating and executing automated test scripts. It is primarily used for recording user interactions with a web application and generating test scripts without requiring programming skills. - - - - **Selenium Remote Control (RC)** Selenium RC was the **flagship testing framework** of the whole Selenium project for a long time. This is the first automated **web testing** tool that **allows user to use a programming language they prefer.** - - - - - - **Selenium WebDriver** The WebDriver proves to be better that **Selenium IDE and RC.** It implements a more modern and stable approach in automating the browser's actions. **It controls the browser by directly communicating with it.** - - - - - - **Selenium Grid** Selenium Grid is a tool **used together with Selenium RC to run parallel test** across different machines and different browsers all at the same time. Parallel execution means running multiple tests at once. **Features:** - - -

Use Quizgecko on...
Browser
Browser