Keenum, who wasn't drafted, will vie for playing time behind starter Matt Schaub and backup T.J. Yates.
"I wanted to come to the Texans for a long time now," Keenum said. "I'm really glad it happened. I truly believe it's a first-class championship franchise and look forward to being part of a whole lot of championships in the years to come."
Keenum said he recently ran into Gary Kubiak at a local golf course, and the Texans' coach said the quarterback impressed him when they had their annual tryout camp for local players, according to the Chronicle.
"If other teams had seen him work out for us, he would have been drafted," Kubiak said. "He was a sponge when I was telling him things. He picked them up right away."
Keenum is the NCAA's all-time leader in passing yards with 19,217 and in touchdown passes with 155.