Friday, January 21, 2011

Testing is better than devolpment

Pick-up any recruitment newspaper of the week and you will find a list of companies advertising for test engineers. This was not the case a few years ago. Today the role of a test engineer has found new respect in the product development process, playing a strategic role in moving product quality upstream.

This article aims to define the evolving job profile of a tester from what was earlier a low-profile, non-challenging job - to today, where he is considered a key part of the entire development cycle.

A typical software product development cycle consists of requirements analysis, design, coding, testing, bug fixing and the stabilization phase.

Testing, as a part of this process should ideally be used across the development cycle to help identify and ascertain the correctness, completeness and quality of ensuing product. Even the best product is likely to fail if its software component is not tested throughout the development stage.

Testers today promote the customer's point of view throughout the product cycle, from the first nascent product vision to the eventual product release and ongoing maintenance. Testers are human meters of product quality and should examine a software product, evaluate it, and discover if the product satisfies the customer's requirements. A good tester should be a good engineer as well, and should be perceived as the ‘developer's eyes to overall improved quality and functionality.’

Testing therefore, has to evolve as a career – with companies educating and training their test teams about the new challenges and opportunities in the testing profession.

Consider a scenario where a company has focused on developing only end user testing and bug finding skills in their employees. They measure the productivity of a tester by the number and quality of bugs he finds. Now consider another scenario where a company has in addition focused on developing skills related to coding, design as well in their test work force - in this company the tester finds the initial few bugs, figure out that the bug is because of a coding mistake pattern, and then challenge the developer on fixing the issue throughout the product code which saves the organization a lot of time. This test person can then also contribute to finding bugs early in the cycle by reviewing code and design throughout the product development stage. This will save the test person a lot of time to focus on more interesting scenarios and finding more complex bugs. This way the overall product quality benefits and the test person also feel more challenged.

It is very obvious that the second company will be in a better position to create successful products and do better qualities job given similar timeframes and resources. For their test roles, successful product companies of tomorrow need to hire people with good engineering skills and also focus on developing the coding/design skills. This will enable the companies to move up the value chain and also attract good engineers to the test discipline.

Typically, more than 50 percent of development time is spent in testing - working closely with software design engineers and program managers to understand product requirements, design appropriate test plans and cases, verify features and functionalities, and then identify bugs through systematic testing. In the course of their work, test professionals also identify key engineering efficiency, usability, business improvement opportunities and potential future projects.

In a successful product development company both developer and tester need to develop a deep focus on technology – with the tester in addition needing to develop deep customer empathy. While a developer is committed to building a successful product - a tester tries to minimize the risk of failure and tries to improve the software by detecting defects to ensure a Zero defect product.

Testing can be a great profession when people do not limit themselves to just finding bugs but also preventing bugs. But in order to prevent bugs it is very important that a test engineer develops his coding/design/engineering skills in addition to test/customer understanding/process skills.

There is a vast majority of companies who do not treat their test teams on par with developers both in terms of growth or salary. As a result a test person will hit the glass ceiling once he starts heading a big QA team whereas the dev counterparts grow to head up businesses. The trend however is now changing, albeit in a few companies – where testers have grown to manage businesses.

Test engineers however cannot grow in their career just by companies elevating their job profile. Test engineers also need to change their mindset and be motivated to produce a quality software product. Testers should not be caught up in the assumption held by many that testing has a lesser job status than development. Instead he should focus on building the right skills, developing deep product knowledge and delivering products which customers love. Once a test engineer does that, he can grow to head product engineering business units.

In the new internet and wireless age and the increasing complexity of modern software development projects, the will be resurgence of demand in software testing careers, with plenty of demand for sharp, motivated people. All things considered, the future looks bright for those who are in and planning to enter into this exciting field of software testing.

Sunday, January 16, 2011

What is manual testing?

It will not surprise you to know that manual testing is the
oldest form of software testing. It may surprise you however,
that despite the rise of software test automation solutions,
manual testing still accounts for at least 80% of all testing
carried out today.
Manual testing requires the tester to perform manual test
operations on the test application without the help of test
automation software. Manual testing can be a laborious
activity that requires the tester to possess a certain set of
qualities; to be patient, observant, speculative, creative,
innovative, open-minded, resourceful, un-opinionated, and
skilful.
Manual testing is carried out by a variety of people, from
developers and QA through to Business Analysts and end
users and helps discover defects related to usability testing
and user interface testing areas. While performing manual
tests the software application can be validated as to whether it
meets the various standards defined for effective and efficient
usage and accessibility. For example, the standard location of
the OK button on a screen might be on the left and the
CANCEL button on the right.
During manual testing you might discover that on some
screens, this is not the case. This is a new defect related to
the usability of the screen. In addition, there could be many
cases where the user interface is not displayed correctly on
screen and the basic functionality of the program is not
correct.
There are a number of advantages to manually testing
everything: The entire surface of the product can be covered
(albeit superficially); when something unexpected happens it
is easily followed up; there is little planning needed and
technology issues and there are no lengthy set up issues or
ongoing maintenance required to keep the test cases up to
date with changes in the application.
However, all is not necessarily rosy in the manual testing
garden…

Repetitive manual testing can be difficult to perform on large
software applications or with large data sets. It just gets too
complicated. Testing in subsets of the whole application can
help ease this burden, but it will still be complicated and
arduous.
A manual tester would ideally perform the following steps for
manual test:
1. Understand the business/functional requirement.
2. Prepare the test environment.
3. Execute test case(s) manually.
4. Verify results.
5. Record the result (pass/fail) & Record any new defects
uncovered during the test execution.
6. Make a summary report of the pass/fail test case.
7. Publish the report.
8. If any issue is reopened, then he needs to identify the test steps
and run them again to ensure the issue is fixed.