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?