Friday, 1 May 2015

Compatibility Testing description:

[4] Compatibility Testing:

In Website Testing Checklist, the Compatibility Testing make sure that the web pages are properly rendering different browsers like IE8, IE9, IE10, IE11, Chrome, Firefox, Safari, Opera etc. Also verify if it is working properly on different Operating systems like Windows XP, Windows 7, Vista, Linux, Mac etc on different hardware configurations.
Here is the most typical compatibility tests should be considered while testing your application:
» Check on different browsers and its versions.
» Check on different Operating systems and its versions.
» Check on different hardware configurations
» Check on different network environments.
» Check on different screen resolutions

[5] Web Security Testing:


Security testing is one of the most important types of software testing that make sure that the vulnerabilities or weakness of the software application. The main objective of security testing is to find the vulnerabilities of system & determine that its data and resources are protected from possible intruder. Security testing allows us to identify the confidential data stays confidential or not. This type of testing is also known as Penetration Testing.

Some of the major aspects of web security testing are:
» Penetration Testing
» Password cracking
» Vulnerability
» URL manipulation
» SQL injection
» Cross Site Scripting (XSS)

Checklist for Website Testing 2

[2] Performance Testing:
the performance of system to major the measure, validate or verify quality attributes of the system like responsiveness, Speed, Scalability, Stability under variety of load conditions. The main aim of Performance testing is not to find the defects in the application but to get rid of bottlenecks and find out the amount of load/stress the site is able to sustain. Performance testing is used to understand the scalability of application under test, response time means time required to send request from client machine to time required to reply by the server under different varity of load conditions which mimic the real world use.
Performance testing can be applied to understand the website’s scalability, any loopholes in the load balancing and to test the response time between a request (from the client) and the reply (from the server) and the amount of load/stress the site is able to sustain.

It is a technique implemented in user-centered interaction design to evaluate a product or service by testing it with representative users. On the Web page the usability is a most important and required condition for survival. If the website is difficult to use then peoples will not stay on the page. Also if the content or details of the page are difficult to read or understand then also peoples will not stay on the page. So Usability testing plays an important role which assesses how easy user interfaces is to use.
The Usability testing is categories in different categories – Accessibility, Identity, Navigation and Content. You should keep in mid few points while testing of web application for Usability testing:

A) Accessibility: (Add Bullets)

  • Site Load-time should be reasonable.
  • Site font size and spacing between lines should be easy to read.
  • Carefully use of Flash & Add-ons in website.
  • Proper ALT Tags should be used for all images present in website.
  • If any internal link is broken then website should be presented with 404 error page or Not Found page.

B) Identity:

  • The placement of website logo should be at prominently place like right top side of the page.
  • Proper tagline should be used which clearly states the purpose of the website.
  • Company and Contact Information must be clearly mentioned which helps to identify the company information.

C) Navigation:

  • Main Navigation should be easy to find, read and use. If more than navigations are used then make sure that user should clearly understand why multiple navigations are used.
  • Clear & Concise navigation labels should be used in website.
  • Reasonable use of links and button in website so user will not confuse while navigating the pages.
  • As a common practice the Company Logo should be linked to website Home page.
  • The Site Search facility should be present on the website and make sure that the Site Search button simple and easy to access like top right of the page.

 D) Content:

  • Headings should be clear and descriptive and SEO use of proper heading tags like H1, H2 etc.
  • Make sure that the critical content should be displayed on the first screen in average screen resolution i.e. 1024×768.
  • Use of consistent font styles and colors across the website help user to understand that they’re still on your site.
  • Use of user friendly and meaningful keywords for URLs will help both user and search engines to understand navigation.
  • Meaningful and self explanatory titles (in the <TITLE> tag) should be used for pages. These titles are used by search engines to display in the Search result by search engines. If the improper titles are used then user will skips the your website pages link and proceed further.

Checklist for Website Testing

A) Validation testing:


» In functionality testing the different fields used in the website should be validated like Textboxes, dropdowns, radio options, check boxes, Combo box inputs, links etc.
» Now a day’s most of the website preferred to use CSS means Cascading Style Sheet. In the market many CSS validator tools are available, one of the good tool is W3C CSS validator which will help you to validate the CSS used in your site user test.


B) Links/URL Testing:

