Sunday, 22 January 2017

Testing types (Manual and Automation Testing )

Testing types:

In this section we will learn different types of testing which are being used in testing a Software during SDLC.
Manual Testing:-

In manual testing testers manually execute test cases without using any automation tools.
It is the most primitive of all testing types and helps to find bugs in the software system.
 Any new application must be tested manually, before it testing can not be automated. Manual testing requires more effort, but it is necessary to check feasibility of automation.
And manual Testing does not require knowledge of any testing tool.
In manual testing activity tester needs to be very patient, creative & open minded. They need to think and act with an End User perspective.
Goal of Manual Testing:
The main purpose of Manual Testing is to ensure that the application is error free and it is working in conformance to the specified functional requirements.
For manual testing test suites or cases, are designed during the testing phase and it should have 100% test coverage.
Manual testing also makes sure that reported defects are fixed by developers and re-testing has been performed by testers on the fixed defects.
Basically, manual testing checks the quality of the system and delivers bug-free product to the customer/client. 

Types of Manual Testing:

  1. Unit testing
  2.  System testing
  3. Integration testing,
  4. Acceptance testing
  5. Black box testing
  6. White box testing.

Tools Used in Testing:-

  1.  Selenium
  2. QTP
  3. Jmeter
  4. Loadrunner
  5. TestLink
  6.  Quality Center (ALM)

Automation Testing

Automation testing is also known as “Test Automation”, in which the tester writes scripts and uses another software to test the application/product.

As we know manual testing is performed by a human sitting in front of a computer carefully executing the test steps.

Automation Testing means using an automation tool to execute your test case suite.   
The automation software can also enter test data into the System under Test, compare expected and actual results and generate detailed test reports.
Test Automation demands considerable investments of money and resources.
Once the test suite is automated, there is no need of human intervention is required to test the software. 
Right selection of automation tool, testing process and team, are important players for automation to be successful. Manual and automation methods go hand-in hand for successful testing.

Why Automated Testing?

  • Manual Testing of all work flows, all fields, all negative scenarios is time and cost consuming.
  • It is difficult to test for multi lingual sites manually.
  • No need of human intervention. You can run automated test unattended (overnight)
  • Automation increases  speed of test execution.
  • Automation helps increase  Test Coverage.
  • Manual Testing can become boring and hence error prone.

What to automate?

It is not possible to automate everything in the Software; however the areas at which user can make transactions such as login form or registration forms etc, any area where large amount of users’ can access the Software simultaneously should be automated. Furthermore all GUI items, connections with databases, field validations etc. can be efficiently tested by automating the manual process.

When to Automate?
 Test Automation should be uses by considering the following for the Software:
        1. Large and critical projects.
        2. Projects that require testing the same areas frequently.
        3. Requirements not changing frequently.
        4. Accessing the application for load and performance with many virtual                 users.
        5. Stable Software with respect to manual testing.
        6. Availability of time.

How to Automate?
 Automation is done by using a supportive computer language like VB scripting and an automated software application. There are a lot of tools available which can be used to write automation scripts. Before mentioning the tools lets identify the process which can be used to automate the testing:
  1. Identifying areas within a software for automation.
  2. Selection of appropriate tool for Test automation
  3. Writing Test scripts
  4. Development of Test suits.Execution of scripts
  5. Create result reports.
  6. Identify any potential bug or performance issue.

   Tools Used in Automation Testing

  1. HP Quick Test Professional
  2. Selenium
  3. IBM Rational Functional Tester
  4. SilkTest
  5. TestComplete
  6. Testing Anywhere
  7. WinRunner
  8. LaodRunner
  9. Visual Studio Test Professional
  10. WATIR

Testing that can be Automated

  • Smoke Testing.
  •  Unit Testing
  • Integration Testing
  • Functional Testing
  • Keyword Testing
  • Regression Testing
  • Data Driven Testing
  • Black Box Testing
Programming Languages Used in Automation:
  • Java 
  • C#
  • Python
  • Ruby
  • Perl
  • PHP

Tuesday, 17 January 2017

Software Testing and its Myths.

Software Testing and its  Myths 

1 : Testing is Too Expensive 
Reality :Early testing saves both time and cost in many aspects, however reducing the cost without testing may result in improper design of a software application rendering the product useless. 

2 : Testing is Time-Consuming 
Reality : During the SDLC phases, testing is never a time-consuming process. However diagnosing and fixing the errors identified during proper testing is a time-consuming but productive activity. 

