Take the 2-minute tour ×
Software Quality Assurance & Testing Stack Exchange is a question and answer site for software quality control experts, automation engineers, and software testers. It's 100% free, no registration required.

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?
share|improve this question
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.) –  Bj Rollison Jan 21 '12 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 Jan 21 '12 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 Feb 24 '12 at 11:38
1  
This talk of Dr. Russell Ackoff gives great examples of system thinking. –  dzieciou Dec 16 '12 at 8:52
add comment

4 Answers

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?
share|improve this answer
add comment

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.

share|improve this answer
    
+1 for thesystemthinkingreview site, especially their podcasts: itunes.apple.com/gb/podcast/the-systems-thinking-review/… –  DuncN Jan 23 '12 at 13:44
    
"Planting potatoes..." article is great! Do you have any similar story from software testing context? –  dzieciou Dec 16 '12 at 10:48
add comment

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

share|improve this answer
add comment

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/

share|improve this answer
    
Thanks James, excellent rec (I have that book, reading it at the moment). Also, good to see you on here! –  testerab Jan 20 '12 at 19:14
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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