TL;DR
Software development is not a manufacturing process where each step of the process is done by dedicated specialist developers. Because of that, software testers must generalize their knowledge and skills. We will try to give hints on how to expand your specific software testing skills. This post is based on a remarkable book written by Chad Fowler, The Passionate Programmer.
The software development process was for a long time, perceived as a manufacturing process. Put in requirements what software needs to do, create design documents that will be red by specialist developers who would create code without much thinking. In the end, hand it to software testers that would check that code works according to specifications.
But software could be easily changed, right? So business people use this fact and change the requirements that cause a change in code and architecture. And all that requires flexible developers and testers. Beeing specialist does not cut anymore.
For software, testers are not enough just to observe the application from UI point and report and error. You need to be a generalist. It is good to know where is web server log and attach to bug report exact part of the log when the bug occurs. Know how to read SQL statements, or even better, knowing how to write them and run them against the database to check the application data. Handy skill!
Knowing the full domain of application under test is always a plus. Focusing on just one feature while testing is not enough. Knowing how that feature interacts with other features might help us to write better bug reports. Just today, I made a simple mistake by reporting an issue but not checking if that issue is connected with the wrong application configuration. And guess what, it was connected with incorrect application configuration!
Generalists are rare and, therefore, precious [Chad Fowler].