diff --git a/tests/driver_at/main.c b/tests/driver_at/main.c
index 1307287f778f6a78ec43a4f8590b3a09f22c8b70..ff421d2d1eaf56b03c426d78c458e95e6f17701d 100644
--- a/tests/driver_at/main.c
+++ b/tests/driver_at/main.c
@@ -58,12 +58,48 @@ static int send(int argc, char **argv)
         return 1;
     }
 
-    if (at_send_cmd_get_resp(&at_dev, argv[1], resp, sizeof(resp), 10 * US_PER_SEC) < 0) {
+    ssize_t len;
+    if ((len = at_send_cmd_get_resp(&at_dev, argv[1], resp, sizeof(resp), 10 * US_PER_SEC)) < 0) {
         puts("Error");
         return 1;
     }
 
-    printf("Response: %s\n", resp);
+    printf("Response (len=%d): %s\n", (int)len, resp);
+
+    return 0;
+}
+
+static int send_ok(int argc, char **argv)
+{
+    if (argc < 2) {
+        printf("Usage: %s <command>\n", argv[0]);
+        return 1;
+    }
+
+    if (at_send_cmd_wait_ok(&at_dev, argv[1], 10 * US_PER_SEC) < 0) {
+        puts("Error");
+        return 1;
+    }
+
+    puts("OK");
+
+    return 0;
+}
+
+static int send_lines(int argc, char **argv)
+{
+    if (argc < 2) {
+        printf("Usage: %s <command>\n", argv[0]);
+        return 1;
+    }
+
+    ssize_t len;
+    if ((len = at_send_cmd_get_lines(&at_dev, argv[1], resp, sizeof(resp), 10 * US_PER_SEC)) < 0) {
+        puts("Error");
+        return 1;
+    }
+
+    printf("Response (len=%d): %s\n", (int)len, resp);
 
     return 0;
 }
@@ -81,6 +117,8 @@ static int drain(int argc, char **argv)
 static const shell_command_t shell_commands[] = {
     { "init", "Initialize AT device", init },
     { "send", "Send a command and wait response", send },
+    { "send_ok", "Send a command and wait OK", send_ok },
+    { "send_lines", "Send a command and wait lines", send_lines },
     { "drain", "Drain AT device", drain },
     { NULL, NULL, NULL },
 };