diff --git a/pw_hdlc/encoded_size_test.cc b/pw_hdlc/encoded_size_test.cc
index 6dde795..216d482 100644
--- a/pw_hdlc/encoded_size_test.cc
+++ b/pw_hdlc/encoded_size_test.cc
@@ -271,7 +271,7 @@
     if (frame.ok()) {
       EXPECT_EQ(frame->address(), kNoEscapeAddress);
       EXPECT_EQ(frame->data().size(), kNoEscapePayload.size());
-      EXPECT_TRUE(std::memcmp(frame->data().begin(),
+      EXPECT_TRUE(std::memcmp(frame->data().data(),
                               kNoEscapePayload.begin(),
                               kNoEscapePayload.size()) == 0);
     }
diff --git a/pw_log/proto_utils_test.cc b/pw_log/proto_utils_test.cc
index 38b8792..b928c45 100644
--- a/pw_log/proto_utils_test.cc
+++ b/pw_log/proto_utils_test.cc
@@ -34,8 +34,8 @@
   EXPECT_EQ(entry_decoder.FieldNumber(),
             static_cast<uint32_t>(log::LogEntry::Fields::MESSAGE));
   EXPECT_TRUE(entry_decoder.ReadBytes(&tokenized_data).ok());
-  EXPECT_TRUE(std::memcmp(tokenized_data.begin(),
-                          expected_tokenized_data.begin(),
+  EXPECT_TRUE(std::memcmp(tokenized_data.data(),
+                          expected_tokenized_data.data(),
                           expected_tokenized_data.size()) == 0);
 
   uint32_t line_level;
@@ -85,8 +85,8 @@
     EXPECT_EQ(entry_decoder.FieldNumber(),
               static_cast<uint32_t>(log::LogEntry::Fields::THREAD));
     EXPECT_TRUE(entry_decoder.ReadBytes(&tokenized_thread_name).ok());
-    EXPECT_TRUE(std::memcmp(tokenized_thread_name.begin(),
-                            expected_thread_name.begin(),
+    EXPECT_TRUE(std::memcmp(tokenized_thread_name.data(),
+                            expected_thread_name.data(),
                             expected_thread_name.size()) == 0);
   }
 }
diff --git a/pw_log_rpc/test_utils.cc b/pw_log_rpc/test_utils.cc
index 3a06ec2..4831d58 100644
--- a/pw_log_rpc/test_utils.cc
+++ b/pw_log_rpc/test_utils.cc
@@ -38,10 +38,10 @@
   ASSERT_EQ(entry_decoder.FieldNumber(), static_cast<uint32_t>(field_number));
   ASSERT_EQ(entry_decoder.ReadBytes(&tokenized_data), OkStatus());
   std::string_view data_as_string(
-      reinterpret_cast<const char*>(tokenized_data.begin()),
+      reinterpret_cast<const char*>(tokenized_data.data()),
       tokenized_data.size());
   std::string_view expected_data_as_string(
-      reinterpret_cast<const char*>(expected_data.begin()),
+      reinterpret_cast<const char*>(expected_data.data()),
       expected_data.size());
   EXPECT_EQ(data_as_string, expected_data_as_string);
 }
diff --git a/pw_span/span_test.cc b/pw_span/span_test.cc
index 9e46d53..4a56ba5 100644
--- a/pw_span/span_test.cc
+++ b/pw_span/span_test.cc
@@ -145,8 +145,8 @@
   char& operator[](size_type index) const { return data_[index]; }
   pointer data() const { return data_.data(); }
   size_type size() const { return data_.size(); }
-  iterator begin() const { return data_.begin(); }
-  iterator end() const { return data_.end(); }
+  iterator begin() const { return data_.data(); }
+  iterator end() const { return data_.data() + size(); }
 
  private:
   span<char> data_;
