Guntha
The only things that seems weird to in what you say is that this process slows down development; what prevents you from working while a test process is on its way? The next test process will be about testing the new batch of bug fixes, I don't see how this affects development at all. I have never been in a position where I had to stop working while a test was being made, except maybe when very close to release and we try to fix one last thing.
ratchetfreak
One option is to start optimizing the tests so they they don't take 3 days. (or throw more hardware at the problem)
Another way to speed up the iteration cycle is to batch up several (minor) changes and test those together in a single test run, if it fails then you test just the failed tests against each change to isolate where the fault happened. Testing each individual changes against the full suite is a waste of time.
Integration tests are important and you cannot rely on human to know what will be affected by each change.
notnullnotvoid
Everything in this thread seems utterly insane to me. Why do your regression tests take 3 entire days to run!? In what universe is developer time so much more expensive than QA time that a few minutes of developer time could outweight 3 days of QA time!?!? The way you describe the process, it sounds like QA is *preventing* you from fixing bugs in a timely manner, which is just 100% backwards. If what you say is accurate, it seems like multiple things must have gone very badly wrong already in the organization of your company's development process for things to get to this point.
Flyingsand
The regression tests take so long to get through because there are just under 200 individual test cases that need to be manually tested on each of the testing devices (1 iPhone, 1 iPad, 1 simulator).
Flyingsandnotnullnotvoid
Everything in this thread seems utterly insane to me. Why do your regression tests take 3 entire days to run!? In what universe is developer time so much more expensive than QA time that a few minutes of developer time could outweight 3 days of QA time!?!? The way you describe the process, it sounds like QA is *preventing* you from fixing bugs in a timely manner, which is just 100% backwards. If what you say is accurate, it seems like multiple things must have gone very badly wrong already in the organization of your company's development process for things to get to this point.
It is, isn't it. Glad I'm not alone in thinking so. :)
The regression tests take so long to get through because there are just under 200 individual test cases that need to be manually tested on each of the testing devices (1 iPhone, 1 iPad, 1 simulator). We've written a pretty decent set of unit & integration tests, but our QA manager hasn't vetted them so she won't accept them as validation.
The company I'm at is relatively young, so there isn't a history of bad development or anything, but our QA manager is a pretty recent hire (about 6 months ago) and we have never had a QA manager before (only a QA team that reported to the Product Director). I expect that the QA manager has a baggage of bad experience that she thinks that any code added or modified is going to cause ripple effects and unearth more bugs than it fixes.. or something..
And it's not like we don't do code reviews either. Everything we do gets seen by at least 2 other developers before it can be merged into the dev branch. It's just strange for me because I've been programming for quite awhile, but I've mostly been at smaller agencies or done freelance/contract work. This is my first time at a larger company, and I'm just baffled at the QA process. It wasn't even like this when I started, just since the QA manager got hired and started "formalizing" everything.
godratio
Like you said why would they take your word for it that its just this part of the app that is affected by your "clever" fix.
Many a times that has been said and many a millions of dollars have been lost.
Just let QA do their job and you do yours.
If you want to take responsibility and give up your whole salary if something goes wrong than sure we will take your word for it.
Don't get me wrong, I understand that QA needs to maintain a sort of separation from developers and can't just rely on us assuring them that "it'll be fine, trust me".
Flyingsand
if there was a tool where you could say, "This function changed, now show me all the areas affected by this change". i.e. all the code that depends on that function either by calling it or it calling other functions, or modifying any global or shared state.
Guntha
...Actually, that's the way it was done on every game I professionally worked on. Except for the progress slow-down part, which I still don't understand.
mmozeiko
I'm pretty sure such tool does not exist and will not exist. There are so many different hidden ways to modify global/shared state directly or indirectly through OS that either you'll be fighting with countless false positives - one "malloc" (or similar functionality) modifies every other place in program due to global state change. Or it won't find almost anything at all except direct compilation errors which are pretty useless for integration testing.