integral (as with integral2) does not have a "stepsize". As an adaptive code, it looks at the local shape of the function, in the sense that there are methods that will see if the integral is converging locally. If there are convergence problems, then it takes more samples from the function in that local region. So on nasty functions that vary rapidly, or functions with singularities, the tool will sample more densely there. If everything seems totally boring, then it takes a minimal number of samples.
What you don't want it to do is to sample densely EVERYWHERE, if something is just complicated in one small area. But you do want code that will be able to adapt to what it sees, for each specific kernel. Therefore, you set a desird tolerance on the result, not a stepsize, and expect the integration tool to provide a solution that will be "close" by some measure to the true solution.
The same is true for essentially any such numerical integration tool, as long as they are adaptively able to work on any function as a black box. That does not include tools like trapz of course, since trapz merely works on the set of points you pass in.