Latest News

Showing posts with label Software Testing. Show all posts
Showing posts with label Software Testing. Show all posts

Wednesday, April 25, 2018

Unit Testing? Consider Taking a Rain Check


Unit testing is a great way to verify software at an early stage and to ensure that modified functions are still working as specified. Unit tests can also help drive development, essentially working as a specification-by-example technique. Unit tests usually work for individual methods in a class, and for each execution of a unit, test a set up and tear down of an instance of the class of which the methods are members.
However, unit tests are not a magic wand. Many of them will typically be low-level routine tests, calling function (method) and checking the result of that function. However, if the function under test has complex dependencies, it will take more effort to create tests for it. The dependencies can be on other functions or even on other components or external services. It can also require certain values in a database and/or modifying them. The effort to establish the proper pre-conditions for a test at unit level might not be worth it.
Rather than making such a big effort, consider taking "rain checks" for certain tests. Test the aspect that can be tested immediately, but save some of thecomplex testing for later. Achieve the testinggoals by higher level tests at the level of components, services, or even the UI.
In this approach, you would analyze for a function what test situations are needed to test it. Then, you would establish the closest higher level at which those situations can be created more easily. This might often be the component level, but it could also be the UI level or in interoperability testing. In the test design for the chosen level, you make sure that the test situations for the units have been covered. This will ensure that the function at unit level has been exposed to the situations necessary to test it.
Making sure the needed situations are covered at a certain test level does not necessarily mean each function gets its own test case there. The verification can also be part of a larger comprehensive scenario. This is probably even better in most situations, so tests don't get too granular.
A major advantage of unit tests is their ability to verify code changes. They are closely related to the code and get executed whenever there are changes to that code. In a rain check approach, this link with the code must be kept intact. In the Action Based Testing method, this can be done via an entity called "test objective". Test objectives are natural language statements that can link the test cases to other items—in this case code files or functions.

Unit tests are a beneficial part of system development processes. They allow the teams to build automated verification that keeps up with the code. With a rain check approach, the advantages of unit testing can be supported by the levels of tests where it is most economical to do so. It is up to the team to decide in which cases, if any, this can make sense.
Source: Techwell

Thursday, December 17, 2015

What to look out for when approaching software testing?


With increase in the evolvement of software development process maturity, software testing processes need to adapt to quality attribute needs and customer requirements. Software companies have been pressurized to deliver quality software products more quickly. It is creating a competition between software companies to gain market leadership. To achieve success in this competition, these companies need to run development activities along with testing very efficiently. A thing that one should look out for when approaching software testing is the value or ROI in terms of reduced testing time, reduced efforts, reduced costs from the amount that is being invested.

With constant increase in the application complexity, software companies cannot avoid testing whether it has to be implemented at the end of the cycle or to be performed throughout the development life cycle. Many companies face sudden increase in testing costs due to not having a proper test strategy and efficient operational capability. The problem also might rise when any defect goes missing and finding it after the launch of the product or even when any defect goes into the next stages of life cycle.

The power of Internet has been helping companies all across the world in reaching out to the increasing online customers through promoting their products. To attract more and more online customers, these online business based companies want their websites or web applications to perform flawlessly at all times. They are looking out for quality application to support the growth of their business. To identify quality of their application, they are approaching software testing to identify the Functional, Performance, Security, and compatibility issues before customer does.

People who think that software testing is a tedious, time-consuming and it consumes a lot of money, people look out for software testing services that come for very low cost and the ones which is in their budget. Many of the people are not aware of the reality that an application needs to undergo comprehensive or End-to-End Testing to be able to perform flawlessly in the real time. Additionally, due to the time and budget constraints, some people only perform Ad-hoc testing. Ad-hoc testing is what some stake-holders likes to do it post it goes through comprehensive testing, but it doesn’t help in identifying all the latent issues in an application when it is carried in the actual testing time. It could bring heavy loss and harm reputation for the businesses.

It is crucial to find an appropriate software testing vendor who can adapt to changing requirements. If the company is performing testing using its in-house test environment, the company needs to find appropriate tool, appropriate resource for the right task. On the other side, there is an increasing demand for Automation Testing which is helping to test faster. This still not help an application as it has to get tested with many other types of testing. It suggests that one should have multiple testing tools, relevant test engineers and required infrastructure. All these are challenges which lead to time consuming.

For example, people who perform only functional testing of their applications, there can be an issue with the performance of an application, because performance testing is also important. Moreover, there are other types of testing, which need to be deployed to cover all the quality attributes. It might be due to time and budget constraints that companies skip End-to-End testing. However, cloud-based software testing providers are emerging in a rapid pace and most of them are providing testing solution or service on a ‘pay for what you use model’. Cloud based testing could help businesses of any size in saving a lot of cost and time. Not many companies are offering End-to-End software testing on cloud. Companies need to approach a vendor who can provide reliable and effective End-to-End Automation testing. It would be right solution to reap maximum value out of testing.

