See, JMeter has two ways of stopping the test which is being executed:-
- Stop: This command is used to stop the JMeter and its execution immediately, in this threads are killed. You will find Stoptest.bat/ Stoptest.sh files inside bin directory of JMeter. If you fire this file manually then too your test will stop abruptly. Stopping test in this way may corrupt your JTL file, as the end tag may be missing in the JTL file which will throw an error while opening it.
- Shutdown: This means stop gradually - threads exit at next opportunity, i.e. when current samplers have finished their process. Shutdown.bat/Shutdown.sh files inside the bin directory are used for this purpose. This command will not harm your script and results file, but it will let the JMeter wait and finish for the last request sent by it.
Now, coming to your issue, when using duration or JMeter scheduler; it uses the Shutdown command i.e. when your script duration (which is 10 mins.) is over Shutdown will be fired by JMeter on its own to tell JMeter to exit test but in a orderly/polite manner, that's why some additional time to gracefully shut down all the test threads is taken by JMeter in this case, increasing your overall execution time. But once your script duration is over no new request will be fired, only completion of already fired requests will be there.
If you don't want this graceful stopping of the test as this increases the total time of your script, then you should use the Stop command.