diff --git a/bigquery/integration_test.go b/bigquery/integration_test.go
index 03f3915..593aa2d 100644
--- a/bigquery/integration_test.go
+++ b/bigquery/integration_test.go
@@ -264,7 +264,7 @@
 		t.Errorf("location: got %q, want %q", got, want)
 	}
 	if err := ds.Delete(ctx); err != nil {
-		t.Fatalf("deleting dataset %s: %v", ds, err)
+		t.Fatalf("deleting dataset %v: %v", ds, err)
 	}
 }
 
diff --git a/bigquery/iterator_test.go b/bigquery/iterator_test.go
index 2fe1c70..1ecfb53 100644
--- a/bigquery/iterator_test.go
+++ b/bigquery/iterator_test.go
@@ -355,7 +355,7 @@
 		struct{}{},
 	} {
 		if err := it.Next(v); err == nil {
-			t.Error("%v: want error, got nil", v)
+			t.Errorf("%v: want error, got nil", v)
 		}
 	}
 }
diff --git a/bigquery/uploader_test.go b/bigquery/uploader_test.go
index 0f7cc64..d0fbab2 100644
--- a/bigquery/uploader_test.go
+++ b/bigquery/uploader_test.go
@@ -93,7 +93,7 @@
 		}
 		want := tc.req
 		if !testutil.Equal(got, want) {
-			t.Errorf("%#d: %#v: got %#v, want %#v", i, tc.ul, got, want)
+			t.Errorf("%d: %#v: got %#v, want %#v", i, tc.ul, got, want)
 		}
 	}
 }
diff --git a/bigtable/bttest/inmem_test.go b/bigtable/bttest/inmem_test.go
index 5c633fe..3b785de 100644
--- a/bigtable/bttest/inmem_test.go
+++ b/bigtable/bttest/inmem_test.go
@@ -17,6 +17,7 @@
 import (
 	"fmt"
 	"math/rand"
+	"strconv"
 	"sync"
 	"sync/atomic"
 	"testing"
@@ -26,7 +27,6 @@
 	btapb "google.golang.org/genproto/googleapis/bigtable/admin/v2"
 	btpb "google.golang.org/genproto/googleapis/bigtable/v2"
 	"google.golang.org/grpc"
-	"strconv"
 )
 
 func TestConcurrentMutationsReadModifyAndGC(t *testing.T) {
@@ -430,7 +430,7 @@
 		t.Fatal("Response count: got 0, want > 0")
 	}
 	if len(mock.responses[0].Chunks) != 27 {
-		t.Fatal("Chunk count: got %d, want 27", len(mock.responses[0].Chunks))
+		t.Fatalf("Chunk count: got %d, want 27", len(mock.responses[0].Chunks))
 	}
 	testOrder := func(ms *MockReadRowsServer) {
 		var prevFam, prevCol string
@@ -480,7 +480,7 @@
 		t.Fatal("Response count: got 0, want > 0")
 	}
 	if len(mock.responses[0].Chunks) != 18 {
-		t.Fatal("Chunk count: got %d, want 18", len(mock.responses[0].Chunks))
+		t.Fatalf("Chunk count: got %d, want 18", len(mock.responses[0].Chunks))
 	}
 	testOrder(mock)
 
@@ -511,7 +511,7 @@
 		t.Fatal("Response count: got 0, want > 0")
 	}
 	if len(mock.responses[0].Chunks) != 30 {
-		t.Fatal("Chunk count: got %d, want 30", len(mock.responses[0].Chunks))
+		t.Fatalf("Chunk count: got %d, want 30", len(mock.responses[0].Chunks))
 	}
 	testOrder(mock)
 }
diff --git a/bigtable/filter.go b/bigtable/filter.go
index f9d5cee..b8e453b 100644
--- a/bigtable/filter.go
+++ b/bigtable/filter.go
@@ -181,7 +181,7 @@
 }
 
 func (trf timestampRangeFilter) String() string {
-	return fmt.Sprintf("timestamp_range(%s,%s)", trf.startTime, trf.endTime)
+	return fmt.Sprintf("timestamp_range(%v,%v)", trf.startTime, trf.endTime)
 }
 
 func (trf timestampRangeFilter) proto() *btpb.RowFilter {
diff --git a/bigtable/retry_test.go b/bigtable/retry_test.go
index ebbcf0e..cbeb8d1 100644
--- a/bigtable/retry_test.go
+++ b/bigtable/retry_test.go
@@ -232,7 +232,7 @@
 	}
 	errors, err = tbl.ApplyBulk(ctx, []string{"row1", "row2"}, []*Mutation{m1, niMut})
 	if err != nil {
-		t.Errorf("unretryable errors: request failed %v")
+		t.Errorf("unretryable errors: request failed %v", err)
 	}
 	want := []error{
 		grpc.Errorf(codes.FailedPrecondition, ""),
diff --git a/firestore/transaction_test.go b/firestore/transaction_test.go
index 9e44662..fad528d 100644
--- a/firestore/transaction_test.go
+++ b/firestore/transaction_test.go
@@ -303,7 +303,7 @@
 		return c.RunTransaction(ctx, func(context.Context, *Transaction) error { return nil })
 	})
 	if got, want := err, errNestedTransaction; got != want {
-		t.Errorf("got <%v>, want <%V>", got, want)
+		t.Errorf("got <%v>, want <%v>", got, want)
 	}
 
 	// Non-transactional operation.