This testing is very much interesting and can be helpful for SEO of you r page. Following types of testing should be carried out for Link or URL testing:
  • Internal links: The link which are pointing to the pages of same websites. This testing make sure that the internal links are properly linked to expected pages of your websites link like Home page, Contact Us, About Us etc.
  • External links: The link which are pointing to the pages of external websites. This testing makes sure that the internal links are properly linked to expected pages of external websites.
  • Email links: Such link need to make sure that the if user clicks on the email link then default email client should open with To address should be pre-filled.
  • Broken links: Broken links are also called as Dead links. Such links are not linked to any of the pages either internal or external pages of the website. Such link generated with the spelling mistakes in the link URL or linked page is removed or no more exists. To check broken link you can use online tools to validate the broken links in the website.

C) Web Forms Testing:

In Website Testing Checklist the web forms are the most commonly used in the websites, so it is one of the most important part of the website testing. Consider a scenario where user fills an enquiry form and click on Submit button, now what next or they just fill in the form and do nothing, the details do not get captured correctly and so are lost. While doing forms functional testing make sure that they should be consistent and should contain the required input and output controls. The data should be captured properly.

D) Database Testing:

Now days with the new technologies like android and smart phones computer applications are more complex.
If the front end is more complicated then the back ends are also convoluted. As a result, introduce more complex database schema to support such intricate computer applications. So it’s more important to validate the databases to make sure the quality and website able to handle the data processing effectively.

E) Cookies Testing:

A Cookie is information stored in text file on user’s hard drive (client side) by web server. This information is used later by web browser while accessing the website. Ideally the cookie is used to store the personalized user information or data in encrypted or secured manner. This is small size files which act as unique identifiers and allow websites to remember a particular user for a given time. These files are not harmful for users. Sometimes if the user’s personal information is stored in the cookie and if hackers stolen the cookie then hacker can get the confidential information which leads to security issues. That’s why the testing of Cookie is most important. There are two types of cookies Persistent Cookie and Non-Persistent Cookie.

F) Testing of Error Messages:

In the well developed website the error messages are very much helpful to guide users for success and erroneous conditions. While navigating through application if poorly designed error messages will easily misguide the end users. Many of the websites are used different interesting 

G) Required field and optional field validation:

The proper handling of required and optional fields should be efficiently handled. Ideally the application should not be submitted unless and until all required fields are filled properly. The required error message should be displayed when user proceed with not filling the mandatory fields. It should not restrict you for proceeding further if the optional fields are not filled.

H) Client-side Testing:This type of testing is subset of Security testing. In this testing need to check if the sensitive data is not stored in the temporary internet files or stored in encrypted format like passwords, credit card information, bank number etc.

Performance Testing in software testing

Performance Testing

Performance testing is the testing technique used to determine the performance components of a particular system/ application in a specific situation. It determines how much resources are used and how much product/system is scalable, reliable, responsible, and speedy during test. This testing does not give pass or fail result, used to set the benchmark & standard of the application/system against Concurrency/Throughput, Server response time, Latency, Render response time etc. This testing is the subset of performance engineering and it is used to determine the performance issues come in the design and architecture of software product. It is very extensive, contains: Load Testing, Stress Testing, capacity testing, volume testing, endurance testing, spike testing, scalability testing and reliability testing etc.
For example; to know the web application is working fine or not, we need to test two things,
  • Load in terms of concurrent users or HTTP connections
  • Suitable response time
Constantly, increase the load on the system while looking for bottlenecks. For a web application, these bottlenecks can occur at multiple levels, and to locate them you can use a various tools,
  • At the application level: Profilers can be used by developer to spot inefficiencies in their code.
  • At the database level: Database-specific profilers and query optimizers can be used by developers and DBAs.
  • At the operating system level: Use utilities “top, vmstat, iostat” on Unix-type systems and “PerfMon” on Windows to monitor hardware resources such as CPU, memory, swap, disk I/O.
  • At the network level: Packet sniffers “tcpdump”, network protocol analyzers “ethereal”, and various utilities “netstat, MRTG, ntop, mii-tool” can be used by network engineers.
The activities described above will use a white-box testing approach, where the system is examined and watched “from the inside out” and from various angles. The Jmeter tool is good tool to execute performance testing.

Primary aim of Performance Testing:

The primary aim of performance testing is to determine the benchmark behavior of a system under test. During test, performance testing benchmarks should meet with the industry-defined benchmarks.
Performance testing aim is not to find bugs of the system/application, its aim is to set and test the benchmark of the application. Correctness and close observance of the performance and results of the application during test is the primary characteristic of performance testing.

Load Testing

We have already seen above that load testing is an important part of performance testing. In case of Load testing, we can continuously and steadily increase the load on the system till the time it reaches the threshold limit. Very easily we can test the load of the system by using automation tools like; LoadRunner or any other suitable tool. Load testing is also well-known by the names like volume testing and endurance testing.  In the above example, for a web application, the load is defined in terms of concurrent users or HTTP connections.
Examples of volume testing,
  • Test of a word processor by changing large volume of data
  • Test a printer by transferring heavy data
  • Test a mail server with 1000 of concurrent users
