Thursday, 19 December 2013

MY WORDS FOR AUTOMATION (WHITE BOX) TESTING

AUTOMATION (WHITE BOX) TESTING

For AUTOMATION (WHITE BOX) TESTING there is no right tool, there is no tool that does everything And there is no perfect tool. Manual testing is performed as a human sitting in front of a Systems carefully executing the testing steps. Which is why having a team behind you that knows the tools market inside out is essential. Automation Testing means using an automation (white box) testing tool to execute your test case suite. The automation (white box) testing software can also enter test data into the System Under Test , compare  expected and actual  results and generate detailed test  reports. Manual and automation (white box) testing methods go hand-in hand for successful testing. What we have to automate, when we have to automate, or even whether one really what the exact need of automation are crucial decisions which the testing (or development) team must make. Selecting the correct features of the product for automation largely determines the success of the automation. Automation (white box) testing unstable features or features that are undergoing changes should be avoided. Before mentioning the tools lets identify the process which can be used to automate the testing. Tools serve as a driving agent for an automation process. However, an automation framework is not just a tool to perform a specific task, but rather an infrastructure that provides the solution where different tools can do their job in a unified manner. This provides a common platform for the automation engineer.
Test Automation demands considerable investments of money and resources. Right selection of automation tool, testing process and team, are important players for automation to be successful. Successful software development cycles will require execution of same test suite repeatedly. Using a test automation tool it’s possible to record this test suite  and re-play it  as required. Once the  test suite is automated,  no human intervention is required . This improved interest rate of Test Automation. Automation is done by using a supportive computer language like vb scripting and an automated software application. There are number of tools available which can be use to write automation scripts. Tools are specifically designed to target some particular test environment, such as Windows and web based applications.
Automation does not require Human efforts. You can run automated test unattended 
Test Tool selection largely depends on the technology the Application Under Test is built on. 
automation (white box) testing Scripts are executed during this phase. The scripts need input test data before there are set to run. Once executed they provide detailed test reports.  Testing tools can help automate tasks such as product installation, test data creation, GUI interaction, problem detection (consider parsing or polling agents equipped with oracles defect logging, etc.without necessarily automating tests in an end-to-end fashion.
Execution can be performed using the automation tool directly or using some Test Management tool which will involve the automation tools. Goal of automation (white box) testing is to reduce number of users to be run manually and not eliminate manual testing all together.





Wednesday, 18 December 2013

MY WORDS FOR SDLC MODELS

Software Development LIFE CYCLE Models.

The SDLC models are the methodologies that being selected for the Software development of project depending on the project’s requirements and goals. The selection of model has very high impact on the testing that is carried out. There are many Software development life cycle models that have developed in order to achieve different required objectives.  It will define the what, where and when of our planned testing, influence regression testing and largely determines which test techniques to use. The Software development life cycle models specify the stages of the process  the order in which they are carried out.

Software Development LIFE CYCLE Waterfall Model.




The SDLC Waterfall Model is first Process Model to be introduced. It is also referred to as a Very linear-sequential life cycle model. In a waterfall model, each phase must be completed fully before the next phase can begin. In waterfall model phases do not overlap. At end of each phase, a review takes place to determine if the project is on the right path and whether or not to continue or discard the project.  It is very simple to understand and use..




Why we use the waterfall model:

Requirements are very well known, clear and fixed. Ample resources with required expertise are available freely. There are no ambiguous requirements . 
Product definition is very stable. Technology is understood.






Advantages of waterfall model:

Works well for smaller projects where requirements are very well understood. Very Easy to manage due to the rigidity of the model – each phase has specific deliverable s and a review process. So 
Simple and easy to understand and use. The 
Phases are processed and completed one at a time.




Disadvantages of waterfall model:

This is Not suitable for the projects where requirements are at a moderate to high risk of changing. As Once an application is in the Software testing stage, it is very difficult to go back and change something that was not well-thought out in the concept stage. Not a good model for complex and object-oriented projects. High amounts of risk and uncertainty. 
No working software is produced until late during the life cycle. 


Poor model for long and ongoing projects.

Software Development LIFE CYCLE V-Model


Verification and Validation model called 
V- model 
. 

Testing of the Application and software is planned in parallel with a corresponding phase of development and maintenance . 

Just like the waterfall model, the V-Model life cycle is a sequential path of execution of processes. Each phase completed at the same time before the next phase begins.  







 Phases of the V-model 

1. Requirements:- Business Requirement Specifications and Software Requirement Specification begin  life cycle model just as same as the waterfall model.

The test plan focuses on meeting the functionality specified in the requirements gathering.
But, in this model before development is started, a system test plan is created and testing done with just built live . 




2. HLD (high-level design) :- This phase focus on systems architectures and designing. It provides overviews of solutions, platforms, systems, products and services/process. An integration test plan is created in this phase in order to test the pieces of the software systems ability to work together in a group as a load testing.

3. LLD (low-level design):- phase is where the actual software components are designed. It defines the actual logic for each and every component of the system. 

Components tests are created in this phase as well.
Class diagrams with all the methods and relations between classes comes under Low L D. 

4. Implementation phase:- That again, where all coding takes place again. Once coding is complete, then path of execution continues up the right side of the V where the test plans developed earlier are now put to use for testing and run application.

5. The Coding Phase:-  Module design is converted into code by developers.

This is bottom of the V-Shape model Validation and Verification.

Advantages of V-model:

Works well for small projects where requirements are easily understood. Simple and easy to use.Avoids the downward flow of the defects.Proactive defect tracking – that is defects are found at early stage.
Testing activities like planning, test designing happens well before coding. This saves a lot of time. Hence higher chance of success over the waterfall model.



Disadvantages of V-model:


If any changes happen in midway, then the test documents along with requirement documents has to be updated. Software is developed during the implementation phase, so no early prototypes of the software are produced.
Very rigid and least flexible.

Software Development LIFE CYCLE Incremental Model.



In incremental model is divided into various builds. Multiple software development cycles take place here, making the life cycle a “multiple-waterfall” cycle.  Cycles are divided up into smaller, more easily managed modules. The incremental Model is an evolution of the waterfall model, where the waterfall model is incrementally applied.
 Each module passes through the requirements, design, implementation and testing phases. 
The incremental build model is a method of software development where the model is designed, implemented and tested incrementally (a little more is added each time) until the product is finished. 
A working version of software is produced during the first module, so you have working software early on during the software life cycle. 
The series of releases is referred to as “increments”, with each increment providing more functionality to the customers. 
Each subsequent release of the module adds function to the previous release. The process continues till the complete system is achieved.



Why we use the Incremental model:

Requirements of the complete system and application are clearly defined and understood already. 
There are some high risk features and goals during there phases. 
There is a need to get a product to the market early as so soon. 
A new technology is being used. 
Major requirements must be defined; however, some details can evolve with time. 
Resources with needed skill set are not required .

Advantages of Incremental (I) model:

Easy to manage risk because risk pieces are identified and handled during iteration. 
More flexible  less costly to change scope and requirements. 
Generate working software and applications quickly and early during the software life cycle running . 
Customer can respond to each built whenever . Very 
Easy to test and debug during a smaller iteration. 
Lowers initial delivery cost.

Disadvantages of Incremental (I) model:

Needs a clear and complete definition of the whole system and applications before it can be broken and built incrementally. 
Needs good planning with design. 
Total cost is higher than waterfall costly so user not prefers.





Tuesday, 17 December 2013

MY WORDS FOR WHY TO START MANUAL TESTING


START MANUAL TESTING
The Manual Testing is to make sure that the application under test is defect free and software application is working as per the requirement specification document.There are different stages for Manual Testing like Unit testing, Integration testing, System testing and User Acceptance testing.A test plan document is created by test lead which describes the detailed and systematic approach to testing a software application. Basically the test plan typically includes a complete understanding of what the ultimate workflow will be.
This type includes the testing of the Software manually i.e. without using any automated tool or any script. In this type, tester takes over the role of end user and test the Software to identify any un-expected behavior or bug. Once the reported defects are fixed, the testers will retest the defect to make sure that the defects are fixed. The main goal of Software testing is to make software defect free & deliver good quality Product to customer.To ensure the completeness of testing (100% test coverage) test cases or test scenarios are created. Manual Testing Concepts also includes exploratory testing as testers explore the software to identify errors in it.There are different stages for Manual Testing like Unit testing, Integration testing, System testing and User Acceptance testing.
 To ensure the completeness of testing (100% test coverage) test cases or test scenarios are created. Manual Testing Concepts also includes exploratory testing as testers explore the software to identify errors in it.
After the testing is started the designed test cases or test scenarios will be executed & any differences between actual & expected results are reported as defects. 

As discussed previous , automated testing is extremely powerful and cost effective at allowing you to ensure that the system meets customer requirements now and in the future, and ensuring that as the system develops and grows, all the requirements and features are still working as you expect.The aim to decide how you going to use each technique to solve different problems. When you add TDD, the code quality is also increased which will have long-term benefits when it comes to the maintainability of the code base. This is where automated testing is best. However, at the moment automated testing is not very good when it comes to knowing if the application is usable by a human. They can't decide if the text and information provided will be understandable by the end-user. In other ways, it is extremely costly to automate certain parts of the system — for example a jQuery effect which can only really be verified by using the control and ensuring that the effect is as desired. We feel that although this could be automated, it is more effective to manually test the effect, as this will provide you with more confidence that it is working as you expect, and also it is cheaper in terms of time taken. Although we have already discussed at length the advantages of automated testing, there is still a time and place where manual testing is important, in some cases more important than automated testing. Many people have successfully released software and products without having any automated testing in place, instead relying on the manual testing techniques discussed throughout this. Even though this has been successful for many companies, we feel that the best approach to take is a mixture of automated testing, as we have already discussed, and manual testing. Combining the two provides you with a safety net to catch regression bugs, allowing you to push forward with the development and still catch the issues which only manual testing can uncover.

Wednesday, 2 October 2013

MY WORDS FOR ALL TYPES OF SOFTWARE TESTING

1. Ad-hoc testing: This is a informal type of software testing that is performed by software testers, business analyst, developers or any stake holder without referring to test cases or documentation. Person performing ad-hoc testing usually has a good understanding of software requirements and tries to break the software and find defects with the experience and knowledge they have about the domain, requirements and functionality of the software. Ad hoc testing is intended to find defects that were not found by existing test cases.

2. Acceptance testing: This is a formal type of software testing that is performed by end customer to check if the software confirms to their business needs and to the requirements provided earlier. Acceptance tests are usually documented; however end customers may not document test cases for smaller version or releases.

3. Accessibility testing: This is a formal type of software testing that helps to determine whether the software can be used by people with disability. Disability can be blind, deaf, color blindness, learning disability etc. There are also companies and consultants that provide website accessibility audits. 

4. Aging testing: This is a type of performance testing that is carried out by running software for longer duration like weeks or months and check performance of software to see if the software performance degrades or shows any signs of degradation after running for a longer period of time. Aging Test is also known as Soak testing and also known as longevity testing. 


5. Alpha Testing: This is a formal type of testing that is performed by end customers at development site. Alpha testing is conducted before taking the software to Beta testing. 


6. Agile Testing: This is a type of software testing that accommodates agile software development approach. Agile development treats testing as an integral part of software development and to be done along with coding. Agile testing allows incremental and iterative coding and testing. 


7. API Testing: API testing is a type of testing that is similar to unit testing. Each of the Software APIs are tested as per API specification. API testing is mostly done by testing team unless APIs to be tested or complex and needs extensive coding. API testing requires understanding both API functionality and possessing good coding skills. 


8. Automated testing: This is a testing approach that makes use of testing tools and/or programming to run the test cases using software or custom developed test utilities. Most of the automated tools provided capture and playback facility, however there are tools that require writing extensive scripting or programming to automate test cases. 


9. All Pairs testing: Also known as Pair wise testing, is a black box testing approach and a testing method where in for each input is tested in pairs of inputs, which helps to test software works as expected with all possible input combinations. 


10. Beta Testing: This is a formal type of software testing that is carried out by end customers before releasing or handing over software to end users. Successful completion of Beta testing means customer acceptance of the software. 


11. Black Box testing: Black box testing is a software testing method where in testers are not required to know coding or internal structure of the software. Black box testing method relies on testing software with various inputs and validating results against expected output. 


12. Backward Compatibility Testing: Type of software testing performed to check newer version of the software can work successfully installed over previous version of the software and newer version of the software works as fine with table structure, data structures, files that were created by previous version of the software. 


13. Boundary Value Testing (BVT): Boundary Value Testing is a testing technique that is based on concept “error aggregates at boundaries”. In this testing technique, testing is done extensively to check for defects at boundary conditions. If a field accepts value 1 to 100 then testing is done for values 0, 1, 2, 99, 100 and 101. 


14. Big Bang Integration testing: This is one of the integration testing approaches, in Big Bang integration testing all or all most all of the modules are developed and then coupled together. 


15. Bottom up Integration testing: Bottom up integration testing is an integration testing 

approach where in testing starts with smaller pieces or sub systems of the software till all the way up covering entire software system. Bottom up integration testing begins with smaller portion of the software and eventually scale up in terms of size, complexity and completeness. 

16. Branch Testing: Is a white box testing method for designing test cases to test code for every branching condition. Branch testing method is applied during unit testing. 


17. Basis path testing: Is a white box testing method for designing test cases to test code for every execution path of code at least once. Basis path testing method is applied during unit testing. 


18. Browser compatibility Testing (BCT) : Its one of the sub types of testing of compatibility testing performed by testing team. Browser compatibility testing is performed for web applications with combination of different browsers and operating systems. 


19. Benchmark testing: This is one of the types of testing performed by testing team, objective of benchmark testing is to measure performance of different versions of the software with predefined configuration (hardware and Operating system)configuration. 


20. Binary portability testing: Binary portability testing is one of the types of comp ability testing which tests compatibility of binary or executable files from one hardware and/or operating system to other for e.g. win 2000 to windows xp etc., 


21. Compatibility testing: Compatibility testing is one of the test types performed by testing team. Compatibility testing checks if the software can be run on different hardware, operating system, bandwidth, databases, web servers, application servers, hardware peripherals, emulators, different configuration, processor, different browsers and different versions of the browsers etc., 


22. Certification testing: Certification testing is also related to Compatibility testing, however product will be certified as fit to use. Certification is applicable for hardware, Operating systems or Browser. e.g. hardware/laptops are certified for Windows 7 etc., 


23. Configuration Testing: Configuration testing is a type of testing which is used for performance testing as well as for performance tuning by finding optimal configuration settings that can make software perform at its best for hardware or for a given operating system. 


24. Component Testing: is a type of software testing performed by developers. Component testing is carried out after completing unit testing. Component testing involves testing a group of units as code together as a whole rather than testing individual functions, methods. 


25. Compliance Testing: is a type of software testing performed by external agencies, external standards body and can be done by testers as well. Objective of compliance testing is to test software meets the required standards, government laws, company policies etc., 


26. Concurrency Testing: is type of software testing performed by performance test engineers, objective of concurrency testing is to check if application performs as expected when multiple users use the software, logins, features and database etc., 


27. Comparison Testing: is a type of software testing performed to compare features, pros and cons of the product with competitor products or different versions of the product. This type of testing is usually done by Business analysts or marketing analysts. 


28. Conformance Testing: is a type of software testing performed by external agencies or standards body. Conformance testing is done to endorse a product that it meets the requirements it was supposed to fulfill. e.g.: Mobile devices to restrict to a limit of electromagnetic radiation emission.


29. Conversion Testing: is a type of software testing performed by testers to check programs or software used for converting data from existing systems to new or replacement systems. e.g.: Existing Insurance software developed in java is being replace by SAP implementation, in this case existing data has to be converted, and migrated to SAP. 


30. Code-driven Testing: is related to types of testing that makes uses of frameworks like Junit, XUnit, Nunit used for Unit testing.
31. Condition Coverage Testing: Condition coverage testing is a testing technique used during unit testing, where in developer tests for all the condition statements like if, if else, case etc., in the code being unit tested. 


32. Dynamic Testing: Testing can be performed as Static Testing and Dynamic testing, Dynamic testing is a testing approach where-in testing can be done only by executing code or software are classified as Dynamic Testing. Unit testing, Functional testing, regression testing, performance testing etc., 


33. Documentation testing: is a type of Static testing in which project documents are checked for thoroughness and completeness. Documentation testing can range from doing spell, grammar check, reading the document from end user perspective, reading the documenting thoroughly understanding and looking for any ambiguous statements, checking documents that are technical in nature like installation documents for its simplicity and completeness. Documentation will also include EULA (End user license agreements), user guides, Admin guides, installation guides etc. 


34. Decision Coverage Testing: Is a testing technique that is used in Unit testing, objective of decision coverage testing is to expertise and validate each and every decisions made in the code e.g. if, if else, case statements. 


35. Destructive Testing: Destructive testing is a type of testing which is performed by testing team, Destructive testing is intended to find failure points of a software, be it by inputting incorrect data, inputting corrupt data, incorrect format, by volume or by number requests etc.,
36. Domain Testing: Domain testing is a software testing technique, Objective of domain testing is to select test cases of critical functionality of the software and execute them. Domain testing does not intend to run all the existing test cases. 


37. Dependency Testing: Is type of testing which can be applied to components, web services, software services, software, APIs, intent of the dependency testing it to check the configuration, input and output sent by base application to dependent services or softwares are as per specification. 


38. End-to-end Testing: End to end testing is performed by testing team, focus of end to end testing is to test end to end flows e.g. right from order creation till reporting or order creation till item return etc and checking ., End to end testing is usually focused mimicking real life scenarios and usage. End to end testing involves testing information flow across applications. 


39. Exploratory Testing: Exploratory testing is an informal type of testing conducted to learn the software at the same time looking for errors or application behavior that seems non-obvious. Exploratory testing is usually done by testers but can be done by other stake holders as well like Business Analysts, developers, end users etc. who are interested in learning functions of the software and at the same time looking for errors or behavior is seems non-obvious. 


40. Endurance Testing: Endurance testing is also known as soak testing, longevity testing. Endurance testing is usually performed by performance testing team. Endurance testing is done to check if software can withstand expected load on continuous basis for reasonable longer duration of time, say about a week or a month. During Endurance testing, performance issues or memory leaks that can be discovered and this is the intent of the endurance testing. 


41. Equivalence Partitioning: Equivalence partitioning is also known as Equivalence Class Partitioning is a software testing technique and not a type of testing by itself. Equivalence partitioning technique is used in black box and grey box testing types. Equivalence partitioning classifies test data into Equivalence classes as positive Equivalence classes and negative Equivalence classes, such classification ensures both positive and negative conditions are tested. 


42. Error-Handling Testing: Is a type of testing that focuses on error handling capabilities of software, this type of testing that focuses on response of the software and message it displays to uses incase of expected and un-expected errors. 


43. Functional Testing: Functional testing is a formal type of testing performed by testers. Functional testing focuses on testing software against design document, Use cases and requirements document. Functional testing is a black box type of testing and does not require internal working of the software unlike white box testing. 


44. Fault injection Testing: Fault injection Testing is a type of testing that done by testing team with help of development team. Faults or errors are induced in the application and existing tests are executed, in case the introduced errors are caught, that means existing tests are good and robust else additional tests have to be included. Fault injection testing is very important incase of defense, aerospace, medical or any critical software that can lead to financial or loss of life. 


45. failover testing: is a type of software testing which focuses on testing functionality or features that enable software to recover from some of the anticipated failures like web server failure, hardware or network failure, or web services not available or not responding etc., 


46. Forward Compatibility Testing: is a type of software testing that is done to check if the software works as expected when software is downgraded from higher version to lower version for e.g. Presume you installed new version of Internet explorer 9.0 and due to some reason you are not comfortable or you find that new version I.E 9.0 is not working as expected, then you would downgrade to I.E. 8.0 and as a end user you will expect that I.E 8.0 works as earlier with all the favorites and browser add-ons intact. Software development companies provide forward compatibility testing in mind when there are going in for a major release and incase due to any issue (software, hardware or configuration) user should still have an option to go back to previous version of the software. 


47. Fuzz Testing: Fuzz testing or fuzzing is a software testing technique that involves testing with unexpected or random inputs. Software is monitored for failures or error messages that are presented due to the input errors. 


48. GUI (Graphical User Interface) testing: is aimed at testing the software GUI (Graphical User Interface) of the software meets the requirements as mentioned in the GUI mockups and Detailed designed documents. For e.g. checking the length and capacity of the input fields provided on the form, type of input field provided, e.g. some of the form fields can be displayed as dropdown box or a set of radio buttons. So GUI testing ensures GUI elements of the software are as per approved GUI mockups, detailed design documents and functional requirements. Most of the functional test automation tools work on GUI capture and playback capabilities. This makes script recording faster at the same time increases the effort on script maintenance. 


49. Glass box Testing: Glass box testing is another name for White box testing. Glass box testing is a testing method that involves testing individual statements, functions etc., Unit testing is one of the Glass box testing methods. 


50. Globalization Testing: Globalization testing is a type of testing which detects problems with in application design related to usage of the software with different languages, different character sets. Software used should not crash and should not be able to display information correctly. Globalization testing is applicable for software that is used by people across different geographies and different language. 


51. Gorilla Testing: is a type of software testing done by software testing team, has a scary name though ?. Objective of Gorilla Testing is to exercise one or few functionality thoroughly or exhaustively by having multiple people test the same functionality. 


52. Hybrid Integration Testing: Also known as sand witch testing is a combination of both bottom up and top down integration testing techniques. By combining both of these once can find more defects at the same time provide better integration test coverage.
53. Happy path testing: Also known as Golden path testing, this type of testing focuses on selective execution of tests that do not exercise the software for negative or error conditions. 


54. Integration Testing: Integration testing also known as I&T in short, in one of the important types of software testing. Once the individual units or components are tested by developers as working then testing team will run tests that will test the connectivity among these units/component or multiple units/components. There are different approaches for Integration testing namely, Top-down integration testing, Bottom-up integration testing and a combination of these two known as Sand witch testing. 


55. Interface Testing: Software provides support for one or more interfaces like “Graphical user interface”, “Command Line Interface” or “Application programming interface” to interact with its users or other software. Interfaces serves as medium for software to accept input from user and provide result. Approach for interface testing depends on the type of the interface being testing like GUI or API or CLI. 


56. Internationalization Testing: Internationalization testing is a type of testing that is performed by software testing team to check the extent to which software can support Internationalization i.e., usage of different languages, different character sets, double byte characters etc., For e.g.: Gmail, is a web application that is used by people all over work with different languages, single by or multi byte character sets. 


57. I18n Testing: I18n refers to Internationalization Testing, in the word “Internationalization”, between letters “I” and “n” there are about 18 letters, hence the name i18n. 


58. Installation/un-installation Testing: Installation/un-installation Testing is a type of testing performed by testing team to find defects related to installation and un-installation of software. This type of testing is very important for packaged software applications (off the shelf software applications) where-in end users are expected to install the software. This testing would involve executing software installer in different modes like “express” or “custom” modes and on different types of environments like virtual operating systems and on different operating systems. Installation/un-installation Testing may also require updating software configuration files. 


59. Keyword-driven Testing: Keyword driver testing is more of a automated software testing approach than a type of testing itself. Keyword driven testing is known as action driven testing or table driven testing. 


60. Load Testing: Load testing is a type of non-functional testing; load testing is done to check the behavior of the software under normal and over peak load conditions. Load testing is usually performed using automated testing tools. Load testing intends to find bottlenecks or issues that prevent software from performing as intended at its peak workloads. 


61. Localization Testing: Localization testing a type of software testing performed by software testers, in this type of testing, software is expected to adapt to a particular locale, it should support a particular locale/language in terms of display, accepting input in that particular locale, display, font, date time, currency etc., related to a particular locale. For e.g. many web applications allow choice of locale like English, French, German or Japanese. So once locale is defined or set in the configuration of software, software is expected to work as expected with a set language/locale. 


62. Loop Testing: Loop testing is a type of white box testing technique, it is one of the most commonly used white box testing technique while performing unit testing. 


63. Monkey testing: Monkey testing is a type of testing that can be performed by software testing team or new users of the software. Objective of monkey testing is to use the software without any specific tests in mind. Monkey test tries to break the software by entering incorrect dates like 31-Feb-2012 or long strings of text or numbers or special characters etc., 


64. Negative Testing: is a type of software testing approach, which calls out the “attitude to break”, these are functional and non-functional tests that are intended to break the software by entering incorrect data like incorrect date, time or string or upload binary file when text files supposed to be upload or enter huge text string for input fields etc., 


65. Non functional testing: Software are built to fulfill functional and non-functional requirements, non-functional requirements like performance, usability, localization etc., There are many types of testing like compatibility testing, compliance testing, localization testing, usability testing, volume testing etc., that are carried out for checking non-functional requirements. 


66. ORT (Operational readiness testing): Operational readiness testing also known as pre go live testing is usually performed by software testers. As the name suggests, Operational readiness testing intends to validate the production environment after new version of the software is deployed in production environment. Software testers test the existing and new functionality to certify that the software is ready to be used by end users. 


67. Orthogonal array Testing: is a black box testing technique. Orthogonal array Testing is statistical and systematic way of Software testing. Orthogonal array Testing technique helps to minimize the number of test cases and maximize test coverage by grouping set of test conditions. Orthogonal testing is effective in case of GUI testing, Configuration testing where there are multiple input parameters and testing one parameter at a time would lead to large number of test cases. 


68. Pair Testing: is a software testing technique that can be done by software testers, developers or Business analysts (BA). As the name suggests, two people are paired together, one to test and other to monitor and record test results. Pair testing can also be performed in combination of tester-developer, tester-business analyst or developer-business analyst combination. Combining testers and developers in pair testing helps to detect defects faster, identify root cause, fix and test the fix. 


69. Parallel Testing: is a software testing technique, where in you test two or more versions of the software “the current version” and “previous version or versions” of the software together to see the differences of existing functionality. 


70. Path Testing: is a type of software testing technique that is used as part of white box testing approach. Objective of path testing is to exercise and test each of the branch statements. These testing techniques are applied by developers while performing Unit testing. 


71. Performance Testing: is a type of software testing and part of performance engineering that is performed to check some of the quality attributes of software like Stability, reliability, availability. Performance testing is carried out by performance engineering team. Unlike Functional testing, Performance testing is done to check non-functional requirements. Performance testing checks how well software works in anticipated and peak workloads. There are different variations or sub types of performance like load testing, stress testing, volume testing, soak testing and configuration testing. 


72. Penetration Testing: is a type of security testing, also known as pentest in short. Penetration testing is done to tests how secure software and its environments (Hardware, Operating system and network) are when subject to attack by an external or internal intruder. Intruder can be a human/hacker or malicious programs. Pentest uses methods to forcibly intrude (by brute force attack) or by using a weakness (vulnerability) to gain access to a software or data or hardware with an intent to expose ways to steal, manipulate or corrupt data, software files or configuration. Penetration Testing is a way of ethical hacking, an experienced Penetration tester will use the same methods and tools that a hacker would use but the intention of Penetration tester is to identify vulnerability and get them fixed before a real hacker or malicious program exploits it. 


73. Ramp Testing: is a type of testing conducted to check the response of the software with constant increase in workload on the software. Ramp testing enables tests the ability of the software to sustain gradual increase in work load. 


74. Regression Testing: is a type of software testing that is carried out by software testers as functional regression tests and developers as Unit regression tests. Objective of regression tests are to find defects that got introduced to defect fix(es) or introduction of new feature(s). Regression tests are ideal candidate for automation. 


75. Retesting: is a type of retesting that is carried out by software testers as a part of defect fix verification. For e.g. a tester is verifying a defect fix and let us say that there are 3 test cases failed due to this defect. Once tester verifies defect fix as resolved, tester will retest or test the same functionality again by executing the test cases that were failed earlier. 


76. Resilience testing: is a type of testing carried by performance engineering team to assess how stable the software is when it is subject to incorrect data, large workloads and more volume of data to be processes. 


77. Recovery Testing: is a 
type of testing performed by software testers. Recovery testing aims at checking how soon and how efficiently software can recover from software crashes, Operating system crashers, and hardware failures. Recovery testing is not the same as fail rover testing or reliability testing. 

78. Risk based Testing: is a type of software testing and an different approach towards testing a software. In Risk based testing, requirements and functionality of software to be tested are prioritized as Critical, High, Medium and low. In this approach, all critical and High priority tests are tested and them followed by Medium. Low priority or low risk functionality are tested at the end or may not based on the time available for testing. 

79. Smoke testing: is a type of testing that is carried out by software testers to check if the new build provided by development team is stable enough i.e., major functionality is working as expected in order to carry out further or detailed testing. Smoke testing is intended to find “show stopper” defects that can prevent testers from testing the application in detail. Smoke testing carried out for a build is also known as build verification test. 


80. Security Testing: is a type of software testing carried out by specialized team of software testers. Objective of security testing is to secure the software is to external or internal threats from humans and malicious programs. Security testing basically checks, how good is software’s authorization mechanism, how strong is authentication, how software maintains confidentiality of the data, how does the software maintain integrity of the data, what is the availability of the software in an event of an attack on the software by hackers and malicious programs is for Security testing requires good knowledge of application, technology, networking, security testing tools. With increasing number of web applications necessarily of security testing has increased to a greater extent. 


81. Sanity Testing: is a type of testing that is carried out mostly by testers and in some projects by developers as well. Sanity testing is a quick evaluation of the software, environment, network, external systems are up & running, software environment as a whole is stable enough to proceed with extensive testing. Sanity tests are narrow and most of the time sanity tests are not documented. 


82. Scalability Testing: is a non functional test intended to test one of the software quality attributes i.e. “Scalability”. Scalability test is not focused on just one or few functionality of the software instead performance of software as a whole. Scalability testing is usually done by performance engineering team. Objective of scalability testing is to test the ability of the software to scale up with increased users, increased transactions, increase in database size etc., It is not necessary that software’s performance increases with increase in hardware configuration, scalability tests helps to find out how much more workload the software can support with expanding user base, transactions, data storage etc., 


83. Stability Testing: is a non functional test intended to test one of the software quality attributes i.e. “Stability”. Stability testing focuses on testing how stable software is when it is subject to loads at acceptable levels, peak loads, loads generated in spikes, with more volumes of data to be processed. Scalability testing will involve performing different types of performance tests like load testing, stress testing, spike testing, soak testing, spike testing etc., 


84. Structural testing: is an alias for White box testing. Refer to white box testing for more details. 


85. Static Testing: is a form of testing where in approaches like reviews, walkthroughs are employed to evaluate the correctness of the deliverable. In static testing software code is not executed instead it is reviewed for syntax, commenting, naming convention, size of the functions and methods etc. Static testing usually has check lists against which deliverables are evaluated. Static testing can be applied for requirements, designs, test cases by using approaches like reviews or walkthroughs. 


86. Stress Testing: is a type of performance testing, in which software is subjected to peak loads and even to a break point to observe how the software would behave at breakpoint. Stress testing also tests the behavior of the software with insufficient resources like CPU, Memory, Network bandwidth, Disk space etc. Stress testing enables to check some of the quality attributes like robustness and reliability. 


87. System Testing: this includes multiple software testing types that will enable to validate the software as a whole (software, hardware and network) against the requirements for which it was built. Different types of tests (GUI testing, Functional testing, Regression testing, Smoke testing, load testing, stress testing, security testing, stress testing, ad-hoc testing etc.,) are carried out to complete system testing. 


88. Soak Testing: is a type of performance testing, where in software is subjected to load over a significant duration of time, soak testing may go on for few days or even for few weeks. Soak testing is a type of testing that is conducted to find errors that result in degeneration of software performance with continued usage. Soak testing is extensively done for electronic devices, which are expected to run continuously for days or months or years without restarting or rebooting. With growing web applications soak testing has gained significant importance as web application availability is critical for sustaining and success of business. 


89. Spike Testing: is a type of performance testing performed by performance engineering team. Objective of spike testing is to check how software responds to workloads that are sent in very short span of time and which are not constant over period of time. 


90. System Integration Testing: known as SIT (in short) is a type of testing conducted by software testing team. As the name suggests, focus of System integration testing is to test for errors related to integration among different applications, services, third party vendor applications etc., As part of SIT, end-to-end scenarios are tested that would require software to interact (send or receive data) with other upstream or downstream applications, services, third party application calls etc., 


91. Transparent box testing: is an alias for White box testing. Refer to White box Testing
for more details. 


92. Top down Integration testing: is one of the integration testing approaches. Top down integration testing is an incremental testing approach for integration testing where in testing of top level modules are done first before moving on to testing of branch modules. Top down integration testing helps to find design issues in the beginning of the Integration test stage. 


93. Upgrade testing: is a type of testing that is carried out by software testers. Upgrade testing is more often carried out after an hardware upgrade or operating system upgrade or any other supporting software like JVM or Web server or application server. For e.g. if JRE is upgraded from 1.0 to 2.3.3 then the subset of the functional tests have to be executed to ensure application features are not broken due to JRE upgrade. 


94. Unit testing: is a type of testing that is performed by software developers. Unit testing follows white box testing approach where developer will test units of source code like statements, branches, functions, methods OR class, interface in OOP (object oriented programming). Unit testing usually involves in developing stubs and drivers. Unit tests are ideal candidates for automation. Automated tests can run as Unit regression tests on new builds or new versions of the software. There are many useful unit testing frames works like Junit, Nunit etc., available that can make unit testing more effective. 


95. Upward compatibility Testing: Upward compatibility testing is another name for forward compatibility Testing. 


96. Usability testing: is a type of software testing that is performed to understand how user friendly the software is. Objective of usability testing is to allow end users to use the software, observe their behavior, their emotional response (whether users liked using software or were they stressed using it? etc.,) and collect their feedback on how the software can be made more useable or user friendly and incorporate the changes that make the software easier to use. 


97. User Acceptance testing (UAT ): User Acceptance testing is a must for any project; it is performed by clients/end users of the software. User Acceptance testing allows SMEs (Subject matter experts) from client to test the software with their actual business or real-world scenarios and to check if the software meets their business requirements. 


98. Volume testing: is a non-functional type of testing carried out by performance engineering team. Volume testing is one of the types of performance testing. Volume testing is carried out to find the response of the software with different sizes of the data being received or to be processed by the software. For e.g. If you were to be testing Microsoft word, volume testing would be to see if word can open, save and work on files of different sizes (10 to 100 MB). 


99. Vulnerability Testing: involves identifying, exposing the software, hardware or network Vulnerabilities that can be exploited by hackers and other malicious programs likes viruses or worms. Vulnerability Testing is key to software security and availability. With increase number of hackers and malicious programs, Vulnerability Testing is critical for success of a Business. 


100. White box Testing: White box testing is also known as clear box testing, transparent box testing and glass box testing. White box testing is a software testing approach, which intends to test software with knowledge of internal working of the software. White box testing approach is used in Unit testing which is usually performed by software developers. White box testing intends to execute code and test statements, branches, path, decisions and data flow within the program being tested. White box testing and Black box testing complement each other as each of the testing approaches have potential to un-cover specific category of errors.



Tuesday, 1 October 2013

MY WORDS FOR SOFTWARE TESTING LIFE CYCLE(STLC)

Software Testing Life Cycle (STLC) :- The process of testing a software in a well planned and systematic way is known as software testing life cycle . STLC is a very important concept that we need to know if You want to understand testing process in detailed. Software testing life cycle (STLC) model is basically develop to identify which Testing activities needs to be carry out and what’s the best time to perform them to accomplish those test activities. Even though testing differs between organizations, there is a testing life cycle. Many people think testing is a static task and finds it boring, but it is definitely not. STLC shows the different phases which are essential for quality control of any software project.

             

                                                                   




Every company follows different structures for Software Testing Life Cycle. STLC is affected by the Software Development Life Cycle (SDLC) implemented by the company and the management’s views towards Quality Assurance & Control activities.

Software Testing Life Cycle(STLC) mainly consists of six phases:
Each of these stages have a definite Entry and Exit criteria , Activities & Deliverables associated with it. So for this tutorial , we will focus of activities and deliverables for the different stages in STLC.
In an Ideal world you will not enter the next stage until the exit criteria for the previous stage is met. But practically this is not always possible.


Phase -1. Software Requirement Analysis/Review :- This is a very important phase in STLC. During this phase, test team studies the requirements from a testing point of view to identify the testable requirements. Here the focus is on understanding the requirements of the system with the viewpoint of testing in mind. It is very important to start testing activities from the requirements phase itself because the cost of fixing defect is very less if it is found in requirements phase rather than in future phases. In this phase the QA interacts with the Business Analyst, System Analyst, Development Manager/Team Lead, etc. or if required the QA may also interact with Client to completely understand the requirements of the system. During this phase the QA takes many important decisions like what are the testing types & techniques to be performed, feasibility for automation testing implementation, etc.

Phase -2. Software Test Planning:- In this phase the QA,QA Lead,QA Manager plans for the complete testing process. This phase is also called Test Strategy phase. In this phase all the planning about testing is done like what needs to be tested, how the testing will be done, test strategy to be followed, Typically , in this stage, a Senior QA manager will determine effort and cost estimates for the project and would prepare and finalize the Test Plan. Important documents like Test Strategy, Test Plan and Effort Estimation are derived from this phase. Everything regarding testing like selection of the testing tools, test efforts estimations, planning resources, determining roles and responsibilities of the personnel involved in the process, planning for the training required, etc. are decided in this phase. This phase is very important as any small mistake in this phase can result in major issues in the project regarding time, money, efforts, etc. A high level test plan document is created which includes all the planning inputs mentioned above and circulated to the stakeholders.


Phase -3. Software Test Designing:- Creation, Review & Update of Test Cases as well as Test Scripts are done in this phase. In this phase various black-box and white-box test design techniques are used to design the test cases for testing, This phase involves creation, verification and rework of test cases & test scripts. Test data , is identified/created and is reviewed and then reworked as well. The test cases prepared by the QA team are reviewed and approved. Test data may also be created in this phase by the QA team if test environment is available to them.In this stage prepare test case and test plan document based on test planning and test analysis.
-Prepare functional test case documents.-Negative value test case document.-prepare validation test document.-Test data is prepared.-Finalized test environment is decided.


Phase -4.Software Test Environment Setup:- Test Environment is the actual system/environment/setup where the testing team will be testing the application. Test environment decides the software and hardware conditions under which a work product is tested. Test environment is prepared by understanding the required system architecture, software & hardware requirements, etc. After test planning phase is over test analysis phase starts, in this phase we need to dig deeper into project and figure out what testing needs to be carried out in each SDLC phase. Many times it happens that testing team is not involved in setting up the test environment. In such scenarios, it is preferable that the testing team should implement Smoke Testing to verify the readiness of the test environment before starting the actual testing.

Phase - 5.Software Test Execution:- The test cases which were prepared earlier are executed in this phase. In this phase, the testers test the websites. During this phase test team will carry out the testing based on the test plans and the test cases prepared. Bugs will be reported back to the development team for correction and retesting will be performed. Different testing techniques as well as methods are implemented and executed on the software/application to break the system and find bugs. Bugs are reported to the development team. The development team resolves the bugs and the system is retested to ensure that it is bug free and ready to go live. In this stage we need to done test cycles until test cases are executed without errors. And our test plans is reached.

Phase - 6. Software Test Closure:- When the testing team is confident that all the reported bugs are resolved and the system is ready according to the client’s requirements, the software testing life cycle enters the last stage I.e. Test Closure stage. In this phase the final testing is done for the software, non functional testing like stress, load and performance testing are performed in this phase. The software is also verified in the production kind of environment. Final test execution reports and documents are prepared in this phase. In this stage, evaluation is done for the complete testing cycle, test closure reports are prepared, proper analysis and documentation is done for the major or critical bugs so that such situations can be handled efficiently and effectively in future projects, etc. The idea is to remove the process bottlenecks for future test cycles and share best practices for any similar projects in future. Each of these phases of STLC has their Entry & Exit criteria We will put a detail article on the Entry & Exit Criterias of different stages of Software Testing Life Cycle in coming days. Hope this article will help you in understanding the Software Testing Life Cycle in detail.

Sunday, 29 September 2013

MY WORDS FOR SOFTWARE DEVELOPMENT LIFE CYCLE (SDLC)

Before going to the Software Testing Life Cycle in Software Testing, 
we need to know how the software is developed and its Life Cycle in Software Testing. SDLC is Software Development Life Cycle, it is a systematic approach to develop a software. Software Development Life Cycle, or Software Development Process, defines the steps/stages/phases in the building of software.

SOFTWARE DEVELOPMENT LIFE CYCLE (SDLC)


The Software Development life cycle models describe phases of the software cycle and the order in which those phases are executed. Requirements are translated into design. Code is produced according to the design which is called development phase. After coding and development the testing verifies the deliverable of the implementation phase against requirements. Each phase produces deliverable's required by the next phase in the life cycle. 

There are following six phases in  Software development life cycle model:

PHASE - I ) Requirement Planning gathering and analysis:- The Business Analyst(BA) will gather the information of the company through Documents which is predefined and goes to client.
He would collect all the information of what has to be developed and in how many days and all the basic requirements of the company.  Business requirements are gathered in this phase. This phase is the main focus of the project managers and stake holders. Meetings with managers, stake holders and users are held in order to determine the requirements like; Who is going to use the system? How will they use the system? After requirement gathering these requirements are analyzed for their validity and the possibility of incorporating the requirements in the system to be development is also studied.
For the proof of his collection of information the Business Analyst(BA) would prepare one document called as either 
Business Development Design 
Business Requirement Specification
User Requirement Specification
Customer Requirement Specification
Gathering as much information as possible about the details and Business specifications of the desired software from the client. This is nothing but the Requirements gathering stage.  


