So i've made a piece of software, i've finished unit and integration testing, and now I need to do system testing.

I've read that "System testing is testing the whole system against the requirements specification after integration testing has finished. we don’t need to know what component is being executed, rather we must know what the system is supposed to do. Thus function testing is based on the system’s functional requirements."

My question is how is this usually carried out profesionally, and how is it documented?

Actually, it's really not vague; it's merely time-consuming and difficult. Here is my idea of how it should be done. It rarely is, because shipping a product is far more important than shipping a quality product.

  • Identify the system under test (SUT).
  • Identify the interfaces on the SUT.
  • Identify the protocols used on those interfaces
  • Write a test program that will control all of those interfaces such that all (really as much as is possible) system functionality is verified.
  • Write a test program that will control and load all of those interfaces such that system capacities and limits are verified and explored.

Determining why each of these items is important is your homework. :)