Systems thinking is tremendously relevant to any professional tester, but few testers study it, despite the obvious benefits of learning techniques/approaches that allow you to study systems in terms of the relationships and interactions between their component parts and with other systems (as opposed to studying just the components in isolation and assuming that they'll work the same when you put them together - doesn't that sound a familiar problem to any tester?)

What good learning resources are there out there for testers who want to learn more?

  • Are there any good tasters out there to tempt testers entirely new to the idea?
  • What about more practical advice on how you might start applying different systems concepts?
  • Are there any key texts that are worth getting hold of?
  • Any great communities/forums where you could discuss what you're learning?
  • 1
    "Few testers study" systems thinking is a gross over-generalization. Systems thinking applies not only to testers but to many people in the software. In fact, one could argue that anyone who has studied biology or other natural sciences in school has "studied" system thinking to some degree. Of course the ability to apply systems thinking to software testing (or engineering) is the key. (FWIW I have never met a tester who tests individual components in isolation, but maybe your experience is different.) Commented Jan 21, 2012 at 5:09
  • Fair point - I'm not at all trying to suggest that systems thinking is only useful to testers. What I wanted to do with this question was to try to gather resource recs for testers who want to study systems thinking as a topic in itself. I believe that being able to use the vocabulary and concepts of systems thinking to examine testing problems may be helpful, even if some of those concepts seem sorta familiar when you first start reading about them (and a lot really should be, for any tester who's been paying attention). Thanks for the feedback - I'll think about how to improve the question
    – testerab
    Commented Jan 21, 2012 at 14:00
  • I actually had training in systems thinking when I was doing my software engineering degree - favoriting this so that I can refresh my knowledge.
    – Kate Paulk
    Commented Feb 24, 2012 at 11:38
  • 1
    This talk of Dr. Russell Ackoff gives great examples of system thinking.
    – dzieciou
    Commented Dec 16, 2012 at 8:52

4 Answers 4


There's Weinbergs "Introduction to General Systems Thinking" book and his Volume 1 of "Quality Software Management" (two the other volumes are also probably appropriate).

I've found a few good reads on this website "The Systems Thinking Review", e.g., "Planting potatoes the right way".

Hopefully others will add to this, I'll be really interested to see what they come up with.

  • +1 for thesystemthinkingreview site, especially their podcasts: itunes.apple.com/gb/podcast/the-systems-thinking-review/…
    – DuncN
    Commented Jan 23, 2012 at 13:44
  • 1
    "Planting potatoes..." article is great! Do you have any similar story from software testing context?
    – dzieciou
    Commented Dec 16, 2012 at 10:48
  • seems the site is now dead unfortunately what a shame
    – shicky
    Commented Jun 29, 2022 at 10:28

Donella Meadows's Thinking in Systems: A Primer is a great place to start on dynamic systems and their characteristic patterns. http://www.amazon.co.uk/Thinking-Systems-Donella-H-Meadows/dp/1844077268/


Phil K offers some good references, in fact I'm currently reading Intro to General Systems Thinking.

I recently came across an article by Kenneth Boulding who is cited by Gerald Weinberg in the book (its worth a read) on his views of General Systems Thinking: http://www.panarchy.org/boulding/systems.1956.html


I would like to address one your questions that got less attention:

What about more practical advice on how you might start applying different systems concepts?

System thinking can be useful for everyday tasks of a tester: planning tests (What to test and how to test?), isolating defects (Where the root cause sits?), and verifying fixes (What could have been impacted by fix? Will I get enough confidence if I only test this?).

I don't know any specific book that would address those tasks from system thinking perspective. However, from my experience understanding how behavior of the system emerges from behaviors of its components and subsystems helps. You can synthesize this knowledge by analyzing system architecture and by analyzing how users interact with the system (users are a part of the system!).

Understanding system architecture

The book that would help learning system thinking would be about software architecture in general and about particular technologies in particular. Asking questions to developers, architects and ops about the system can help, too. To get a complete picture of the system I often ask the questions like:

  • How those component interact together?
  • What are relations between different layers of the system? Is X accessing DB directly or through some facade, Web service or queue?
  • How tightly are they coupled? By interfaces, format? Do they interact synchronously or asynchronously?
  • What is the data flow in the system?
  • If an error occurs here, will it impact that? How errors get propagated in the system?
  • Are those libraries shared between different components? Could replacing this library have caused this defect?
  • What is the relation between OS and our system? Let us say you're porting your application from 64bit to 32bit system. What features of 64bit OS/VM we use now that will require verification?
  • How tightly are we coupled with this DBMS? Do we use any specific features of Oracle that are not supported by MSSQL?
  • How those German label/regional setting files are used? Are they stored on the front-end or on the back-end? If I change them, will a user see the change immediately, or maybe content is somewhere cached?
  • Is application stateful? What changes the state of the application? Does application behaves differently depending on its state? Is state the same for the whole application or specific per user/session?

Users are part of the system

Talking to your business analytic and existing users can help understand their relation with the system. For instance:

  • How may users can use this functionality at the same time? Can they interfere each other?
  • Do users get notification immediately, or some other process or process is involved in chain? Can it block the system?
  • What is the relation between resource permissions and user privileges? Maybe she cannot see it because she was not authorized to see it?
  • Who are the users of this functionality? Technical people?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.