Posted by: In: Testing 15 Nov 2013 Comments: 0

“Before a code can be made reusable, it first needs to be usable”
The ultimate usability of a software relies heavily on the correctness of code. An application with its roots in an unique idea no matter how out of the box it may be, is of no value till it has been tested and validated.
manual-testing

Why Manual Testing?
There exist a large number of programmed testing practices and methods that help ensuring up to the mark code quality and reliability. But, Software testing is complete until it has been tested with the keenness of human mind. Manual testing is a testing technique wherein all test operations are performed manually without the help of any automation. Obviously it requires that the testers be more patient, observant and speculative when they look for unexpected software behaviour.

It offers a few obvious advantages:

* When the number of test cycles is small

* When random tests need to be performed

* Reduced short term costs

* More scrutinization of code possible as more time is spent

Manual Testing Over Automated Testing
In order to save time and resources, software companies generally opt for automation of testing wherever possible but no amount of automation however rigorous can ever replace manual testing. At least not until technology can imitate the human brain. Without doubt, automation driven test cases reduce human efforts and save a lot of time but they do only what they have been coded to do. Also automated testing is susceptible to machine defects. Say if due to an unwarranted virus attack the testing is interrupted, then the whole process might have to be undertaken again. On the other hand, manual testing makes it possible to harness human qualities. With manual testing, you can apply innovativeness and analyze the code from new angles and test for bugs accordingly.

Best Practices in Manual Testing
Manual testing is the oldest and yet the most efficient kind of testing methods that exists in the software industry today. MetaDesign Solutions a leading software development company has achieved competence in all of the different stages of manual testing:

* Exploring and understanding program functionality

* Preparing test environment

* Recommending test cases

* Manually executing test cases

* Result verification

* Recording the result

* Making a summary

* Recording new defects uncovered during testing

Be it Unit testing, Integration testing, System testing, User Acceptance testing, Smoke testing, Performance testing or any other kind of testing that involves diligent manual efforts, experienced testers working at MDS keep their watchful eyes open and intrusive brains focused to ensure a trustworthy test support to its global clientele.

Automation is a great revolution but it’s wisest to not try and automate everything because what manual testing can do is irreplaceable by any amount of automation. A detailed, astute manual testing is really the key to a reliable snag free software.

Posted by: In: Testing 15 Nov 2013 Comments: 0

“The real test of a system is when it is under pressure”

Even if a software has been tested and verified for correctness of code and functional aptness, the system is susceptible to failure if it has not been tested under load conditions.
Load Testing : is that type of testing where the system behaviour under anticipated load scenarios is checked. Surveys reveal that the average time an internet user spends in waiting for a web application to load is not more than five seconds. So if you want to keep your customers engaged it is mandatory that your system goes through robust load testing. Load testing entails simulating traffic expected during peak usage hours and measuring the response:

* performance

* response time

Load Testing

There are certain web applications that are accessed by multiple users simultaneously like
e-commerce portals, flight booking sites, online encyclopaedias and more. In such cases load testing is of vital importance as it becomes imperative to ensure that even after attaining functional stability, the system does not break down.

For example a railway ticket booking website is likely to receive huge amount of traffic during vacation season. To make sure that it can handle maximum number of users it needs to be put through load testing where the weak links causing system degradation can be identified and worked upon, therefore increasing the number of concurrent users along with reducing delays.

Load Testing With MetaDesign Solutions
Load testing is in no way a simple task. It involves a number of time taking steps that need to be executed properly to eliminate performance bottlenecks of any kind. There are innumerable actions that a user performs on an application. It would be a complicated, costly and taxing process to test all of these under load test.
You need to pick only those user actions that affect performance under real life load situations.
Based on users’ actions, MetaDesign Solutions works on the basis of scenarios that help make guidelines while load testing:

* User actions or scenarios to be tested must be measurable

* Most frequently hit scenarios

* Scenarios that demand more resources

* Business critical scenarios

It is ensured that all user actions that are to be tested fall under either one of the scenarios so that they can test as either “pass” or “fail”. With expertise in a number of load testing tools like Loadrunner, Silk Performer and Web Load we display sound planning, diligent efforts and quality resources.