diff --git a/profiler/profiler_test.go b/profiler/profiler_test.go
index 70a78e5..c506b0b 100644
--- a/profiler/profiler_test.go
+++ b/profiler/profiler_test.go
@@ -635,15 +635,15 @@
 	var b bytes.Buffer
 	gz := gzip.NewWriter(&b)
 	if _, err := gz.Write(data); err != nil {
-		log.Printf("failed to write to gzip stream", err)
+		log.Println("failed to write to gzip stream", err)
 		return
 	}
 	if err := gz.Flush(); err != nil {
-		log.Printf("failed to flush to gzip stream", err)
+		log.Println("failed to flush to gzip stream", err)
 		return
 	}
 	if err := gz.Close(); err != nil {
-		log.Printf("failed to close gzip stream", err)
+		log.Println("failed to close gzip stream", err)
 	}
 }
 
diff --git a/pubsub/integration_test.go b/pubsub/integration_test.go
index c05f489..d94eba1 100644
--- a/pubsub/integration_test.go
+++ b/pubsub/integration_test.go
@@ -300,7 +300,7 @@
 		t.Fatal(err)
 	}
 	if !testutil.Equal(sc.PushConfig, PushConfig{}) {
-		t.Fatalf("got %+v, want empty PushConfig")
+		t.Fatalf("got %+v, want empty PushConfig", sc.PushConfig)
 	}
 	// Add a PushConfig.
 	projID := testutil.ProjID()
diff --git a/spanner/spanner_test.go b/spanner/spanner_test.go
index b87a3b0..8fbe4c5 100644
--- a/spanner/spanner_test.go
+++ b/spanner/spanner_test.go
@@ -114,7 +114,7 @@
 	ctx := context.Background()
 	ts := testutil.TokenSource(ctx, AdminScope, Scope)
 	if ts == nil {
-		log.Print("Integration test skipped: cannot get service account credential from environment variable %v", "GCLOUD_TESTS_GOLANG_KEY")
+		log.Printf("Integration test skipped: cannot get service account credential from environment variable %v", "GCLOUD_TESTS_GOLANG_KEY")
 		return
 	}
 	var err error
diff --git a/storage/integration_test.go b/storage/integration_test.go
index 284fd49..6be4de2 100644
--- a/storage/integration_test.go
+++ b/storage/integration_test.go
@@ -1012,7 +1012,7 @@
 		}
 		gotContents := string(got)
 		if gotContents != wantContents {
-			t.Errorf("%s: got %q, want %q", gotContents, wantContents)
+			t.Errorf("%s: got %q, want %q", msg, gotContents, wantContents)
 		}
 	}
 
@@ -1468,7 +1468,7 @@
 	})
 	if attrs != nil {
 		if got, want := attrs.RequesterPays, true; got != want {
-			t.Fatalf("attr.RequesterPays = %b, want %b", got, want)
+			t.Fatalf("attr.RequesterPays = %t, want %t", got, want)
 		}
 	}
 	// Object operations.
diff --git a/vision/apiv1/client_test.go b/vision/apiv1/client_test.go
index 268f0f2..c6f0ba0 100644
--- a/vision/apiv1/client_test.go
+++ b/vision/apiv1/client_test.go
@@ -194,7 +194,7 @@
 	_, err = c.annotateOne(ctx,
 		&pb.Image{Source: &pb.ImageSource{ImageUri: "http://foo.jpg"}},
 		nil, pb.Feature_LOGO_DETECTION, 1, nil)
-	if grpc.Code(err) != codes.NotFound {
-		t.Errorf("got %v, want NotFound")
+	if c := grpc.Code(err); c != codes.NotFound {
+		t.Errorf("got %v, want NotFound", c)
 	}
 }
