Samantha Taylor also testified that Pistorius slept with a pistol on his bedside table or on the floor beside his prosthetic legs, and once became so angry after a traffic stop that he shot a gun through the sunroof of a car.
Pistorius pleaded not guilty Monday to one charge of murder and a firearms charge associated with Steenkamp's killing on Valentine's Day 2013, as well as two gun indictments unrelated to her death. Pistorius, 27, nicknamed "Blade Runner," has admitted killing his 29-year-old model girlfriend, but says it was a tragic error after he mistook her for an intruder.
Taylor said she met Pistorius in 2010, when she was 17, and they started dating the following year. She said they broke up twice, the second time on November 4, 2012, after he took Steenkamp to a sports banquet.
Defense lawyer Barry Roux asked if Taylor admitted in two e-mails to cheating on Pistorius. Taylor says she's never admitted to cheating on him but admits she had a relationship with another man after they broke up the first time.
Roux also asked Taylor for details about the time he supposedly shot the gun out of the sunroof of a car that they were both traveling in as passengers, but Taylor could not remember the name of the highway or the part of South Africa where the incident happened.
Taylor testified that Pistorius was angry and irritated after the traffic stop, even though he was not driving. She said he joked around about firing a shot and then, after he fired the shot, he laughed.
Prosecutor Gerrie Nel asked Taylor if she was ever at Pistorius' house and he thought there was an intruder. Taylor said yes.
Taylor said Pistorius once heard something hit the bathroom window and woke her up to ask if she'd heard it, too. Taylor said Pistorius woke her up other times when he thought he'd heard a noise.
The fifth day of the Pistorius murder trial opened Friday with the defense trying to chip away at testimony of a neighbor who rushed to the track star's home the night he shot Steenkamp.
Roux pointed out that Johan Stipp, a doctor who lived near Pistorius and the first person to arrive at the scene, made two statements to police and both times said he heard "two or three shots."
"You could not be sure of the number of noises you heard," Roux said.
"It would be fair to say that," said Stipp, on his second day of testimony.
Roux also asked Stipp about screams he heard. Stipp said Thursday the man's screaming came from "much more to the left" of the initial screams. On Friday, Stipp said the screams came "slightly from the left."
Pistorius broke down in court Thursday as Stipp said he went to Pistorius' residence after hearing the shots. He said he saw Steenkamp lying on the floor, her brain tissue mixed with blood and Pistorius praying for her to live.
"I remember the first thing he said when I got there was, 'I shot her, I thought she was a burglar and I shot her,' " Stipp told the court in Pretoria.
And although Stipp is a prosecution witness, his testimony may in fact bolster the defense case, CNN legal analyst Kelly Phelps said after Thursday's dramatic testimony.
Prosecutors appear to have been trying to demonstrate that Pistorius and Steenkamp had a loud argument before the shooting, suggesting that is the reason he killed her.
But the defense is proposing that what neighbors thought was Steenkamp screaming in fear for her life was in fact Pistorius screaming when he realized what he had done.
Pistorius and at least two neighbors made phone calls to security after the shooting, allowing the defense to use phone records to establish a timeline of events to the second.
Stipp's version of events appears to coincide with the defense case, said Phelps, who teaches law at the University of Cape Town.
See more at CNN.com.