Tools used for Load Testing
Load Testing using Apache Bench
ApacheBench is an easy to learn and simple to use, handy webserver based load testing tool. It does not require in depth knowledge of load testing concepts and can be run from the command line itself. We use Apache Bench for producing quick load testing outcomes.

Load Testing using SOAP UI
SoapUI’s, LoadUI is a free load testing tool that makes load testing in SoapUI more efficient. We have customized LoadUI in a manner that allows you to create and modify quick performance as well as load tests. With SoapUI it is also possible to run several load tests simultaneously.

Load Testing using Apache JMeter
A load testing tool by Apache, JMeter essentially focuses on the performance of web applications. JMeter is also used to test loads on JDBC database connections, Webservices, FTP, LDAP, HTTP, Native Os processes, JMS and generic TCP connections. Our Apache JMeter load testing supports a range of load testing features implemented with plugins.

Blitz
Blitz is a popular cloud-based load-and performance-testing tool. Its highlight is that it allows up to 50,000 concurrent users from multiple geographical locations to access the server in a matter of seconds. With Blitz, we have the power to test APIs, web applications, mobile applications and websites to counter infrastructure weaknesses.

Load Impact
A cloud-based load testing and website optimization tool, Load Impact offers what is known as freemium service. This means that it has a free as well as a premium option. We have access to all its features through the premium service thereby performing better load tests on browser behavior, page analysis, slash-dotting and more.

Load testing imparts to the system a sense of confidence by increasing its scalability and reliability. It allows testers to develop strategies for protection against performance leaks. Production environment is under minimum threat to snags if the software application has passed through sturdy load testing.

Posted by: In: Testing 15 Nov 2013 Comments: 0

What is Regression Testing?

Fixing one defect makes dependencies susceptible to defects.

Once a release has gone through the development phase, software testers perform a functionality check to verify the correctness of the latest update or change made to the code.
Fixing a bug caught in any part of the application enhances the likelihood of bugs finding their way to other portions of the code, including those that are not directly related to the affected portion.
In order to ensure overall product quality it becomes imperative to ensure that fixing one thing has not led to breaking up another.
Regression testing is the retesting of a software system to confirm whether existing functionalities have been affected due to changes made to few parts of the code and ensuring that they are still working as they were before introduction of the new change.

Why Regression Testing and When to do it?

Regression testing is most useful when conducted during system testing

Ideally every release mandates that the code be checked for unexpected new problems, called regressions. Apart from a high code quality regression test would also ensure that the time spent on bug fixing is distributed and well managed.
At MetaDesign Solutions, we understand that neglected regressions from previous stages can pile up, increase at an exponential rate and have a cascading negative effect making testing an unmanageable task once the regressions become noticeable, which it eventually always will.

regression testing

Regression testing is a normal and vital part of the Software Testing Life Cycle. Already developed test cases from the testers test bucket are executed against the new software version to make sure that the results are unchanged; positive cases are still giving positive results and negative test cases are still negative.
Regression testing can be performed during any phase of testing be it Unit, Integration, System, or Acceptance. But when the code is being checked for compliance with an integrated system as a whole, testing for regressions proves most beneficial. The time and resources applied for regression testing can be economized during system testing as it also evaluates the program with respect to certain specified requirements. Testers at MetaDesign Solutions are strong believers in performing frequent regression tests thus ensuring improved effectiveness.

Regression Testing
Types and Alternatives to Regression Testing

By now you have already understood that software development would no be possible without regression testing. A thorough regression test requires a number of test cases to run repetitively, which software companies generally prefer to automate for obvious reasons. It is most suitable to conduct a retest of all cases in a test bucket but sometimes due to constraints of time, use of multiple development and test platforms, product scenarios, geographically distributed teams and other unforeseen reasons, conducting time consuming retest of all test cases is not impossible.
In situations where few if not all of the hindrances are mitigated, you have to prioritize test cases based on criticality and frequency. Test cases can also be categorized on the basis of usability for retest as:

* Reusable Test Cases, that can be used in succeeding regression cycles

* Obsolete Test Cases, the use of which can be dropped in order to avoid redundancy of unwanted test cases.