Examples of endurance testing,
  • Test a client-server application by running the client in a loop against the server over an extended period of time
Here we can see, performance testing and load testing looks similar, but their goals are different from each other. In some cases, load testing has been used with performance testing for measurement and bench-marking. And in some cases, load testing works at a predefined load level, usually the highest load that the system accepts.

Aim of Load Testing:

Find out bugs that are not possible with any other such as memory management bugs, memory leaks, buffer overflows, etc.
Make sure that the application meets the performance point recognized during performance testing. It is possible due to regression testing against the application at a specified maximum load.

Stress testing:

During test, Stress testing tries to break the system by crushing or hiding its resources (sometime we called this a negative testing). The purpose of it to ensure that the system fails and recovers gracefully (sometime it is called as recoverability).
In the above example of a Web application, the stress can be applied in various,ways:
  • Double the baseline number for concurrent users/HTTP connections
  • Randomly shut down and restart ports on the network switches/routers that connect the servers (via SNMP commands for example)
  • Restart the offline database
  • Rebuild a RAID array during run time of the system
  • Run method that includes resources (CPU, memory, disk, network) on the Web and database servers

Aim of the Stress Testing:

The aim of the stress testing is to examine post-crash reports to express the performance of application after failure. The major subject is to make sure that the system does not cooperate with the security of complex data after the failure. In a effective stress testing, the system will come back to normality along with all its components, after even the most terrible break down.

Test Case Reviews can be done in three ways:

Test Case Reviews can be done in three ways:

  1. Self-review: It is done by the tester himself who has written the test cases. He can verify whether all the requirements are covered or not by looking into SRS/FRD.
  2. Peer review: It is done by another tester who hasn’t written those test cases but is familiar with the system under test. Also known as Maker and Checker review.
  3. Review by a supervisor: It is done by a team lead or manager who is superior to the tester who has written the test cases and has great knowledge about the requirements and system under test.

Some of the common mistakes which are check during the test  case review process are:

  1. Spelling mistakes: Sometimes, spelling mistake can create a lot of confusions or make a sentence difficult to understand.
  2. Grammar: If grammar is not proper then test case can be interpreted in a wrong way, resulting in wrong results.
  3. Template format: If proper template is followed then it becomes easy to add/modify test cases in future and test case plan looks organized.
  4. Standard/Guidelines: While review process, it is very important to check whether all the standards and guideline are properly followed.
  5. Language used: Test cases should have a very simple language which is easy to understand.
  6. Functionality coverage: It is highly recommended that all the functionality associated with the system under test should be covered so that major defects are not missed.
  7. Replication: It refers to the duplicate test cases removal. It is possible that two or more test cases test the same thing and can be merged into one, this would save time and space.
  8. Redundancy: It refers to uselessness of a test case due to change in requirements or some modifications. Such test cases must be removed.
After checking all the above points, reviewer notes down all the changes/modifications required. Now, either he can have a discussion/meeting with the tester or he can send him the mail with the changes noted so that tester can go through them and make all the necessary modifications.

Points to remember/Tips while reviewing test cases:

  1. While reviewing test case, it is better to have a copy of SRS/FRD with you for the reference.
  2. If you are not sure about any test case or expected result, it is better to discuss with the client or your supervisor before making any decision.
  3. If possible then try to execute test cases on the SUT (System Under test) to have a better understanding of the results and execution steps.
  4. It is always better to have a face to face meeting with the tester to make him understand all the review feedback properly.
  5. It is recommended to follow version numbers in review process. For e.g. if you have reviewed a test case plan for the first time then make it v.1, after tester has made all the changes then after re review, the version would be v.1.1. In this way you will have a better idea which one is the latest and also you will have all the record of the changes made to the plan.
Test case review process sometimes helps in Defect Prevention. For e.g. if a developer is reviewing test case plan while writing his code, it is possible that it would help him in realizing the areas which could have the maximum defects and he can write his code in a more efficient way and hence, avoid any major defects.

How to become a Software Testing Expert in your Software testing career?