3 : Only Fully Developed Products are Tested 
Reality : No doubt, testing depends on the source code but reviewing requirements and developing test cases is independent from the developed code. However iterative or incremental approach as a development life cycle model may reduce the dependency of testing on the fully developed software. 

4 : Complete Testing is Possible 
Reality : It becomes an issue when a client or tester thinks that complete testing is possible. It is possible that all paths have been tested by the team but occurrence of complete testing is never possible. There might be some scenarios that are never executed by the test team or the client during the software development life cycle and may be executed once the project has been deployed. 

5 : A Tested Software is Bug-Free 
Reality : This is a very common myth that the clients, project managers, and the management team believes in. No one can claim with absolute certainty that a software application is 100% bug-free even if a tester with superb testing skills has tested the application. 

6 : Missed Defects are due to Testers 
Reality : It is not a correct approach to blame testers for bugs that remain in the application even after testing has been performed. This myth relates to Time, Cost, and Requirements changing Constraints. However the test strategy may also result in bugs being missed by the testing team. 

7 : Testers are Responsible for Quality of Product 
Reality : It is a very common misinterpretation that only testers or the testing team should be responsible for product quality. Testers’ responsibilities include the identification of bugs to the stakeholders and then it is their decision whether they will fix the bug or release the software. Releasing the software at the time puts more pressure on the testers, as they will be blamed for any error. 

8 : Test Automation should be used wherever possible to Reduce Time 
Reality : Yes, it is true that Test Automation reduces the testing time, but it is not possible to start test automation at any time during software development. Test automaton should be started when the software has been manually tested and is stable to some extent. Moreover, test automation can never be used if requirements keep changing. 

9 : Anyone can Test a Software Application 
Reality : People outside the IT industry think and even believe that anyone can test a software and testing is not a creative job. However testers know very well that this is a myth. Thinking alternative scenarios, try to crash a software with the intent to explore potential bugs is not possible for the person who developed it. 

10 : A Tester's only Task is to Find Bugs 
Reality : Finding bugs in a software is the task of the testers, but at the same time, they are domain experts of the particular software. Developers are only responsible for the specific component or area that is assigned to them but testers understand the overall workings of the software, what the dependencies are, and the impacts of one module on another module. 


What is testing?

What is Software Testing?
Software testing is a process of executing a program or application or product with the intent of finding the software bugs, gaps, errors, or missing requirements in contrary to the actual requirements. Testing is the process of validating and verifying that a software program or application or product, whether it satisfies the specified requirements or not. In simple words, testing is executing a system or application in order to identify any gaps, errors, or missing requirements in contrary to the actual requirements.

Why Software Testing is Needed?
Software testing is needed because of the following reasons:

1. Needed to ensure the users or customers satisfaction and reliability of the application.

2. Testing is needed for correctly understand the fault or errors in software during its                  development phases.

3. It is needed in software development to increase the reliability and quality of the software.

4. Testing provides the various facilities to the users like delivery of high quality software or        application, lower maintenance costs and more accurate and reliable results.

5. Testing provides effective and optimum performance of system and capacity utilization,          software reliability, quality, and system or application assurance.

6. Testing is needed because it is including in the project plan, and to stay in business.

7. Helps to prove software or application has no faults, because failures can be very                  expensive in nature.

8. Software Testing helps to learn more about the reliability of the software and application.



Who does Testing?
Testing depends on the process and the associated stakeholders of the project(s). Some IT industries, large companies have a separate team with responsibilities to evaluate the developed software in context of the given requirements. Moreover, developers also conduct testing which is called Unit Testing.
following professionals are involved in testing a system within their respective capacities:

i) Software Tester,
Ii) Software Developer,
Iii) Project Lead/Manager and
Iv) End User.

What is the Objectives and purpose of testing?
It has different goals and objectives.The major objectives of Software testing are as follows:

I) Helps find defects that may get created by the programmer during developing the software.

ii) Gaining confidence in and providing information about the level of quality.

Iii) To prevent defects and flaws in application or product.

Iv) To make sure that the end result meets the business and user requirements.

v) To ensure that it satisfies the BRS( Business Requirement Specification) and                           SRS(System Requirement Specifications)
.
Vi) Helps to gain the confidence of the customers by providing them a quality product.


When to Stop Testing?
It is difficult to determine when to stop testing, as testing is a never-ending process and no one can claim that a software is 100% tested. The following aspects are to be considered for stopping the testing process:

I) Testing Deadlines
Ii) Completion of test case execution
Iii) Completion of functional and code coverage to a certain point
Iv) Bug rate falls below a certain level and no high-priority bugs are identified
v) Management decision