PHASE - II ) Design Phase :- The designing will be Divide in Two stages:-
(i)High Level Designing(HLD):- In this level of Designing the project is divided into number of modules.
The High Level Designing is done by Technical Manager or Chief Architect.
(ii)Low Level Designing(LLD):- In this level of Designing the modules are further divided into number of sub-modules.
The Low Level Designing is done by Team Lead(TL).
In this Phase the Chief Architect would prepare the Technical Design Document or Detail Design Document. In this phase the system and software design is prepared from the requirement specifications which were studied in the first phase. The system design specifications serve as input for the next phase of the model. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture. 

PHASE - III ) Implementation or coding Phase :- In this Phase the Developers would write the Programs for the Project by following the Coding standards. On receiving system design documents, the work is divided in modules/units and actual coding is started. In this phase the Developers would prepare the Source Code. This is the longest phase of the software development life cycle. Certain functionality may be out of scope of the project as a function of cost or as a result of unclear requirements at the start of development. If the development is done externally, this document can be considered a legal document so that if there are ever disputes, any ambiguity of what was promised to the client can be clarified.


PHASE - IV ) Testing Phase :- After the code is developed it is tested against the requirements to make sure that the product is actually solving the needs addressed and gathered during the requirements phase. Software testing is an integral and important phase of the software development process. This part of the process ensures that defects are recognized as soon as possible. During this phase unit testing, integration testing, system testing, acceptance testing are done.
1.In the Starting phase when the Business Development Design is prepared the Test Engineer would study the document, and send a Review Report to Business Analyst.
2.Review Report in Software Testing is nothing but a document prepared by the Test Engineer while studying the Business Development Design document and the points which he cannot understand and not clear are written in that report and sent to Business Analyst.
3.And the Test Engineer would write the Test Cases of application.
4.In Manual Testing there would be up-to 60% defect free and in Automation Testing it would be 95% defect free.
5.In end Phase Testing people document called as Defect Document.


PHASE - V ) Deployment Phase :-  Deployment starts directly after the code is appropriately tested, approved for release, and sold or otherwise distributed into a production environment.After successful testing the product is delivered / deployed to the customer for their use. This may involve installation, customization (such as by setting parameters to the customer's values), testing, and possibly an extended period of evaluation. 
1.In Start Phase after the project is done a mailis given to the client mentioning the completing of the project.
2.This is Known as the Software Delivery Document.
3.The project is than tested by client and is called as the User Acceptance Testing.
4.The project is than installed in the client environment and there testing is done called Port Testing. when installing if any problem occurs the maintenance people would write the Deployment Document to Project Manager.
5.And Finally if client want to have some changes in the software and software changes are done by Maintenance

PHASE - VI ) Maintenance Phase :- Once when the customers starts using the developed system then the actual problems comes up and needs to be solved from time to time. Software training and support is important, as software is only effective if it is used correctly This process where the care is taken for the developed product is known as maintenance. and enhancing software to cope with newly discovered faults or requirements can take substantial time and effort, as missed requirements may force redesign of the software.