I've been learning how to program in Python. I've passed the MIT course "Introduction to computer science, using Python" on edx.org. I can write small programs in Python. I want to become a tester. I've bought several books on software testing. But these books do not contain any exercises, and I cannot practice my skills in testing. I want to learn by myself and I am not sure whether there are any books with exercises on software testing.

Where can I find such exercises? Maybe I don't think in a right way. Should I just read these books without any exercises? But I feel, it is not right. Can you help me?

I need exercises on writing unit tests, functional testing, integration testing, regression testing, etc.

I am reading the book "Testing Python: Applying Unit Testing, TDD, BDD and Acceptance Testing" by David Sale. I've also bought the book "Test-Driven Development with Python" by Harry Percival. But these books are like guidelines. They don't offer any exercises. What should I do? I want to apply for a job as a tester in the future. At least I will try.

  • What type of testing exercises are you looking for? Unit testing exercises? Boundary + equivalence class exercises? Sadly this question is pretty vague. – Chris Kenst May 10 '17 at 19:58
  • @Chris Kenst I edited my question. – guest May 10 '17 at 20:04
  • 1
    This question should be upvoted and made required reading for all new posters. Following this advice would eliminate 30% of the lamest question being asked here ("how to loop over a list") and increase the quality of questions significantly. – Peter M. May 12 '17 at 14:02
  • Great question! – Vishal Aggarwal Feb 17 '18 at 15:55

My suggestion is to look for programming katas and quizzes and to write the programs described in the akatas and quizzes - but do this by also writing the test cases against them as you go. Try to write the test cases ahead of the application code. If you can't do that try to write tests after each bit of application functionality is written. Make sure that all your application code is covered by tests.

Examples Sites:


A truly massive list of exercises can be found at https://softwareengineering.stackexchange.com/a/764/34069

  • Programming challenges don't belong in the SQA SE, test code does. – Rsf May 12 '17 at 7:35
  • 2
    Yes I know that @Rsf my point is to use those exercises but also write the tests as you go. Hence tdd / bdd I updated my answer for more clarity – Michael Durrant May 12 '17 at 9:45
  • taking back my down vote, but still how would the OP check his tests ? You can always build a project of your own and test it, but it's not an easy or efficient way for learning – Rsf May 12 '17 at 13:34
  • 1
    Before writing test, OP needs to become a competent programmer. OP is at least interested in mastering the craft. So many other posters do not bother spending any effort to master the craft, so we have so many questions about "how to read text", "how to loop over a list" etc. If those other posters bothered to learn at least the basics of the craft (as OP obviously tries), quality of questions in SQA SE would increase significantly. So I do not see why you are so upset about this question. This is very valid question, considering our audience. Should be required reading for each new poster. – Peter M. May 12 '17 at 14:00
  • How do you write good tests? How do you know if the tests you are writing are good? Those are good questions imho. I think I'll try and put together a separate questions for that though? – Michael Durrant May 12 '17 at 14:20

Thanks for asking! You are asking very right question.

Years ago I put together a small wiki with exactly such resources for Python learners:


It has section for training task.

https://projecteuler.net/ for start, http://www.pythonchallenge.com/ for desert.

Consider getting book "Etudes for Programmers" and solve some stuff from there. If you cannot find it or afford it (is old, nothing like it was ever written, sadly), see few tasks on my wiki from that book.

Nowadays, such small training tasks are not called "etudes" (using piano classes terminology from '80ties ) but "katas", where kata comes from martial arts (much cooler now) - see http://codekata.com/ and kata and skill acquisition


This is a good question, it's easy to find online resources to practice programming skills, but resources to sharpen and practice your testing skills are rare. You can learn though, in a lot of places about existing frameworks for testing.

I suppose (and I never had the chance to do it properly myself) the best would be joining an open source project as a tester. Start slowly by learning from others or doing manual testing, then gradually start contributing code.

  • Before joining any project, person needs to learn basics. Training task like OP is asking for (and my answer provides) go before being able to participate. Exactly like here we don't want to explain how to write loops, developers in any project don't have time for that either. But simple tasks like Project Euler will train you to do it. – Peter M. May 12 '17 at 20:00
  • I don't disagree, but this kind of training does not belong in this SE. – Rsf May 15 '17 at 7:27
  • I agree with you that it does not belong here, but our audience thinks otherwise, and daily we get question which would NOT be asked if OP had trivial amount of skills and experience. We have to build this community with participants we have, not with the ones we wish to have. – Peter M. May 15 '17 at 14:04

Your Answer

