Was working on a project where every other checkin would break some test, and it wasn’t because of bugs.
Test where failing because of changes to UX, element id’s, paths, etc.
Could feel that people where losing confidence in our automated testing.
I use to feel like some software developers where trying to make me look bad.
That was all in my head and not completely true.
I still want to work with people who help me do the best job. Might sounds a little selfish, but it’s true.
A] Write Unit Test
It’s a very strong first line of defense. Who wants to be the second line of defense when the first line surrenders without a fight? I sure don’t.
B] Run Smoke Test Before Checking In Code
Number one pet peeve – Being handed a peice of software that clearly doesn’t work at all.
C] Add unique ID’s to Important UI Elements
Makes it a lot easier to automate because you don’t have to write complex CSS or XPath to select elements. There’s also a speed increase from being able to search & find elements by ID.
D] Names & ID’s Should Be Human Friendly
userName is a lot better then input123 More points on human readbility
E] Give Testers a Heads Up Before Major Changes
Save the QA teams time trying to figure out why test are failing, only to find that it was because of a system change.
F] Favor standard Web Elements
use < input > over < div > for HTML tags
G] Repeat Class Names & Other Attributes ONLY If They Make Sense
Do you really think
should have the same class name? 99% of the time they shouldn’t.
H] Help Avoid The AJAX Sandwich
If the page is loaded with AJAX help QA out by writing a “test hook” that will let them now that loading is completely done.
I] Avoid Telerik controls
Trust Me Don’t Do It. Telerik custom controls don’t play well with others. Maybe in the future they will change but for now it’s better to just avoid it.
J] Avoid Nesting iFrames
Selenium struggles with nested iFrames so you would save a lot of headache by only using them as a final option.
K] No Compound Class Names Example: (e.g. classname=”classPart1 classpart2” ) – Selenium doesn’t play friendly with them.
Most of the rules can be implemented with little change to development. In the end most of these boil down to a lack of communication. We all just want to be understood.