Sunday, 31 May 2015

What is Black-box testing ??


Black-box testing




Black box diagram

Black-box testing treats the software as a "black box", examining functionality without any knowledge of internal implementation. The testers are only aware of what the software is supposed to do, not how it does it.[23] Black-box testing methods include: equivalence partitioning, boundary value analysis, all-pairs testing, state transition tables, decision table testing, fuzz testing, model-based testing, use case testing, exploratory testing and specification-based testing.

Specification-based testing aims to test the functionality of software according to the applicable requirementsThis level of testing usually requires thorough test cases to be provided to the tester, who then can simply verify that for a given input, the output value (or behavior), either "is" or "is not" the same as the expected value specified in the test case. Test cases are built around specifications and requirements, i.e., what the application is supposed to do. It uses external descriptions of the software, including specifications, requirements, and designs to derive test cases. These tests can be functional or non-functional, though usually functional.

Specification-based testing may be necessary to assure correct functionality, but it is insufficient to guard against complex or high-risk situations.

One advantage of the black box technique is that no programming knowledge is required. Whatever biases the programmers may have had, the tester likely has a different set and may emphasize different areas of functionality. On the other hand, black-box testing has been said to be "like a walk in a dark labyrinth without a flashlightBecause they do not examine the source code, there are situations when a tester writes many test cases to check something that could have been tested by only one test case, or leaves some parts of the program untested.

This method of test can be applied to all levels of software testing: unit,integration, systemand acceptance. It typically comprises most if not all testing at higher levels, but can also dominate unit testing as well.

what is White-Box testing??


White-Box testing

Main article: White-box testing
White-box testing (also known as clear box testing, glass box testing, transparent box testing and structural testing) tests internal structures or workings of a program, as opposed to the functionality exposed to the end-user. In white-box testing an internal perspective of the system, as well as programming skills, are used to design test cases. The tester chooses inputs to exercise paths through the code and determine the appropriate outputs. This is analogous to testing nodes in a circuit, e.g. in-circuit testing (ICT).
While white-box testing can be applied at the unit, integration and system levels of the software testing process, it is usually done at the unit level. It can test paths within a unit, paths between units during integration, and between subsystems during a system–level test. Though this method of test design can uncover many errors or problems, it might not detect unimplemented parts of the specification or missing requirements.
Techniques used in white-box testing include:
  • API testing (application programming interface) – testing of the application using public and private APIs
  • Code coverage – creating tests to satisfy some criteria of code coverage (e.g., the test designer can create tests to cause all statements in the program to be executed at least once)
  • Fault injection methods – intentionally introducing faults to gauge the efficacy of testing strategies
  • Mutation testing methods
  • Static testing methods
Code coverage tools can evaluate the completeness of a test suite that was created with any method, including black-box testing. This allows the software team to examine parts of a system that are rarely tested and ensures that the most important function points have been tested.[22] Code coverage as a software metric can be reported as a percentage for:
  • Function coverage, which reports on functions executed
  • Statement coverage, which reports on the number of lines executed to complete the test
  • Decision coverage, which reports on whether both the True and the False branch of a given test has been executed
100% statement coverage ensures that all code paths or branches (in terms of control flow) are executed at least once. This is helpful in ensuring correct functionality, but not sufficient since the same code may process different inputs correctly or incorrectly.

Tuesday, 26 May 2015

What is Integration testin??

Integration testin

 Integration testing is any type of software testing that seeks to verify the interfaces between components against a software design. Software components may be integrated in an iterative way or all together ("big bang"). Normally the former is considered a better practice since it allows interface issues to be located more quickly and fixed.