This is a guest article by Author “Swati Chaudhari”  She is currently working as QA Lead in the IBM, Pune. She is having total 7+ years of experience in the IT industries.
In today’s article we are seeing “How to become a Software Testing Expert in your Software testing career?“. There are many strong reasons to become a software testing expert so let’s get started.
First of all latest discuss “Who is a software testing expert?” Different people has different opinion when somebody says an expert, however I am thinking an expert is very highly skilled professionals who is able to produce great results.
The next question is “Why Become An Expert?” There can be reasons of prestige are greater professional satisfaction but in my opinion biggest reason of becoming an expert is that it ends up giving you more money, the main reason behind this is that it provides you more and better work opportunities and it provides opportunities to make more money.
The next question is “How to Become an Expert?” There are two steps to become an expert, first you should become very highly skilled in software testing and the second one is you should build your reputation in software testing industry.
Depending on your ambitions you may want to become an expert in your team, department, unit, company, industry, even in your country or the whole world. Depending on you do things and your efforts to become a software testing expert you may become an expert in any of these ramps.


Let’s see the first step in how to becoming a very highly skilled in software testing. There are some things you should do in order to become highly skilled in software testing. The first of all make a long term commitment to software testing, becoming an expert not an overnight process. So you have to make a long term commitment to getting very highly skilled in software testing. Then learn on a daily basis, there is a wealth of new articles, new blogs, discussions on software testing, videos on software testing that published every day. So make it a point that you learn something new about software testing every day. 

Simply learning new things in software testing is not sufficient; you should also practice testing every day. Then whatever you have learn and whatever you have practice, try to integrate that your existing knowledge.
When you work on projects to provide big values or results to your clients and always focus on the results, understand why clients want their systems tested and what will give the biggest return on their investment in you.

How to Become Highly Skilled in Software Testing Professional?

When you are working in projects, some of the things that can help you produce results for the following:
  • Review the system requirements often, that will give you a better class of the system requirements and also review the changes to the system requirements are there any changes to system requirements and you tested immediately to and you may find the better bugs.
  • Design and test with interesting test data, you can use several test design techniques like equivalence class partitioning and boundary value analysis, state transition diagrams, pair testing and so on and that will give you better results in your testing.
  • Negative Testing: Don’t be satisfied with testing positively but also test negative to see if negative inputs are given then the system is able to handle negative inputs correctly.
  • Test external interfaces and system configuration settings:
  • Instead of just focusing within the system make it a point to test the external interfaces and interfaces to other system. So these other systems can also change and the system you are testing should be able to communicate to and fro with these external systems correctly. One of the areas that are not tested very much is the system configuration settings. So you can make it a point to test out this system configuration settings and that lead you to find better bugs.
  • Generate ideas from prior bugs; you can also generate ideas from the prior that have been found in the system used to test ideas for better testing.
  • Create a To-Do list as you test for later testing, when you are testing you may get some ideas, so have a running to do list and when you finish your test you can go back to your to do list and do those test also.
  • Also test outside of your area, You don’t be satisfied with just testing the area that is assigned to you but also test outside your area that way you’ll have a bigger scope in which you find out more severe bugs or bugs that are across the different areas of the system.
  • Test at different speeds: One technique that you can use as to test at different speeds instead of just going through the test very rapidly slow down, when you slow down you will start to observe other anything that you were not observed before. That way you can do a more through testing.
  • Keep track of your bug reports, always keep track of the report the you logged, so that you can learn more from them.

Apart from these points you can bring your own methodology to provide the big value in testing. That is when you are testing in your project. So would you do if you’re not any project, still you learn everyday and you test every day? You can have a favorite or a pet project that you can test every day or you can contribute to any of the large number of open source projects out there and contribute to them with your testing. But make sure that you learn on a daily basis and practice testing on a daily basis.

How to build you reputation in Software testing?

