In the last couple months that, when dealing with C extensions, it's best to put two more types of tests in your test suite.
First, make sure you're not modifying the receiver when you're not supposed to:
var = "hello"
assert_nothing_raised{ some_method(var) }
assert_equal("hello", var)
I was burned by this recently. I'm going to make this a regular habit, though I think it's safe to say that it's only worrisome for strings.
Second, run a tight loop with lots of iterations to check for potential memory leaks/segfaults:
1000.times{ assert_nothing_raised{ some_method }
I've caught one or two nasty bugs with this, where things seemed completely fine with a once-over, but started failing under heavier load. I suppose this could be problematic if your overall time to run the test suite starts to get outrageous.