Integration testing works to expose defects in the interfaces and interaction between integrated components (modules). Progressively larger groups of tested software components corresponding to elements of the architectural design are integrated and tested until the software works as a system.[

What is Unit testing ??


Unit testing

Unit testing, also known as component testing, refers to tests that verify the functionality of a specific section of code, usually at the function level. In an object-oriented environment, this is usually at the class level, and the minimal unit tests include the constructors and destructors.

These types of tests are usually written by developers as they work on code (white-box style), to ensure that the specific function is working as expected. One function might have multiple tests, to catch corner cases or other branches in the code. Unit testing alone cannot verify the functionality of a piece of software, but rather is used to ensure that the building blocks of the software work independently from each other.

Unit testing is a software development process that involves synchronized application of a broad spectrum of defect prevention and detection strategies in order to reduce software development risks, time, and costs. It is performed by the software developer or engineer during the construction phase of the software development lifecycle. Rather than replace traditional QA focuses, it augments it. Unit testing aims to eliminate construction errors before code is promoted to QA; this strategy is intended to increase the quality of the resulting software as well as the efficiency of the overall development and QA process.

Depending on the organization's expectations for software development, unit testing might include static code analysis, data flow analysis, metrics analysis, peer code reviews, code coverage analysis and other software verification practices.

Monday, 25 May 2015

Why, How and When to Automate Software Testing?

Why, How and When to Automate Software Testing?




Being as a Software Test Engineer you might have come across a situation where “Why, How and When to Automate Software testing?” Some testers are thinking of Automate Software testing is no more advantages than manual testing and we also hear from some readers on using Automation to test the application.
Listening from different opinions, I thought instead of answering questions individually it would be better to some logical discussion here. The automation testing is such a huge topic to discuss on, so I suggest our smart readers from different areas to contribute your experience on automation testing in below comments.
The manual testing is more preferable over automation testing in following cases:
  • If UI of the system under test is changing more frequently, so after every time when the UI changes then the Automated script needs to be updated accordingly.
  • If you have tight release deadlines and no enough time to automate the system then I prefer to go with manual testing instead of Automation testing.
  • If Identify the test cases which are going to be executed initially once and do not automate such test case.
  • To do automation testing you should have the skilled resources with having sufficient programming knowledge. If you do not have the skilled resources to automate the application under test or if you are not ready to invest time and money to educate peoples on automation testing to build good automation team then don’t go for Automation testing.

Testing Tips

Is it possible to test the application manually whenever the application gets update? Yes it is possible, but will take longer time during test or some time it is not possible. Also, it won’t be effective in terms of company cost, resources, Time etc.
The best way to automate the test as many as the application version gets change and you get lots of regression work.
So, to keep the application bug free, tester needs to test the application frequently. Completion of test automation process is totally depends on application whether; it is small, big or how many bugs are introduced in the application.

4) Increase Test Coverage:

Automated software testing more focus on the depth and scope of tests which increases the quality of software. Automated software testing process works on thousands of different complex test cases which is not possible with manual testing. If the software is huge and complex, manual testers are scare to test that software but testers who do automation testing can easily work on that particular software, automation testing also facilitates testers to test the software on multiple computers with different configurations. This testing process is capable to check the application inner database, data table, memory, and file containing the application to determine the application is performing as estimated.

5) Increases Speed, Efficiency, Quality and Decreases the Cost:

When we start developing the software, our main goal is to release the software on time. Although, Automation testing process uses same module in different test scenario, run fast. Automated regression test provides the non-stop system steadiness and functionality after changes to the software were completed main to shorter development cycles joint with better quality software and thus the welfare’s of automated testing fast out gain the initial costs.

6) Testers get Motivated which increases the efficiency:

In case on manual testing, testers do not get any new technique and tools, they apply manual tricks to test the software, that’s why they don’t get motivation which affects the manual tester’s efficiency. But, in case of automation testing, testers always get different tools with testing software which makes them to work fast with increasing efficiency.

7) Helpful in testing complex web application:

Automation testing process is helpful for those web applications where millions of users interact together. If we go for manual testing process, creating those many users manually and simultaneously are difficult or impossible.
So, to test those web applications go for load automation testing and create virtual users to check load capacity of the web application.
Automation testing process can also be used on that software where GUI will always be same and functionalities gets changed always due to source code changes.

Conclusion:

