LEAN is about being smarter and more cost effective in the project cycle to reduce waste and optimize the processes within the said project.
In a time where more and more companies are trying to be leaner, there’s a critical need for teams working with automated tests to dive in to the Lean mindset when they’re thinking about their automated suites.
Automation brings tremendous value for the software projects we work on. We can increase that value by bringing some Lean ideas to how we maintain our automation.
Lean in test automation isn’t just about the large-scale business value; it can be about the small details of the tests themselves.
Lean helps us focus on delivering great value to our customers, regardless of who they are. Minimalism, clarity, and reducing waste are huge benefits of a Lean mindset. Why wouldn’t we want to apply those same ideas to our test automation software too?
To get Lean, we need to eliminate waste. The Japanese term for this waste is MUDA
What is Muda?
Muda (無駄 ?) is a Japanese word meaning “futility; uselessness; wastefulness”. This concept originated from manufacturing industry and over time, “eliminate waste” has become the fundamental concept of Lean.
It is all about determining areas that needs to be improved. Improvement comes by performing useful activities & reducing waste. This is an effective way to increase efficiency.
Let’s identify & eliminate some waste resulting during software test automation:
Waste #1: Relearning
Meaning: Not using the knowledge that is available within the team members, trying to reinvent the wheel.
There are few of the possible reasons:
- Lack of a proper knowledge-sharing process within the team
- Lack of required documentation availability
- Missing communication mechanism
- Distributed teams
How can we eliminate this type of waste?
The team should share their knowledge continuously. Try to keep all important information displayed in a team space so that everyone has equal access. Make sure to document the information/knowledge that will be repeatedly required.
Waste # 2: Absence of Coding Standards/Guidelines
Absence of coding standards & guidelines results in muda. By following coding standards we can avoid this type of waste.
The benefits of establishing a set of coding guidelines include the following:
- It becomes feasible for a different programmer to enhance the code developed earlier.
- The code written by programmers for one project can be reused by other programmers in a different project.
- Software maintenance, which is inevitable, is much easier on code that has been developed using a set of guidelines than it is on code that was developed without adhering to any guidelines.
- Coding guidelines assist the organization to achieve uniformity in the code produced by all its programmers.
- Code that is written in adherence with coding guidelines can be used for training new programmers in writing maintainable and reusable code.
- Coding guidelines ensure a minimum set of quality imperatives, including defect prevention and efficiency of execution inside the code.
How can we eliminate this type of waste?
We need to have Code Consistency Guidelines. Below guidelines can help:
- Naming conventions
Naming conventions enable the person reading the code to distinguish among program-defined variables, table fields, file fields, constants, flags, counters, file names, etc. quickly and to effect necessary enhancements or fix defects.
- Formatting Source Code
Formatting source code improves readability and ease of understanding.
- Inline Documentation & Commenting
The logic for each code segment needs to be explained using the commenting feature of the programming language, so that the people who will maintain the software later do not have a problem understanding the logic of the program (even the programmer himself when he/she comes back to the code after some time).
- Defect Prevention Guidelines
The way programs are written can leave loopholes that allow defects to creep in. We can define guidelines for coding structures that can plug loopholes and prevent defects from creeping in such as guidelines for Control Statements (Whenever there are nested control flows (if, while, case, for, etc.)
Waste # 3: Incomplete/inadequate tasks identification & dependency
Manage your task in such a way that the dependencies among various tasks (functional areas) are clearly identified before the task is picked up for automation. This needs lot of coordination and collaboration between the team members. Always communicate with team members working on same scope area. Clearly communicate what you are working on to avoid duplication and to avoid impacting work done be other team members.
Do you think there are other tasks that need to be improved while performing automation activities? Identify those activities & improve your process…