The ultimate alternative to a detailed regression testing is impact analysis where only those portions of the software are tested that have the highest probability of being affected by a change.

Posted by: In: Testing 15 Nov 2013 Comments: 0

What is Selenium?
The regular computer user today, makes use of web browsers and browser based applications for most of his internet needs. The increased use of web applications signifies our preference when it comes to adopting a mode of accessing the internet.
The development of any application web based or otherwise, is incomplete till it has been tested for correctness and performance. With the popularity of agile testing methodology and test automation, it has become possible to:

* increase the speed of testing

* conduct virtually unlimited repeat execution of test cases.

* deliver flawless user experiences via interactive web applications.

If you ask any QA and Testing expert about the most reliable and widely used software testing framework for automating web applications, the answer would be Selenium. It is an open source portable test automation tool that ensures effective test automation for rapid isolation of bugs. It runs directly on the web browser and crawls the web application negating the need of code replication between http client and testing framework. Selenium allows ongoing testing of Graphical User Interface via efficient automation.

Versatility of Selenium
Selenium is a collection of record and playback tools which are related yet different in their application. According to your needs, you can choose and put together your own Selenium based testing system.

* Selenium Core :For web applications written in JavaScript and DHTML It supports all the popular web browsers along with their different versions. Selenium core makes use of the scripting capabilities of these browsers through a JavaScript enabled TestRunner which allows tests to be run directly from a browser.

* Selenium IDE :Firefox add-on An Integrated Development Environment written in JavaScript that is available as a Firefox plugin, it is used to develop Selenium test cases. It captures your interaction with a web application and converts them into test steps that are collectively referred as a test case. The success or failure of the recorded actions verifies the expected behavior of the application.

* Selenium Remote : To execute Selenium tests automatically Selenium Remote Control or Selenium RC tests can be written in a number of programming languages including C#, Perl, Ruby, PHP, Java and Python. It gives you the ability to create more complicated tests than those written in Selenium IDE alone. Selenium IDE allows integration of language/platform specific test frameworks like JUnit. Tests written in Selenium RC can be run automatically as many times as you want.

* Selenium Grid : extension of Selenium RC It allows you to conduct parallel execution of tests simultaneously in continuous integration systems. This increases drastically the total system throughput. Selenium Grid can run on your PC as well as on the Amazon (EC2) cloud computing service.

Selenium Web Driver
In the most basic sense, a tool that writes automated tests of websites is known as a web browser. The WebDriver API is a recent addition to Selenium’s 2.0 version. It mimics the behavior of a real user to interact with the application’s HTML, facilitating browser automation by driving a browser natively using the Selenium server. The Selenium WebDriver accepts commands usually sent via a client API and sends them forward to a browser. A browser driver actually redirects the commands to the browser and retrieves results.

What really sets Selenium 2.0 apart from its predecessor, Selenium 1 is that it does not need a special server to run tests. Instead it directly starts a browser instance and controls it.

* Selenium WebDriver follows a simple design and more compact programming interface.

* It addresses some limitations of the Selenium-RC API.

* WebDriver is a concise Object Oriented API when compared to Selenium 1.0

* Browser automation is achieved much more effectively.

* With the inclusion of WebDriver, Selenium 2.0 overcomes the limitation of Selenium RC’s Single Host origin policy.

Selenium Testing at MetaDesign Solutions
MetaDesign Solutions has been continuously wowing its clients with excellent web based applications. Be it quality of product or efficiency of service, the aim is to deliver to clients exactly what they bargain for within the decided time frame. In case of rich web based applications involving much more complexities than what meets the eye, how is this ensured? With the help of Selenium! Professional testers have gained mastery over Selenium by learning its benefits:

* Tests using Selenium can be created without learning any test scripting language.

* Its Record and Playback feature acts as time saver and also lets you learn Selenium script syntax.

* Test cases can be written using a number of languages such as C#, Perl, Java, PHP, Ruby, Python and Selenium’s own “native” HTML based language.

* It supports multiple test frameworks.

* The same set of scripts can be run on multiple browsers

* AJAX web applications can be efficiently tested

* Selenium is a community supported framework

