Author Archives:

Choosing Values for Robust Tests

This article was adapted from a Google Tech on the Toilet (TotT) episode. You can download a printer-friendly version of this TotT episode and post it in your office.

By Radion Khait

A test passes. Great! But does it really mean your code is working as expected? Not necessarily.Sometimes the values you choose in your tests can create a false sense of security, especially when dealing with default values.

Consider this snippet of a simple map class and its corresponding unit test:

Implementation

Test

void MyMap::insert(int key, int value) {

  // Oops! The map entry is default-initialized, 

  // the second parameter is not used.

  internal_map_[key];

}

TEST(MyMapTest, Insert) {

  MyMap my_map;

  my_map.insert(1, 0);


  // This passes!

  EXPECT_EQ(my_map.get(1), 0); 

}

The test passes, but the insert method is broken! It never actually stores the value. The test only passes because the default value for an integer in the map (0) happens to match the value used in the test.

When choosing test values, consider the following:

  • Test with non-default values. Explicitly test with values different from the type's default (e.g., non-zero numbers, non-empty strings, enum values other than the one at index 0). This provides greater confidence that your code is actually using the provided input.

TEST(MyMapTest, Insert) {

  MyMap my_map;

  my_map.insert(1, 5);

  // This test would fail and reveal the bug in

  // the implementation above: “Expected 5, got 0”.

  EXPECT_EQ(my_map.get(1), 5);

}

  • Test multiple inputs that cover different scenarios, where it is reasonable to do so.

    • Consider empty/missing/null values, numerical boundaries, and special cases that trigger complex logic. Try to cover all distinct code/logic paths.

    • Consider using fuzzing to more thoroughly cover the input domain.

  • Use different values for each input. This guarantees the code under test doesn't accidentally reuse a single input or switch their order. Parameterized testing can also help test a large variety of inputs with minimal code duplication.

TEST(MyMapTest, Insert) {

  // Use a different value for `key` and `value`.

  my_map.insert(/*key=*/1, /*value=*/2);

  EXPECT_EQ(my_map.at(1), 2);

}




This entry was posted in Uncategorized on by .

Stable Channel Update for ChromeOS / ChromeOS Flex

M-148, ChromeOS version 16640.57.0 (Browser version 148.0.7778.250) has rolled out to ChromeOS devices on the Stable channel. 

If you find new issues, please let us know one of the following ways:

  1. File a bug

  2. Visit our ChromeOS communities

    1. General: Chromebook Help Community

    2. Beta Specific: ChromeOS Beta Help Community

  3. Report an issue or send feedback on Chrome

  4. Interested in switching channels? Find out how.


Andy Wu

Google ChromeOS


This entry was posted in Uncategorized on by .

Gmail as a source in Ask Gemini in Drive now generally available

Gmail sources in Ask Gemini in Drive is now generally available and has started rolling out to eligible Google Workspace and Google AI plans.

Ask Gemini in Drive offers a dedicated, immersive workspace designed for deep focus. Users can engage in high-context, multi-turn conversations to efficiently explore and understand content.

Previously, users could only add files and folders as sources within Ask Gemini in Drive. Now, users can unlock deeper insights by adding Gmail threads as sources in Ask Gemini for Drive. Users can ground their responses in a complete view of their business context—spanning emails, files, and folders—to ensure the most helpful and accurate answers possible.

Visit the Help Center for more information on the locations and languages where Ask Gemini in Drive is currently supported.

Getting started

Rollout pace

Availability

  • Business: Business Standard and Plus
  • Enterprise: Enterprise Standard and Plus
  • Consumer: Google AI Pro and Ultra
  • Education Add-ons: Google AI Pro for Education
  • Other Add-ons: AI Expanded Access

Resources

This entry was posted in Uncategorized on by .

Bringing Gemma 4 12B to your Laptop: Unlocking Local, Agentic Workflows with Google AI Edge

Google DeepMind’s Gemma 4 12B model brings agentic, multimodal AI capabilities to everyday laptops with 16GB of RAM, enabling local data processing and visual insight generation. Users can leverage this model on macOS through the Google AI Edge Gallery for dynamic Python code execution and visualization, as well as via Google AI Edge Eloquent for completely offline voice dictation and text editing. Additionally, developer workflows are enhanced by the LiteRT-LM CLI's new serve command, which creates an industry-compatible local endpoint to power fully-local AI tools and agents.
This entry was posted in Uncategorized on by .

Gemma 4 12B: The Developer Guide

The newly released Gemma 4 12B is a dense, multimodal model designed for high-performance local AI execution on consumer devices. By introducing a novel, encoder-free architecture, it bypasses traditional visual and audio encoders to feed multimodal data directly into the LLM backbone.
This entry was posted in Uncategorized on by .