My Article Series
A list of my article series for convenient access
Table of Contents:· Quick Guide
· How to do X in Selenium WebDriver?
· Functional Test Refactoring
· Optimize Selenium WebDriver Automated Test Scripts
· Why Do Most UI Test Automation Fail?
· Benefits of Continuous Testing
· IT Terminology Clarified
· Software Design Pattern by Example
· Be aware of Fake Test Automation/DevOps Engineers
· Chinese Idiom Stories for Software Professionals
Quick Guide
- 10-Minute Guide to Git Version Control for Testers
- 10-Minute Guide to Set up Test Automation using Selenium WebDriver with Ruby
- Step by Step showing how to learn to write raw Selenium WebDriver test scripts in minutes
- Set up, Develop Automated UI tests and Run them in a CT server on your First day at work
- Set Up a Continuous Testing Server to Run Selenium Tests in Minutes
How to do X in Selenium WebDriver?
- Test AJAX Properly and Efficiently with Selenium WebDriver, and Avoid ‘Automated Waiting’
- Automated Testing Charts in Selenium WebDriver
- Drive Chrome with Extensions using Selenium WebDriver
- Reloading a Chrome Extension using Selenium WebDriver
- Use Regular Expressions in Test Automation
- Automating Shadow DOM with Selenium WebDriver
- How to avoid hCaptcha with Selenium WebDriver?
- An Unsuccessful Attempt to use OCR to Pass text-based Captcha in Selenium Automated Tests
- Draw on a Canvas using Selenium WebDriver
- Automated Testing QR Codes in Selenium WebDriver
- Automated Testing Frames in Selenium WebDriver
- Testing Emails in Automated Test Scripts with Fake SMTP server: MailCatcher
- Practical DDT: Randomized data scenarios in one automated test script + Continuous Testing
- Automated Testing PDF Download in Selenium WebDriver
- Selenium 4 Chrome DevTools Examples
- Selenium 4 Relative Locator Examples
- Case Study: Simulate Two Users with Selenium Automation Scripts
- Case Study: Automated Testing ‘Login with Remember Me’ in Selenium WebDriver
- Advice on Self-Learning Test Automation with Selenium WebDriver
Functional Test Refactoring
Automated test scripts are often poorly designed, inefficient, and hard to understand and maintain, i.e., the same issues we found in code. Functional Test Refactoring is a process of enhancing the quality of automated functional test scripts.
- Functional Test Refactoring: Introduction
- Functional Test Refactoring: Extract Function
- Functional Test Refactoring: Move to Helper
- Functional Test Refactoring: Move
- Functional Test Refactoring: Extract to Page Function
- Functional Test Refactoring: Introduce to Page Object
- Functional Test Refactoring: Rename
Optimize Selenium WebDriver Automated Test Scripts
Working automated test scripts is only the first test step to successful test automation. As automated tests are executed often and the application changes frequently too, it is important that test scripts need to be fast, easy to maintain and read.
- Optimize Selenium WebDriver Automated Test Scripts: Speed
- Optimize Selenium WebDriver Automated Test Scripts: Maintainability
- Optimize Selenium WebDriver Automated Test Scripts: Readability
Why Do Most UI Test Automation Fail?
FACT: not many software engineers (in Test) received proper education or training in test automation, which is unfortunate. Considering this: 30–40% of staff in a software team are usually testers. Programmers and business analysts spend a lot of time performing functional testing as well. However, there are few dedicated Functional Testing courses offered at universities to my knowledge. Therefore, it is not surprising that many wrong decisions on test automation are made due to a lack of knowledge.
(Technical)
- Wrong choice of automation framework
- Wrong choice of test syntax framework
- Wrong test scripting language
- Wrong choice of test automation tool
- Don’t know how to design easy-to-maintain test scripts
- Lack of Efficiency
- Lack of experience in executing a medium-size regression suite of automated UI tests
(Human)
- Management under-estimate the effort, especially on test maintenance
- Tech leads over-estimate their capability in test automation
- Tech leads are fixated with a particular wrong technologies
- No access to a real Test Automation Coach
Benefits of Continuous Testing
Continuous Testing (enables software teams to push software updates to production daily, not fake CI/CD talks. Check out “Continuous Integration at Facebook” and AgileWay Continuous Testing Grading) is the heart of the software development process. It benefits all stakeholders of a software project.
1. Part 1: to Wise Executives
2. Part 2: to Wise Managers
3. Part 3: to Wise Business Analysts
4. Part 4: to Wise Developers
5. Part 5: to Wise Testers
6. Part 6: to Happy Customers
IT Terminology Clarified
In software development, particularly in software testing, there are many terminologies that are used wrongly by IT professionals.
- Unit Testing Clarified
- User Story Card Clarified
- Regression Testing Clarified
- Cross Browser Testing Clarified
- Headless Browser Testing Clarified
- ‘Data-Driven Testing’ Clarified
- ‘Shift Left Testing’ Clarified
- Continuous Testing Clarified
- Full-Stack Software Engineer Clarified
- Testing Pyramid Clarified
- BDD Clarified: BDD ≠ “Given-When-Then” (Gherkin)
- Codeless Test Automation is Irrational
- “Done, Done” in Agile
- Fake End-to-End Test Automation Clarified
- DevOps Clarified
- CI/CD Clarified
Software Design Pattern by Example
Design Patterns are good practices of Object-Oriented (OO) Software Design. Applying appropriate design patterns will help to design your software better. However, design patterns are not easy to master, it was the case for me, and my daughter as well when she started an IT degree at Uni. I wrote a series of articles to help her learn Design Patterns quickly. My approach is to use easy-to-understand exercises, which I believe is an easier way to master design patterns.
- Software Design Pattern By Example: Singleton
- Software Design Pattern By Example: Strategy
- Software Design Pattern By Example: Template Method
Programming Language Advice
- Programming Language Advice to My Daughter, Part 1: Ruby
- Programming Language Advice to My Daughter, Part 2: C++
- Programming Language Advice to My Daughter, Part 3: Java
- Programming Language Advice to My Daughter, Part 4: Shell Script
- Programming Language Advice to My Daughter, Part 5: Others
Be aware of Fake Test Automation/DevOps Engineers
- Be aware of the “fake it until you make it” mindset in Test Automation and CI/CD
- An IT Graduate’s frustration with a Fake ‘Senior Test Automation Engineer’
- Fake End-to-End Test Automation Clarified
- Selenium vs X, Y, Z, …, all these years
- False ‘Selenium WebDriver Cons’
- Evil Mudslingings against Selenium WebDriver
- Crazy Web Test Automation: “Freedom Is Slavery”
- Estimating Test Automation Story Points is a Total Waste of Time
- Protractor, another Automation Framework I rightly avoided, is being Deprecated
- Why Recording Videos for Automated Test Execution in Test Scripts is Wrong?
- Why is Object Identification GUI Utility in Test Automation Unnecessary?
- Why Gherkin (Cucumber, SpecFlow,…) Always Failed with UI Test Automation?
- Why Cypress sucks for real test automation? (Part 1)
- Why JavaScript Is Not a Suitable Language for Real Web Test Automation?
- Fake Code Review with ‘LGTM’
Chinese Idiom Stories for Software Professionals
Using Chinese idioms to explain some of the problems I have witnessed in the software industry (in particular, test automation and continuous testing) ”. Chinese idioms are insightful and often with interesting stories. Human nature has changed little, and these Chinese idioms stand the test of time (over 1000 years).
- #1 Seven-Step Poem (七步詩)
- #2 Lord Ye Loves Dragon (葉公好龍)
- #3 Imitating Beauty (东施效颦)
- #4 To win a war with words (纸上谈兵)
- #5 Practice makes perfect (熟能生巧)
- #6 A quiet man of sincerity attracts admiration (桃李不言,下自成蹊)
- #7 Be There Just to Make Up the Number (滥竽充数)
- #8 Cutting a Mark on the Boat to Find the Sword (刻舟求剑)
- #9 Covering One’s Ears to Steal a Bell (掩耳盗铃)
- #10 Self-Contradictory (自相矛盾)
- #11 Pulling Up the Seedlings to Help Them Grow(拔苗助长)
- #12 Learning to Walk in Handan (邯郸学步)
- #13 Buying the Case but Returning the Pearl (买椟还珠)
- #14 Waiting for Hares by the Tree(守株待兔)
- #15 Those Who Flee 50 Steps Laugh at Those Who Flee 100 Steps(五十步笑百步)
- #16 Complementing Each Other (相辅相成)