Basics of Software Testing

September 9, 2012 Kapil

Introduction

Testing is carried out primarily for unearthing any and all defects present in the system and to prevent a defective product reaching the customers. Secondarily, testing is also carried out to convince the customer that the product conforms to and fulfils the specifications and the functionality specified and agreed to. Software Testing is recognized as a very important activity in software development. Of late, the importance of independent testing – that is testing by persons not involved in the development of software – is increasingly being recognized, so much so, software
companies specialized only in software testing are established and are doing good business. Also significant is the fact that - as the complexity and size of the software increased multi-fold – so has the complexity of testing as well as the types of testing increased. As a result, there is a paradigm shift in the estimation of testing effort from being taken as a percentage of development effort, to independent size estimation and effort estimation.

Testing Basics
There are basically two techniques of testing:

1. White Box
2. Box Testing

White Box testing involves stepping through every line of code, and every branch in the code. To use this technique, the tester should be knowledgeable about the programming language and should know the structure of the program.

In Black Box testing, a set of inputs is given to the software and the outputs delivered by the software are compared with the expected outputs. To use these techniques, the tester should have knowledge about the functionality of the system.

Testing Scenarios
Software testing as stated above is carried in two independent scenarios –
1. Project Testing or Embedded Testing – that is testing, which is carried out as part of a software development project – this is carried out to ensure that the development work is defect-free.
2. Product Testing – testing that is carried out for a COTS (Commercial Off-The-Shelf) software product. This is to ensure that the products work without any defects in a variety of customer scenarios. Those scenarios are described below:

Project Testing / Embedded Testing
When software is developed as product that is delivered to a single client or intended to be used at a single location, the following testing takes place, in addition to software inspections (peer reviews) –
1. Unit Testing it is performed by the person who wrote the code and by an independent peer using white box testing technique.
2. Integration Testing carried out either as one-off (that is, when all integration is completed) or incrementally (that is, whenever one unit of software integrated and continued till all units are integrated). Black Box testing is used in one-off Integration Testing and white box testing can be, perhaps, used in incremental integration testing.
3. System Testing to ensure that the software works in all intended target systems.
4. User Acceptance Testing to obtain customer sign-off so that software can be delivered. Optionally, many other tests can be conducted at the behest of the customer.

Product Testing
Product would be developed as a project first and would undergo all the tests that a project normally undergoes, namely, unit, integration, and system testing. System testing is carried out more rigorously and on multiple systems. In addition, it needs some more rigorous tests. These are –

  • Load Testing in web applications and multi-user applications, large numbers of users are logged in and try to use the software in a random manner. The objective is to see if the software is managing multiple requests and serving up accurate results or mixing them up. . This unearths the issues connected with the bandwidth, database, sufficiency of RAM, hard disk etc
  •  Volume Testing subject the software to a high volume of data and see the performance,  whether it degrades. 
  • Functional Testing test that all functions expected of the software are functioning correctly.
  • End-to-End Testing in this type of testing, one entity is tracked from birth to death in the application. For example, in a payroll application, an employee joins the system; then is promoted; then is demoted; salary increases are effected, salary decreases are effected; kept in abeyance; transferred, then retired, dismissed, terminated and so on to ensure that the state transitions designed in the applications happen as desired
  • Parallel Testing a number of users using the same function and are either inputting or requesting same data. This brings out the system’s ability to handle requests at the same time and preserving the data integrity.
  • Concurrent Testing Concurrent testing is carried out to unearth issues when two or more users use the same functionality and update or modify same data with different values at the same time – normally using a testing tool. For example, take ticket reservation scenario, there is only one seat and it is shown as available to two people. When both confirm purchase, the system should give  to only one and reject the other request. It should not happen that money is collected from both credit cards and reserve for only one – the credit card transaction must be reversed for the rejected party. Scenarios like this will be tested.
  • Stress Testing cause stress to the software by making expected resources unavailable or causing deadlock like scenarios or not releasing resources and so on to ensure that the software has routines built in to handle such stress. This will bring out software responses for events like machine-rest, Internet disconnection, server timeouts etc.
  • Positive Testing test the software as specified and not trying any negative acts – to ensure that all defined functions are performing. Used mostly for customer / end user acceptance testing.
  • Negative Testing using the software in a manner that is not expected to be used – this will bring out all hidden defects in the software. This is to ensure even malicious usage would not affect the software or data integrity.
  • User Manual Testing use the software conforming to the user manual to ensure that they both are in synch with each other
  • Deployment Testing Simulate the target environment and deploy the software and ensure that deployment specified is appropriate.
  • Sanity Testing this cursory testing to ensure that the components, of software package, are complete and are of appropriate versions, carried out before delivery or before making a software-build.
  • Regression Testing testing carried out after unearthed defects are fixed
  • Security Testing – testing to ensure vulnerability against the threat of viruses and spy-ware
  • Performance Testing testing to ensure that the response times are in acceptable range
  • Usability Testing testing the software for different types of usage to ensure that it satisfactorily fulfils the requirements of specified functional areas
  • Install / uninstall Testing test the software on all target platforms to ensure that install and uninstall operations are satisfactorily performed
  • Comparison Testing testing the product with competing products to contrast the differences for determining the relative position of the product
  • Intuitive Testing testing without reference to user manuals to see if the product can be used without much reference to user guides

