Do not use existing data. It is a terrible practice for it and there is almost never a need to do it. Using existing data will cause serious issues whenever you create a new sandbox or attempt to move any code to a different organization.
It is considered a very bad practice. There is a reason Salesforce removed the ability to access data from the system by default in version 24. Problems like - UNABLE_TO_LOCK_ROW error while running all apex test classes - pop up when running asynchronous tests. Avoid those problems now and write the tests with the best practice right out the gate.
Here is some good documentation on writing unit tests. There is also Isolation of Test Data from Organization Data in Unit Tests.
EDIT: A common practice my coworkers and I have used is creating a TestUtils class and using that class to create the data model. That would allow you to do something like:
@isTest
public class TestUtils{
public static Account getAccount(){
Account acc = new Account(Name = 'Account');
insert acc;
return acc;
}
}
then from your test method:
@isTest
public class TestClass{
static testMethod void myTest() {
Account acc = TestUtils.getAccount();
}
}
This will generate an account, insert it into the DB, and then return it to be used in the test. This can then be reused around the system.