I don’t know why it surprises me when it happens but it always does. I always find myself in a position where I’m not just working on one product but two (or three). Clearly my brilliance is evident to others but I just don’t see it. The stuff I do simply makes sense. I’m not sure why it surprises people.
I think I mentioned I was promoted into an Architect position for the QA (testing) team. I currently sit between two products directing the creation of their automation. One has a long standing automation infrastructure which had samples of intelligence buried under bandages and duct tape that has long since given way and is now using old bubble gum as an adhesive. It’s getting fixed. The team (which is a team now, not just me and the other guy) is working hard at it. They know what needs to be done and they’re working on it when they can while moving things forward. I’m pleased with where things are going.
The other team was going down the route new automation teams tend to go – just get it done! It’s only testing! Record and playback works! Look at all the tests we’ve automated! Wheeeeeee!
Plan out your automation, investigate options early and with heavy involvement with the development team. They’re going to be writing code that you’re going to be writing code to mimic a user against – if they’re using code that won’t work with any automation tool out there, you’re starting off in a bad spot (“stuck between a rock and a crazy place” to quote Big Bang Theory). Consider your target audience, size of the team, willingness to expand and skill sets on hand. Maybe your team leverages test cases created by QA and automates them. Maybe the team puts some sort of infrastructure in place where the framework interprets what QA wants (keyword driven) or maybe the automation team builds library for others to use.
Speaking of skill sets, you want programmers otherwise you’ll end up with a bunch of QA people creating a bunch of recorded scripts that will break as soon as you change the URL to the webserver or move something like a log in around. Heaven forbid you do a UI revamp. All those scripts are going to have to be recorded all over again.
Always investigate the coding options of automation tools; don’t even let the sales team table the record and playback functionality – you don’t want that.
Why? Well, record and playback tools do not allow for modular code (yet). They might break steps into functions but they don’t call those functions again or from another script. Imagine you have over 100 scripts and each one starts with logging in as a specific user – maybe the same user, maybe a different one. What happens if you have to change the user? The password? The procedure to log in? That last one means changing 100 scripts. Sure, you can do a find replace in files or a bunch of copy/pastes but why should you when you could have that log in code centralized in a library of methods to interact with your product? One method or function – 100 scripts calling it. Log in changes? No worries, change the steps in the method/function and no need to change the 100 scripts.
That’s the sort of thing you don’t think about or consider with record and playback tools.
Another thing record and playback tend to miss is a verify/validation step. Sure you just recorded a script that successfully added a user to a database… but are you sure? Did you record checking? Does the tool include a means of ‘looking’ at a value to ensure it’s there? Ensure there is only one? You’d be really surprised at how many record and playback tools do not have that.
What about reporting? Yeah, that’s a pretty result to give me, the person running the test but it means nothing to my manager or my manager’s manager or the product manager. What about previous results? What about results for the same test in older versions? Again, not something built in to these tools.
Let’s not forget source control for all this code, possibly some of the collateral as well. You don’t want to lose it and it serves no one if Ted has all the latest stuff while Nancy doesn’t and is writing scripts based on old code that doesn’t work. You need it central, shared and backed up. Source control – use it.
That’s where I’m at with the other team. I’m pushing them away from the bad and into the good.
And they’re doing a great job of it – really!
So that’s where I’m at. Work work work.
Though they did give me a raise to go along with the new position and I’m no longer on probation.
I’m feeling good 🙂