It is rare that all the above types of testing are carried out for every project that is executed in the organization, but it is common for product testing to include many of the above tests.

0

Top Ten Reasons Why Large Companies Fail To Keep Their Best Talent

September 5, 2012 Kapil



Whether it’s a high-profile tech company like Yahoo!, or a more established conglomerate like GE or Home Depot, large companies have a hard time keeping their best and brightest in house.

Yet, Yahoo!, GE, Home Depot, and other large established companies have a tremendous advantage in retaining their top talent and don’t. I’ve seen the good and the bad things that large companies do in relation to talent management. Here’s my Top Ten list of what large companies do to lose their top talent:

1. Big Company Bureaucracy. This is probably the #1 reason we hear after the fact from disenchanted employees. However, it’s usually a reason that masks the real reason. No one likes rules that make no sense. But, when top talent is complaining along these lines, it’s usually a sign that they didn’t feel as if they had a say in these rules. They were simply told to follow along and get with the program. No voice in the process and really talented people say “check please.”

2. Failing to Find a Project for the Talent that Ignites Their Passion. Big companies have many moving parts — by definition. Therefore, they usually don’t have people going around to their best and brightest asking them if they’re enjoying their current projects or if they want to work on something new that they’re really interested in which would help the company. HR people are usually too busy keeping up with other things to get into this. The bosses are also usually tapped out on time and this becomes a “nice to have” rather than “must have” conversation. However, unless you see it as a “must have,” say adios to some of your best people. Top talent isn’t driven by money and power, but by the opportunity to be a part of something huge, that will change the world, and for which they are really passionate. Big companies usually never spend the time to figure this out with those people.
3. Poor Annual Performance Reviews. You would be amazed at how many companies do not do a very effective job at annual performance reviews. Or, if they have them, they are rushed through, with a form quickly filled out and sent off to HR, and back to real work. The impression this leaves with the employee is that my boss — and, therefore, the company — isn’t really interested in my long-term future here. If you’re talented enough, why stay? This one leads into #4….
4. No Discussion around Career Development. Here’s a secret for most bosses: most employees don’t know what they’ll be doing in 5 years. In our experience, about less than 5% of people could tell you if you asked. However, everyone wants to have a discussion with you about their future. Most bosses never engage with their employees about where they want to go in their careers — even the top talent. This represents a huge opportunity for you and your organization if you do bring it up. Our best clients have separate annual discussions with their employees — apart from their annual or bi-annual performance review meetings — to discuss succession planning or career development. If your best people know that you think there’s a path for them going forward, they’ll be more likely to hang around.
5. Shifting Whims/Strategic Priorities. I applaud companies trying to build an incubator or “brickhouse” around their talent, by giving them new exciting projects to work on. The challenge for most organizations is not setting up a strategic priority, like establishing an incubator, but sticking with it a year or two from now. Top talent hates to be “jerked around.” If you commit to a project that they will be heading up, you’ve got to give them enough opportunity to deliver what they’ve promised.
6. Lack of Accountability and/or telling them how to do their Jobs. Although you can’t “jerk around” top talent, it’s a mistake to treat top talent leading a project as “untouchable.” We’re not saying that you need to get into anyone’s business or telling them what to do. However, top talent demands accountability from others and doesn’t mind being held accountable for their projects. Therefore, have regular touch points with your best people as they work through their projects. They’ll appreciate your insights/observations/suggestions — as long as they don’t spillover into preaching.
7. Top Talent likes other Top Talent. What are the rest of the people around your top talent like? Many organizations keep some people on the payroll that rationally shouldn’t be there. You’ll get a litany of rationales explaining why when you ask. “It’s too hard to find a replacement for him/her….” “Now’s not the time….” However, doing exit interviews with the best people leaving big companies you often hear how they were turned off by some of their former “team mates.” If you want to keep your best people, make sure they’re surrounded by other great people.
8. The Missing Vision Thing. This might sound obvious, but is the future of your organization exciting? What strategy are you executing? What is the vision you want this talented person to fulfill? Did they have a say/input into this vision? If the answer is no, there’s work to do — and fast.
9. Lack of Open-Mindedness. The best people want to share their ideas and have them listened to. However, a lot of companies have a vision/strategy which they are trying to execute against — and, often find opposing voices to this strategy as an annoyance and a sign that someone’s not a “team player.” If all the best people are leaving and disagreeing with the strategy, you’re left with a bunch of “yes” people saying the same things to each other. You’ve got to be able to listen to others’ points of view — always incorporating the best parts of these new suggestions.
10. Who’s the Boss? If a few people have recently quit at your company who report to the same boss, it’s likely not a coincidence. We’ll often get asked to come in and “fix” someone who’s a great sales person, engineer, or is a founder, but who is driving everyone around them “nuts.” We can try, but unfortunately, executive coaching usually only works 33% of the time in these cases. You’re better off trying to find another spot for them in the organization — or, at the very least, not overseeing your high-potential talent that you want to keep.
It’s never a one-way street. Top talent has to assume some responsibility as much as the organization. However, with the scarcity of talent — which will only increase in the next 5 years — Smart Organizations are ones who get out in front of these ten things, rather than wait for their people to come to them, asking to implement this list.

0

« Previous Posts Next posts »

Proudly powered by Kapil Saxena.