Why do we have workshops for SQL, Git etc. specifically for testers?

I see some short workshops on SQL for testers, Git for testers etc. on MOT. There are already plenty of learning resources for these kind of topics. So why do we have talks on SQL & GIT specifically for testers ?

Do I need to learn SQL differently if I am a tester ? If yes, then why ?

Do I need to focus more on some parts (DQL, DML) and ignore the rest (DCL, DDL, Triggers, Stored procedures) ? If yes, then why not just make a 15 minute blog post on this instead of a 2 hour talk ? https://www.geeksforgeeks.org/sql-ddl-dql-dml-dcl-tcl-commands/

PS - Do we have any good courses on database testing ? I think there are hardly any of those.

1 Like

Simple: Some, if not most of the testers don’t learn much in their job, or on their own. They get commands from a higher entity, they learn exactly the minimum amount to do that task and execute it indefinitely.
Example:

  • . write test plans, write test cases - execute - create bug reports, create report documents.
  • Or: learn X language, learn Y automation tool, automate something, create green/red reports and make sure to count the stuff;

MoT found that out and trying to push some topics in their Club.
That way some people would be more inclined to think about learning on X or Y topics.
Also adding the information as a collection makes you aware of things that could be connected.

Of course, being able to learn by yourself regardless of constrictions it’s an awesome thing. You’d find the resources…

‘Database testing’
Testing is a process of evaluating a product by learning about it, through exploration, experimentation…
The database is part of a product.
The way you test a database is like you test anything…you learn constantly and more deeply.
To make it simpler you go from a top down approach.

  • You see a UI, fields, values. You ask yourself how do those get there…
  • You dive into the code…If you don’t like coding much, you could at least learn how to skim through it. Or get a developer to explain the entire architecture.
  • You find the next layer - maybe an API. You get to understand how that works. If anything technical doesn’t make sense along the way, you google it. You put things together…
  • Then go to the next layer - maybe there’s another API or subsystem - check out a bit about that. How data is processed in that system. What transformations are made along the way?
  • Then go further - you find that a database is involved. So you think - something must do some operations in there. What operations are there, when, how often, what databases, what tables, what fields. What is read, written, updated, deleted?
  • Get access to the database and start looking up for those names above. If the tool to access the database doesn’t make sense, ask a dev or read an intro guide/manual/video for the tool.
  • Use the UI if available to play with the data. Do some queries in the database. You don’t know how to query/script, look it up - learn that…
  • Once you saw what it looks like, go back through the flow and connect the things together.
  • Review components, draw a map to help you and remind you of what you might forget/oversee, understand how things appear or disappear on screen, how they are processed.
  • Imagine modifying something in the down layers and going up to see what changed.
  • Change something in the UI and see what changed in the DB.
  • Imagine risks of failure of the UI being badly processed/displayed/corrupted by the subsystems you just learned about.
  • Design some more experiments to try to make those failures come true.
  • Start thinking of coverage;
  • Track changes made by development in either of the layers and see/deduct/analyze/investigate how that could impact negatively the system in some cases that the development team or product management, business analysis, etc…hasn’t thought about.
3 Likes

Hi @raghu

Do I need to learn SQL differently if I am a tester ? If yes, then why ?

No you don’t at all. You just need to know how to do what you want to achieve. You want to find out how to update a table? Use a query to do this. You can then might read about stored procs, and about permissions to perform actions. You then might also read about NoSQL databases and why they are different to SQL, and the benefits of NoSQL. Then that might lead you onto GraphQL… So all you need to be is curious and willing to learn.

@ipstefan answers this pretty well: “being able to learn by yourself regardless of constrictions it’s an awesome thing”. There is so much to learn about and it’s a misuse of your time learning something about Databases that you’ll probably never need. Like the example of DDL, DQL, DML and DCL. In university, we studied this but I don’t recall having to know this in my career as a QA.

3 Likes

As someone with coding background it works like this. The tester needs to know how to READ the lay of the land using all these tools while hunting for watering holes.

  • For example: git. It’s never going to be your day-job to do a 3-way merge in git or to do a cherry-pick. But you do have to know which commit you are testing and which built it went into. Especially useful when it comes to reading a build script in the CI system to understand the GIT commands impact on the product and where source code comes in from.
  • SQL and DB, I’ve never been a guru at it, but knowing what a inner join is, and a stored procedure with triggers gets you even if you never write one lets you know where vulnerabilities in your system could lie and how to add test-points into the database that you will need when writing tests.

This does kinda suck, but for example right now I am learning JS because we are doing some browser based work in my team, I hate Java, JS, Perl and other languages. But a learning track in JS that gives me just enough knowledge to inject tiny pieces of test code into an application using WebDriver. Your specialty will lie elsewhere, but these days apps are not monolithic and are built on many different platforms with many technologies. Any thing used in the assembly-line to create a product is a risk, not just the final product needs testing. You just don’t need to be an expert in the whole assembly line.

3 Likes

As the one who is running the SQL workshop, I feel it is only right I weigh in.

As a tester compared to a developer, I wouldn’t say you need to learn it differently. But understanding WHY you could learn SQL can benefit testing, as well as not focusing on parts that a tester wouldn’t need when starting as they can be distracting or overwhelming, is what I am focusing on.

As for condensing it into a blog, as you have shown, they exist. But with a workshop it can help those who learn with interaction, being able to ask questions, given challenges, and so on.

@ipstefan has given a great point in regards to database testing.

For me, do you also want to understand ETL as part of working with a data warehouse? As what is database testing to you, and what is missing in terms of a course?

4 Likes

@nufenix - I can think of one example now. Several people have developed sql code to find the last day of a month. Which test cases would you do to check the code ? Could you do it with SQL queries only, or would you need to use a programming language also to run those sql query tests ? Is there a no-programming tool which can run your sql query tests ?

I never heard of ETL and ETL testing until now. But, it looks like there is a lot of scope to test things in ETL - https://www.datagaps.com/data-testing-concepts/etl-testing/

Sql is a programming language, so I wouldn’t use a different language to prove it.

Asking what tests I would do is tough, as there isn’t enough context around this.
Why do they need to find the last date of the month?
Is it simply spitting out a number?
How far back/ahead does it go?
Are you only wanting to check the code works (which can be covered in a unit test), or is it a part of something larger, such as a report?

There is indeed lots to test as part of ETL testing. And that’s why I was curious if that is what you meant when it comes to database testing. As you hadn’t heard of it before, what to you is database testing?

@nufenix - I don’t know anything about db testing and I want to know what is there to learn.

Regarding SQL, my main concern is that I could not find any good resource for learning quickly, practicing, remembering and testing one’s skills. This is especially important for projects at work or interviews where you just need “basic” SQL (DQL, DML). There is not enough time to google everything or read a huge book which has little relevance to the actual work. My expectations of an SQL learning resource :

1 - Explains the concepts well, preferably in small chunks. (Codeacademy SQL course tries to do it, but overall its too shallow, too narrow and not enough practice & variety of problems).

2 - Plenty of practice problems so that you can practice and remember things. Must also include hints and/or solutions to speed up learning.

3 - Some good problems which test understanding of key concepts & the ability to apply them.

Do you know any sources which might meet these needs ?

Thanks !

PS - Its hard to know in how many QA jobs the level of sql matches the level of questions asked in the interview, or if most people know the bare minimum and actually google most of the sql things.