With immense amount of expertise in automating web application testing using Selenium gained gradually over time, MetaDesign Solutions has been successfully delivering quality testing.

Posted by: In: Testing 15 Nov 2013 Comments: 0

Test automation : The use of software to control code debugging, comparison of actual results with the expected ones and determining whether the application functions as predicted. All this done with minimum or no human intervention is what is known in the software industry as automation of testing. Manual tests form the oldest and most elaborate form of testing and although they may capture many defects in a software application, it is an accepted fact that manual testing is laborious and time. Prone to human errors it can also prove unreliable sometimes. Test automation comes as a respite to testers by allowing automation of repetitive time taking manual processes. Few blarring reasons that attract testers and software companies towards automation are:

* Significant savings in terms of both time and money

* Improvement in the testing process

* Enhanced software quality

* Reduced time to market

Finding the The Right Test Tool
With a variety of automation tools available at your disposal it becomes a daunting task to choose an automation test tool for your application. It also becomes extremely important that the best suited test automation tool finds its way to the application in question. The first step is to identify the type of application under test and what part of the testing you want to automate.
Due the development intricacies like cross platform compatibility, enterprise class programming, end to end tooling and more, testing Flex applications can be a tedious and time consuming affair without test automation. You need to open the application up, make a few clicks, verify the result, alter the code accordingly and then repeat the entire process all over again. FlexMonkey is a highly effective testing application by Adobe that simplifies all these manual steps for testing Flex and Adobe AIR applications.

FlexMonkey for Flex
One of the leading solution providers of Flex and Abode AIR applications, MetaDesign Solutions has gained a sound command over FlexMonkey, a Flex testing tool which is rather new but is quickly gaining popularity in the Flex community. An open-source automation test tool used for testing Flex and AIR based applications, FlexMonkey is a record and playback testing tool. It leverages the Flex automation framework to record all your actions right from simple clicks to text entries even while you are working and play them back, intervening and editing while doing so. GUI interactions with Flex application can also be productively verfied with FlexMonkey. One of the greatest features of FlexMonkey is that it is compatible and can completely integrated with applications built with Flex 3.0 through 4.5 and bodes especially well with test driven ones. With Flex Monkey you can run manual tests through FlexMonkey AIR application or generate ActionScript-based testing scripts that can be easily included within a continuous integration environment.

In most simple terms its basic highlights for a software testing company are:

* Free and open source

* Record interactions in a test folder

* Organizing test folders into test case folders

* Adding assertions to check response

* Drilling the view components

* Playback

* Browse results

* Tests can be run on a continuous Integration environment as well

Posted by: In: Testing 15 Nov 2013 Comments: 0

What separates testing HTML5 applications from testing other type of applications?

The HTML5 umbrella encompasses HTML, CSS and JavaScript to build rich applications and sites for the web. With improved functions for embedding audio, video and other interactive content, HTML5 is designed to do anything and everything you may want to do online without the need for additional software. One of the biggest attractions of HTML5 is that it is cross platform compatible which means that an HTML5 application runs alike and flawlessly on all devices, be it desktop, mobile, laptop tablet or any other.
Testing of such an application would require the testing tool to provide the right tradeoff between technical versatility and convenience. Most of the HTML5 applications can be tested directly in either of the browsers; development environment or the target environment. In case of hybrid web applications that use additional APIs to access certain native features of the intended device like camera and data storage units, the testing tools need to be backed up a support for these APIs.

Best Practices for Testing an HTML5 Application

Testing on the host machine
Testing tools like Selenium allow you to test the functionalities of the application within the browser itself. MetaDesign Solutions has gained immense experience in Selenium testing which allows easy record and playback of automated tests.
For white box testing, the browser’s in built debugging tool plays a vital role for example Google’s Chrome developer tools. It lets you set breakpoints in your Javascript code and carry out full bux fixing. Debugging is also possible using the Document Object Model (DOM) that displays the HTML elements being rendered. In addition, it also gives an access to the application’s JavaScript console that lets you interact dynamically with the application.