Source: https://www.clictest.com/

Friday, November 27, 2015

Manual vs. Automated Testing – What’s the Right Mix?

Automation is ideal for continuously running sanity checks to verify that the development crew didn’t unintentionally break something. The problem with automation is one of resource availability. Placing heavy emphasis on test automation means allocating highly skilled resources to it and, even if they are initially available, the odds are that they will be drained away by the press of code development. That leaves the question of test script maintenance up in the air. An alternative approach is to maintain a script library that operates and verifies all the features at a fairly shallow level. The tests exercise the code without stressing it in any way. This ensure nothing was severely damaged by a change such that a feature stops operating or does something unintended.
The requirement for new features to be tested in detail can be filled by manual testing where a test tech explores the new feature the same way a user would. This places a strong focus on carefully testing the newest code, which is most likely to harbor new bugs.
Resource tug of warThe make-or-break for test automation coverage is resource allocation. How many skilled developers is your organization willing to task with automated script creation and maintenance? Writing test scripts requires the same skill set as code generation in an individual who has a proper understanding of the product’s intentions and a tester’s approach to verifying  implementation. Assigning the necessary staff to maintain full coverage of a system can quickly approach the same cost level as creating it in the first place.
Failure to maintain the script libraries and update them alongside the release of new features risks their becoming obsolete and reporting false failures that eventually discredit the entire automation process.
BalanceMost companies work to strike a balance between automation for repetitive, predictable tests and manual, exploratory testing for newly coded features. This allows a sanity check to catch collateral damage and detailed verification to get the new code just right.
Successful test automation hinges on allocating sufficient resources to script maintenance. A winning strategy is to backstop your automation effort with manual testing where it makes more economic and skill application sense to do so. An external test services company can provide flexible test techs and engineers who can come up to speed quickly to get new code and features verified while the in-house team is putting test scripts in place for sanity checks and regression testing.
Check out the white paper for a full discussion of manual versus automated testing and where each excels.

Source: https://www.qualitylogic.com/community/index.php/manual-vs-automated-testing-whats-the-right-mix/

The Top 5 Skills for Future Software Testers

The software field grows every year, and so do all of the individual facets it contains. We can personally attest that software testing companies are expanding, looking for talented folks interested in pursuing a career in testing and QA. That’s why we just published a QA jobs website , to help guide those who are interested in joining us here at the US’s largest software testing company. Careers in this industry are satisfying and fast-paced, but they aren’t for everyone; here on the QualiTest Blog we decided to look at the top 5 skills for future software testers today.
A software tester’s biggest job is to mentally get inside a system, figure out what makes it work, and come up with interesting ways to “break” it.


  1. Logic and analytics – any career in the tech field will need this one; figuring out how things work correctly and independently is a godsend to software-related teamwork, as it means you’re likely to come to the right conclusions with little to no handholding.
  2. Communication – It’s by far the most important skill for software testers old and new, as without it, testers have no idea what they’re supposed to be doing, and stakeholders have no idea what’s going on with their project.
  3. Creativity/ability to think outside the box – a software tester’s biggest job is to mentally get inside a system, figure out what makes it work, and come up with interesting ways to “break” it.
  4. Understanding of business processes – similar to the above, this skill allows you to better understand a system, and how can you test the functionality of a system you don’t understand?
  5. Some amount of technical understanding – your employer won’t expect you to be their new IT admin, but you should have some basic understanding of how the program you’re testing works, and how the hardware you’re using to do so works as well.
If you have these five skills, congratulations! You’ll probably be an awesome software tester (and you’d also be great at a bunch of other careers in IT/technology). If you don’t, you’ll definitely be at a slight disadvantage, but most of them can be picked up with a bit of hard work. The best thing about these skills is that they don’t necessarily require prior hands-on experience in software development or testing; sure, the only real way to learn to test is by actually testing, but the above skills can be sharped from just about anything – college schoolwork, part time jobs, or experimenting with technology in your own free time. Software testing is great like that.

Source: http://www.qualitestgroup.com/blog/test-methodologies-and-philosophies/top-5-skills-future-software-testers/

How to Write Test Documents

When beginning a Software Testing project, several documents must be prepared as part of the process. These documents include a Test Plan, Test Scenarios and Test Cases.
It can be difficult to start these documents from scratch each time that you begin a new software testing project. Knowing where to begin is one of the greatest challenges in writing these plans. Using a template that has a detailed outline of required information can assist in this process.



Creating a Test Plan