In the fast moving world, the Automation testing plays an vital role to achieve most of the testing goals with effective use of resources and time. However before start automating the test tasks you should be careful about choosing automation tool.
Make sure that you have skilled people before deciding When to Automate Software testing? If you are not doing so, you will not get ROI which you invested in expensive automation tool, which leads to frustration. You should list down all requirements before going for automation tool. Every tool cannot support all requirements, so to overcome the limitations for automation tool you need to go with Manual testing techniques. If you don’t have budget to get the paid version then you first start with open source tool. Open source tool is also a good option to start with automation.
Many of our readers are working in Manual and/or Automation testing field. If you need share your experience then feel free to express your views in comment section below.

Software Testing Tools List


Software Testing Tools List

Now days we can get lots of Software Testing Tools in the market. Selection of tools is totally based on the project requirements & commercial (Proprietary/Commercial tools) or free tools (Open Source Tools) you are interested. Off Course, free Testing Tools may have some limitation in the features list of the product, so it’s totally based on what are you looking for & is that your requirement fulfill in free version or go for paid Software Testing Tools.
The tools are divided into different categories as follows:

  • Test Management tools
  • Functional Testing Tools
  • Load Testing Tools

Here you can get a most popular free and paid Testing Tools list used in the actual testing of the software application.


Software Testing Tools List

1) Open Source Tools


a) Test Management tools

  • TET (Test Environment Toolkit)
    • The goal behind creating the Test Environment Toolkit (TET) was to produce a test driver that accommodated the then current and anticipated future testing needs of the test development community. To achieve this goal, input from a wide sample of the community was used for the specification and development of TET’s functionality and interfaces.
  • TETware
    • The TETware is the Test Execution Management Systems which allows you to do the test administration, sequencing of test, reporting of the test result in the standard format (IEEE Std 1003.3 1991) and this tools is supports both UNIX as well as 32-bit Microsoft Windows operating systems, so portability of this is with test cases you developed. The TETware tools allow testers to work on a single, standard, test harness, which helps you to deliver software projects on time. This is easily available for download on ftp download.
  • Test Manager
    • The Test Manager is an automated software testing tool is used in day to days testing activities. The Java programming language is used to develop this tool. Such Test Management tools are used to facilitate regular Software Development activities, automate & mange the testing activities. Currently Test Manager 2.1.0 is ready for download. If you want to learn more information of Test Manager, Click here to get a latest copy for free.
  • RTH
    • RTH is called as “Requirements and Testing Hub”. This is a open source test management tool where you can use as requirement management tool along with this it also provides the bug tracking facilities. From here you can download the latest version of RTH.

b) Functional Testing Tools


c) Load Testing Tools


2) Proprietary/Commercial tools


a) Test Management tools


b) Functional Testing Tools


c) Load Testing Tools


 

Friday, 15 May 2015

Why is software testing necessary?

Why is software testing necessary?

Software Testing is necessary because we all make mistakes. Some of those mistakes are unimportant, but some of them are expensive or dangerous. We need to check everything and anything we produce because things can always go wrong – humans make mistakes all the time.
Since we assume that our work may have mistakes, hence we all need to check our own work. However some mistakes come from bad assumptions and blind spots, so we might make the same mistakes when we check our own work as we made when we did it. So we may not notice the flaws in what we have done.
Ideally, we should get someone else to check our work because another person is more likely to spot the flaws.
There are several reasons which clearly tells us as why Software Testing is important and what are the major things that we should consider while testing of any product or application.
Software testing is very important because of the following reasons:
  1. Software testing is really required to point out the defects and errors that were made during the development phases.
  2. It’s essential since it makes sure of the Customer’s reliability and their satisfaction in the application.
  3. It is very important to ensure the Quality of the product. Quality product delivered to the customers helps in gaining their confidence.
  4. Testing is necessary in order to provide the facilities to the customers like the delivery of high quality product or software application which requires lower maintenance cost and hence results into more accurate, consistent and reliable results.
  5. Testing is required for an effective performance of software application or product.
  6. It’s important to ensure that the application should not result into any failures because it can be very expensive in the future or in the later stages of the development.
  7. It’s required to stay in the business.