Add a cup of water and salt to a non-stick 8-9" skillet. Bring to a boil. Blanch the asparagus by adding it to the water and boil for 2-3 minutes or until just crisp tender. While asparagus cooks prepare an ice bath (ice and water) in a medium bowl. Transfer blanched asparagus to the ice water to shock it and stop the cooking. (This also helps preserve the bright green color of the vegetable). Dry the asparagus lightly with paper towels and transfer to a small bowl. Set aside.
Pour the water out of the pan and dry it. Set the pan back on the burner and add olive oil. Heat over medium-medium high heat and add mushrooms. Cook until mushrooms give off their liquid and begin to brown, 3-4 minutes. Add mushrooms to the asparagus and toss to combine.
In a medium bowl crack the eggs and add salt and pepper. Whisk to combine.
Spray the pan liberally with non-stick cooking spray. When pan is hot, add the eggs into the center of the pan. Do not stir or jostle the pan around. Sprinkle the asparagus and mushroom mixture evenly over the eggs. Sprinkle the tomatoes and goat cheese over the egg mixture. Cook for about 2-3 minutes until edges begin to cook through, but center is still wet.
Transfer the skillet to the oven and cook for 5-6 minutes until center of frittata is set. Turn the broiler on and brown the top of the frittata for 1-2 minutes or until desired doneness.
Let frittata rest for a minute or two, then use a pliable spatula (I like my very thin and flexible fish spatula for this) to remove frittata from the pan and transfer to a serving plate. Sprinkle with red onion if desired. Cut into wedges and serve.
Note: You can substitute egg beaters for the eggs -- figure 1 cup of egg beaters will replace the eggs.