diff --git a/test/ratectrl_qmode_test.cc b/test/ratectrl_qmode_test.cc
index a4df92a..b3df70c 100644
--- a/test/ratectrl_qmode_test.cc
+++ b/test/ratectrl_qmode_test.cc
@@ -35,6 +35,7 @@
 constexpr int kRefFrameTableSize = 7;
 constexpr int kFrameWidth = 352;
 constexpr int kFrameHeight = 288;
+constexpr int kFrameLimit = 250;
 
 MATCHER(IsOkStatus, "") {
   *result_listener << "with code " << arg.code
@@ -60,7 +61,8 @@
 }
 
 void ReadFirstpassInfo(const std::string &filename,
-                       aom::FirstpassInfo *firstpass_info) {
+                       aom::FirstpassInfo *firstpass_info,
+                       const int frame_limit) {
   // These golden files are generated by the following command line:
   // ./aomenc --width=352 --height=288 --fps=30/1 --limit=250 --codec=av1
   // --cpu-used=3 --end-usage=q --cq-level=36 --threads=0 --profile=0
@@ -80,7 +82,9 @@
   firstpass_info->num_mbs_16x16 =
       (kFrameWidth / 16 + 1) * (kFrameHeight / 16 + 1);
   std::string newline;
-  while (std::getline(firstpass_stats_file, newline)) {
+  int frame_number = 0;
+  while (std::getline(firstpass_stats_file, newline) &&
+         frame_number < frame_limit) {
     std::istringstream iss(newline);
     FIRSTPASS_STATS firstpass_stats_input = {};
     ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.frame), "");
@@ -115,6 +119,8 @@
                            << firstpass_info->stats_list.size() + 1 << "\n"
                            << newline;
     firstpass_info->stats_list.push_back(firstpass_stats_input);
+
+    frame_number++;
   }
 }
 }  // namespace
@@ -837,7 +843,7 @@
   FirstpassInfo firstpass_info;
   const std::string kFirstpassStatsFile = "firstpass_stats";
   ASSERT_NO_FATAL_FAILURE(
-      ReadFirstpassInfo(kFirstpassStatsFile, &firstpass_info));
+      ReadFirstpassInfo(kFirstpassStatsFile, &firstpass_info, kFrameLimit));
   EXPECT_THAT(GetKeyFrameList(firstpass_info),
               ElementsAre(0, 30, 60, 90, 120, 150, 180, 210, 240));
 }
@@ -1005,7 +1011,7 @@
 TEST_F(RateControlQModeTest, TestGopIntervals) {
   FirstpassInfo firstpass_info;
   ASSERT_NO_FATAL_FAILURE(
-      ReadFirstpassInfo("firstpass_stats", &firstpass_info));
+      ReadFirstpassInfo("firstpass_stats", &firstpass_info, kFrameLimit));
   AV1RateControlQMode rc;
   ASSERT_THAT(rc.SetRcParam(rc_param_), IsOkStatus());
 
@@ -1022,7 +1028,7 @@
 TEST_F(RateControlQModeTest, TestGetGopEncodeInfo) {
   FirstpassInfo firstpass_info;
   ASSERT_NO_FATAL_FAILURE(
-      ReadFirstpassInfo("firstpass_stats", &firstpass_info));
+      ReadFirstpassInfo("firstpass_stats", &firstpass_info, 50));
   AV1RateControlQMode rc;
   rc_param_.max_gop_show_frame_count = 16;
   ASSERT_THAT(rc.SetRcParam(rc_param_), IsOkStatus());
@@ -1033,7 +1039,7 @@
   const aom::VideoInfo input_video = {
     kFrameWidth, kFrameHeight,
     frame_rate,  AOM_IMG_FMT_I420,
-    250,         libaom_test::GetDataPath() + "/hantro_collage_w352h288.yuv"
+    50,          libaom_test::GetDataPath() + "/hantro_collage_w352h288.yuv"
   };
   DuckyEncode ducky_encode(input_video, 3, 3);
   ducky_encode.StartEncode(firstpass_info.stats_list);
