diff --git a/adaptive/tests/test_average_learner.py b/adaptive/tests/test_average_learner.py
index b652cc8549c1f4cf9b2a0fb0609beea2a09e6ec0..abacd324b4cce9163d7d595f8c55e8d122c8f067 100644
--- a/adaptive/tests/test_average_learner.py
+++ b/adaptive/tests/test_average_learner.py
@@ -1,5 +1,9 @@
 # -*- coding: utf-8 -*-
 
+import random
+
+import numpy as np
+
 from ..learner import AverageLearner
 
 
@@ -17,3 +21,28 @@ def test_only_returns_new_points():
     assert learner.ask(1)[0][0] == 3
     assert learner.ask(1)[0][0] == 4
     assert learner.ask(1)[0][0] == 10
+
+
+def test_avg_std_and_npoints():
+    learner = AverageLearner(lambda x: x, atol=None, rtol=0.01)
+
+    for i in range(300):
+        # This will add 5000 points at random values of n.
+        # It could try to readd already evaluated points.
+
+        n = random.randint(0, 2*300)
+        value = random.random()
+
+        # With 10% chance None is added to simulate asking that point.
+        if value < 0.9:
+            learner.tell(n, value)
+        else:
+            learner.tell_pending(n)
+
+        if i > 2 and i % 10 == 0:
+            # We need more than two points for 'learner.std' to be defined.
+            values = np.array(list(learner.data.values()))
+            std = np.sqrt(sum((values - values.mean())**2) / (len(values) - 1))
+            assert learner.npoints == len(learner.data)
+            assert abs(learner.sum_f - values.sum()) < 1e-13
+            assert abs(learner.std - std) < 1e-13