Assessing the performance of an evolutionary algorithm on a given optimization problem is no trivial task. Evolutionary algorithms are stochastic, which means that different runs of the same algorithm, under the same conditions, will almost certainly yield different results. This chapter shows how to assess the performance of an evolutionary algorithm in a mathematically sound way. The discussion is illustrated with the development of examples of how to assess the performance of evolutionary algorithms both on single-objective and on multi-objective benchmark optimization problems. The presentation is complemented with pseudocode, graphs, and Python code.