Remote Debugging
For debugging HTML5 applications on mobile devices with smaller screen size there are testing tools that offer remote debug solutions. Tools like Intel’s HTML5 Development Environment allow debugging of a code running on the target environment using a debugger running on the host environment. For example on you could use chrome for Android on the target machine with desktop Chrome on the host in order to carry out debugging. Since hybrid web applications are built using cross browser supported PhoneGap, remote debugging does not work well with them.

HTML5 Application Testing with MetaDesign Solutions
MetaDesign Solutions delivers excellent HTML5 based applications to its global clientele, putting together all blocks as expected. This would not be possible without skillful testing methods. Tremendous experience in testing HTML5 applications has allowed us to put together best testing practices and develop quality rich HTML5 products. HTML5 application testing practices at MetaDesign check the correctness and verify the working of:

* Online as well as offline HTML5 applications

* Recorded automated tests for new HTML5 tags

* Loading of audio video elements is using the testing tool’s API

* Cross browser compatibility

* CSS3 codes

* JavaScript calls

* Drag and drop functionality

Posted by: In: Testing 14 Nov 2013 Comments: 0

Software solutions offer to users, solutions or workarounds about tasks that were otherwise being difficult to accomplish. If developing a logical set of steps to achieve a solution serves the purpose, then one may wonder why testing is important for software. But the real question to be asked here is what good is a software that has not been tested for correctness?

Software testing is important in order to ensure that:

* It gives the expected results

* Product quality is improved

* The software is in compliance with design standards and guidelines

* Customer requirements are met

Say for example you make an online payment of your cell phone bill using your credit card. A message received on your phone confirms that the money has been debited from your account. One day later you still get a reminder to pay your bill. Now you are irritated with the number of calls and probable trips you may have to make to the office of your network provider.
This is a software glitch that could have been identified well before deployment and hence avoided if the validation and verification of software had been a thorough one.

Test Case: A set of conditions that under a given environment can be used to check the correctness of an application. Test cases can be designed to check two things about a software, firstly if the normal path of execution gives the expected results. Secondly if the software sustains cases that try to break the system. Good test cases rip open the the software with the intention of finding errors, allowing developers to check and double check till there is absolutely no scope of any more snags.

Types, Objectives and Methods
Traditionally testing is done on code completion after all requirements have been defined in the application. Although this ensures testing, verification and integrity of the code it slows down the whole development cycle. A newer testing technique called agile methodology is quickly gaining popularity, it allows on-going testing as the development proceeds. So, bug fixing need not wait till completion of entire development. Testing and code correction can be done back to back in sprints as and when errors are detected saving valuable resources.

scrum_process_feedback1-1023x308

Based on Methods testing can be:

* Static

* Dynamic

* White Box

* Black Box

* Grey Box

Based on Objectives:

* Unit

* Integration

* System

* Acceptance

Typical Software Test Cycle
Compatibility testing, Destructive testing, Localization, Internationalization, Security testing, Alpha testing, Beta testing, Smoke testing, there is a plethora of testing types out there, few or all of which can be employed to detect bizzare software behaviour if any. But A test cycle typically involves few common steps:

* Requirements analysis

* Test planning

* Test development:

* Test execution

* Test reporting

* Test result analysis

* Retesting

* Regression testing

* Test Closure

Software Testing
“You get only one chance to create the first impression”

MetaDesign Solutions has a deep understanding of the importance of testing in the software development lifecycle. With a stable and robust testing system in place complete with test cases spanning all possibilities, defects are captured well in time. This also entails clients to invest minimal amount of money and time in bug fixing. MetaDesign Solutions makes sure that all its products and software solutions are tested for functionality, performance, robustness, scalability and usability before they are released to the end user.

Consumer and Testing
A software that does not deliver the expected or does so with glitches can cause more frustration than relief. It obviously also adversely affects the profitability and reputation of the company.
Consumers tend to be loyal to service providers who deliver reliability by eliminating rework. Everyone enjoys and appreciates perfection especially when it comes with the first attempt. A satisfied customer is more likely to spread a good word about a company that pitches exactly what is promises than one which achieves targets but with repeat cycles of defect detection, bug fixing and redeployment.

images

With more valuable assets left to spare for customer relationship building, the faith and trust of clients remain intact. A solid software testing is indispensable to stay in business!