The next step to becoming Software Testing Expert is to build your reputation in software testing. It is not sufficient that you are highly skilled in software testing, other people should know about but specially the people who can provide you better opportunities and better money. You also need to build a reputation in software testing. Here are the ways to accomplish or build your reputation:
  • Update your professional profile: if you are going to aim to become a software testing expert within your company, you should update your professional resume that is within the company updated with all the different skills you have. You’re different achievements or accomplishments, the results that you have provided. If you are looking to become a software testing expert like in your industry or even globally then you should update your public professional profile and add the different skills and your achievements over there.
  • Communicate often: It is not enough that you know a lot about software testing, you know how many different insights about software testing, and you should also share these insights with other people so that they also know that there is a lot to be learn from you in software testing.
  • Nurture your Supporters: The next thing to do is to nurture your supporter as you start to become a software testing expert you will find that there are some people who genuinely like you and who promote your work, who promote the good things that you do, so identify these people so that they can provide testimonials for your very high level of scale in software testing, provide you recommendations or generally spread the word about your accomplishments to others.
  • Go for difficult projects: then don’t shy away from difficult projects, so always volunteer for the more critical or more expensive or longer projects with more difficult projects. This will enable you to put all your skills to the project and then you will learn a lot from his projects and your contribution to such projects will be admired more by the people.
  • Share your Knowledge: If you have developed your own tools for your own software testing techniques or some documents don’t keep it to yourself. If you want to become a expert in your team then just share your tools, share your documents with other members of the team if you want to become software testing expert in your company.
  • Be interested in other projects: If you want to become an expert in your company, don’t just be interested in just your own project but also interested in other projects. There may be opportunities for helping others with your insights and your guidance.
  • Look forward to future: Always look forward to the future and try to find out what is happening in the software testing industry which way the industry is going. For instance years ago, projects use to execute in Waterfall models, however nowadays things are changing rapidly, so nowadays agile software development life cycle is more popular in software industry. You should check what new tools are coming in the market, what are what is the new process in software testing that you can prepare for the future also.
  • Be open to criticism but always respond logically: When you are becoming a software that some people may like to challenge the things that you say or some people may want to question you so always be open to criticism and this is a very common part of becoming an expert in software testing. But make sure that you always respond logically, build your case, provide data and recommend certain things on why you don’t recognize that certain things and respond logically.
  • Write and Speak: Depending on your aim towards the software testing career you should take necessary steps. If you want to grow in a software company then you can write in the company newsletter and if you have to speak then in the company you can speak in the training, in meetings. You can start your own blog if you want to become expert in a bigger. If you want to become expert globally in software testing then you can speak at the different conferences. In the initial career you may not get an opportunity to speak the bigger conferences but you can start with small and get opportunities to speak. So whenever you get the opportunity to write and speak to use those opportunities build your reputation in testing.

Mobile App Testing on Cloud ...............

1) Mobile App Testing on Cloud:

To test mobile applications use of the Cloud testing is one of the most successful choices. Using Cloud based approach you can achieve the Native and Hybrid Mobile Apps automation testing. This automation testing approach can be used when long-term automation testing is to be carried out over multi-platform and predefined set of devices. Cloud-based automated solutions are highly effective as they are offered as a unified package. Once the deployment is done on cloud lab then you just needed a connectivity to cloud lab to kick off you testing from anywhere.
Using Cloud based approach will reduce the time to setup the test environment which generally cause the project delays. The cloud provides a pre-configured, highly synchronized architecture, strong server configurations, licensing, and testing resources. As a result reduced time-to-market and augmented testing competence. So defects get rapidly reduce which may occurred due to the faulty configuration of test environments. It help to increase the quality of application.
One of the great advantages of cloud approach is the amount of scalability with real time results, which means defects can be analyzed while the tests are running.


Mobile Application Test Framework


2) Lab-based Approach:

In Lab-based automation testing you need to set up different tools in a testing environment and leverage simulators or physical devices to automate testing using different tools. In the market there are different capability tools are available for a lab-based approach like EggPlant, Jamo, See Test, ZAP and SilkTest etc. These automation tools can be used for continuous automation testing or to accomplish regression testing functionalities. Few of them also supports the non-functional testing features related to mobile apps.

3) Open Source/Platform-specific Tools:

In QA automation testing strategy the testing to check platform-specific tools reliability should be carried out at least once. There are different mobile testing tools available in the market like Appium, Calabash, Frank, MonkeyTalk, iOS UI Automation, Robotium, iOS-driver, Ui Automator, KeepItFunctional and Selendroid etc. But before starting testing on Open Source/Platform-specific Tools you should have added programming skills in your team. Also the mobile device simulators and emulators can be used for testing.

Advantages of Mobile Test Automation:

  1. Same test scripts can be executed repeatable
  2. Help to increase the testing efficiency
  3. Help to enhanced the regression tests case execution
  4. Multiple test cases can be executed with less time
  5. Better utilization of time by running test script over 24/7 time.
  6. Test scripts can be executed parallel on several devices at the same time.
  7. Once the test scripts are ready, human resources do not require manual interruptions to execute the scripts.
  8. Same test cases can be executed across different mobile platforms, so the scripting time can be minimized and same time can be used for more test coverage.

Conclusion:

In this article we conclude following few points:
We need to think of perfect automation strategy to execute a successful QA and helps to get mobile application on time and on budget.
We need to find the mobile testing automation tool which can help you to execute the same test script across platforms. As a result the scripting time can be minimized and same time can be used for more test coverage.
We need a mobile automation tool where you can configure a test setting for different device to test out the application over variety of connectivity modes.
Tool should be platform independent and allow you to create true end-to-end testing with a single test script possible.