views:

238

answers:

5

As a tester, how much should one expect a tester to know about databases?

Is it only writing queries in sql or do we need to know about stored procedures, triggers etc.

+1  A: 

Shouldn't know much, but if you know how to write queries (you understand the language) you know stored procedures and triggers :)

You don't really need to know anything about db administration tho.

Fedor Hajdu
Hard to make that kind of statement without knowing the software, eh? Our system is very database intensive (hundreds of SQL servers), so before rollouts you need to know how to backup/restore databases, how to interact with the system as an administrator would, etc.
Joe
+2  A: 

Might want to tag this with a testing tag.

Depending what your product is, a tester may or may not need to know specific things. From my perspective, the professional tester is the last line of defense before a product gets into the wild. Thus, testers should at the root of it be using the product like users (crazy, manic users who are only interested in pain and misery, of course).

That mindset in place, you can use black-box testing (testers use no more information than users), white-box testing (testers use all information, source code, etc.), or something in between.(1) In my company we are more black-box, but even for products it is helpful to have a detailed understanding of implementations. This is true not necessarily from a development perspective, but to give ideas about where the complexities - and therefore, often, bugs - lie. Depending on the quality of your developers, the testers will need to be more or less capable of determining this on their own, as it is a rare programmer that can thoroughly test her own code.

Once you have settled what you are testing and what your customers are doing, then you will know if testers need to know SQL, procedures, triggers, etc. If you are delivering, for example, a hosted database solution, then your testers will have to know these things. If you use a traditional, non-custom database server on the back end of your delivered software package and you are a black-box shop, then your testers don't necessarily need to know anything about SQL at all - the software should be handling it. (That's not to say it's not helpful in debugging, test selection, etc., but I'd always rather have a good tester with no knowledge of my field, than an average tester with coincidental domain knowledge.)

Looking at the question again, if you are just asking from a personal skills perspective - then yes, it is always a good thing to learn something else, and it will undoubtedly come in handy eventually. :)

1) I have a strong preference toward black-box testing, but there are plenty of arguments for white-box as well, so it would be worthwhile to review the differences if you're in a position to determine overall testing strategy on a project.

Tim Crone
+1  A: 

I've never expected a tester to have any real knowledge of sql... Unless they were testing a database implementation ;)

My feeling is that testers should be on par with end users plus certain other knowledge. The "other knowledge" is a bit ambiguous based on the project needs but usually is one or more of the following:

  • Has detailed knowledge of the business plan and exactly what the program is supposed to do. In this case they need to work hand in hand with your business people.
  • Knows how to do edge case checking. For example, entering 1/1/1800 or 12/31/2040 in a birthdate field. Is this allowed? Other examples include entering negative amounts or even alpha characters in numeric entry fields.
  • Has experience doing what the users typically do. This might be simply from on the job training such as sitting next to a user for a week or two every so often.
  • Has experience or knowledge of tools of the trade. There are a ton of testing tools out there which allow recording and playback of testing scenarios. I would expect a tester to be proficient in those tools.

Now, sometimes running simple sql queries is part of the job. For example, you might have to verify a workflow process that kicks off automated systems. In this case, being able to execute sql and reading the results is important.

However, those queries are usually provided to the testing staff by development or a dba. Again, most people can be trained on how to copy / paste, maybe change a parameter, and execute a query while interpreting results in less than an hour.

Chris Lively
+1  A: 

Obviously, it depends on your unique situation, as any software shop will do business differently than elsewhere.

I've worked with testers who knew nothing of SQL. We trained them to simply execute the sproc tests we wrote and notice if they changed. They would write up the logic for the test cases, and we'd do the code implementation.

So I'd say the testers could know nothing of SQL if your situation would allow them to merely be trained to do whatever tasks they're really needed for.

However, in an ideal world, I'd vote to say the testers should have a good-enough knowledge of code or SQL to write their own tests themselves, though this may introduce layers of arguments in interfacing when you have 2 testing teams (1 strict dev, 1 strict testing).

Cuga
+1  A: 

You will be a better tester if you know SQL. You don't need to know it in depth, but it's useful to know for a number of reasons:

  1. You'll be able to do simple queries to check the data that is displayed on the screen is correct with respect to the database, without having to go to a developer to check. This saves time.
  2. You can start to analyse a bug without having to go to a developer, for instance, if the data in the database is incorrect, if it is displayed incorrectly. This will save time, and help you to target your tests more effectively. This will help you find bugs.
  3. You'll understand (a little) of the job of the developer, and you can start to understand whats possible and what is not. This will help you with your relationship with the developers.
  4. You can improve the quality of your testing: in the past, I've written simple Excel spreadsheets which calculated values based upon database queries (you are independently checking the developers work). This helps the overall quality of the product.

The principle is that your core competence is testing, but it is always a good idea to know a little of all of the surrounding competences: A tester should know a little development, a analysis, a project management, but not to the same depth. In the same way, a developer should know a little about how a tester works (AND analysis and project management).

You don't NEED to know SQL, but it's a good idea. The same applies to triggers and stored procedures.

MatthieuF