A Software Test Plan (STP) documents the requirements that will be used to verify that a product or system meets its design specifications and other requirements.
The STP prescribes the objectives, approach, resources and schedule of all testing activities. The plan must identify the items to be tested, the features to be tested, the types of testing to be performed, the personnel responsible for testing, the resources and schedule required to complete testing, and the risks associated with the plan. The Test Plan should also discuss any deliverables for testing, including references to test scenarios.
A test plan is usually prepared by a team lead or test engineer, with significant input from developers.
For an example of a Test Plan template that has been assembled by QualiTest, please refer to the link above.

Creating a Test Scenario

A Scenario, also known as a Test Condition or Test Possibility, identifies the functionality to be tested. A Scenario includes a set of test cases to ensure that the business process flows are tested from end to end. They may be independent tests, or a series of succeeding tests, each dependent on the output of the previous one. Any connection to the test plan should be referenced in the test scenario.
For an example of a Test Scenario template that has been assembled by QualiTest, please refer to the link above.

Creating a Test Case

A test case is a set of conditions or variables from which a software tester will determine whether an application, software system or a feature is working as it was intended. It may take many test cases to determine that a software program or system has been sufficiently scrutinized before released. Test cases are often referred to as test scripts after being written and collected into test suites.
The characteristics of a good test case are:
  • Accurate: Expressly articulates the purpose.
  • Economical: No unnecessary steps or words.
  • Traceable: Capable of being traced to requirements.
  • Repeatable: Can be used to perform the test as many times as necessary.
  • Reusable: Can be reused if necessary.
  • Independent: Each test case should be executable in any order, without any dependency on other test cases.
  • Concise: The description of a test case should be simple and clear. A tester should be able to understand it by reading it once.
For an example of a Test Case template that has been assembled by QualiTest, please refer to the link above.

Tips For Templates

  • Before writing any test cases, one should concentrate on the various scenarios which the product will face at a customer’s site.
  • Because plans, scenarios and cases form the base for future test cases and testing, you should designate sufficient writing time, followed by a thorough review process.
  • Scenarios should be brief and succinct. The purpose of a test scenario is not to provide details, but to convey a specific idea about testing a particular case.
Source: http://www.qualitestgroup.com/blog/testing-tools/write-test-documents/

Thursday, November 26, 2015

Visual Testing: A Necessary Component to DevOps

As we all know, continuous integration and agile methodologies are on the rise, meaning that companies are releasing tons of software releases – not just in a month, not just in a week, but on a daily basis. With this increase in releases, it can be extremely difficult to ensure that you are thoroughly testing every webpage, every visual element, every User Interface (UI), with every release, and knowing with certainty that any new code hasn’t broken the appearance and layout of your application.



So what is the answer to this conundrum?

That’s exactly the question that our friends at Applitools are trying to answer, and they may have cracked the code with their foray into Visual Software Testing.

Visual Software Testing is the process of validating the visual aspects of an application’s UI. Visual Testing focuses on validating the layout and appearance of each visual element of the UI and of the UI as a whole, as well as ensuring that the correct content is displayed. Layout correctness means that each visual element of the UI is properly positioned on the screen, that it is of the right shape and size, and that it does not overlap or hide other visual elements. Appearance correctness means that the visual elements are of the correct font, color, or image.

Adam Carmi, one of Applitools’ Co-Founders, conducted research of image processing algorithms that can imitate a human tester’s eyes and brain and has come up with a set of algorithms that finally did the work! Based on those algorithms, they built their tool around the premise that it must inspect the application’s UI just like a human does. This means processing entire UI screen images rather than isolated image fragments or opaque UI objects within the application. Advanced image analysis is required to reduce false defect detection and to pinpoint the root cause of detected changes. For example, the tool automatically categorizes the difference as a content, layout or appearance defect, and pinpoints the specific UI elements that caused the defect. Another aspect of a successful visual testing tool is ensuring that the tool is smart enough to highlight and resolve each detected change only once – even if it appears in multiple screens of the application.

The motivation for performing visual testing has grown dramatically in recent years. Software vendors invest huge amounts of effort, time and money to design and develop user interfaces that stand out from the crowd and meet ever increasing customer expectations. Vendors must verify that their UI correctly displays on an ever-growing variety of web-browsers, screen resolutions, devices, and form-factors, as even the smallest UI corruption can result in loss of business. To keep up with the stresses and agility of continuous integration environments, software vendors are either going to have to keep performing the drudgery of manual testing, or move on to the thrills of visual testing!

Source: http://www.qualitestgroup.com/blog/testing-tools/visual-testing-a-necessary-component-to-devops/

Monday, October 19, 2015

Offshore Software Testing

ABC

Recent Post