Sunday, August 18, 2019

When My Team Member was Fired, I Could Not Accept My Salary Hike



In one of my job, I was assisting people who had started their career in Software Testing and few others who were into Software Testing for a while.  Before going further, let me say what I have experienced being with people. 

Through my childhood, I have come across people who are from different backgrounds, economy status, habitat, culture, abilities, and personal personalities.  I see all are special and good in what and how they are.  Where they came from have the influence in how they interact, respond and get going.  Anything can get better if there is a will in the journey is what I'm witnessing.  With this learning of me, I could easily learn how I should interact with a person, on listening to her/him for some time. I just tune up or tune down to the frequency of them, and get it going smoothly.  Once we have a better understanding of common objectives, the credible rapport for each others and mutual understanding on communication we have built, we will take it forward. This works! It is working for me.

I have worked with people and nation whose language is not the English and have difficulty in communication (spoken, written and understanding) using the English. The lack of English communication has not stopped from doing the brilliant job. I can say it standing anywhere and to anyone, anytime!

I, myself have difficulty with the English. I'm said -- you are bad in English; I was made fun for my English; I was taken to extent by saying -- I will tell how you are and who you are to whole world for what I wrote and what I did in my practice.  I'm okay with that!  I continued observing and I saw where can I get better in which I have control.  I use the English words and grammar, which I'm aware of and I continue to learn.  I have a pride in it as I see my efforts are consistent and I see result.  If you are understanding what I'm writing here and what I want to express, isn't that appreciable?

Few might say, what would the English speaking people say on hearing, reading and listening to this English.  Fair! But, that should not make me or anyone to be small and worthless, and it will not make.  I say, who have that thought, are just too narrow in seeing the perspectives and differences of social culture, yes of course in appreciating it as well.

Coming back to the current blog post title line, one of my fellow team member was asked to leave job because that person's English was not good.  I was said, enough chances were given for that person and no improvement in English and communication, so the decision.  I sometime, got the thought is this a English learning school?  I felt, that person's English was okay to communicate but the actual problem was, that person is not opening up to speak with particular person and few others. That person did talk with me and to other teams, openly.  If one have cleared a Under Graduate Degree of an University by writing the exams in the English, it tells, there is something else, the problem is not the English speaking or writing.  There is a barrier for that person which has to be broken, and it has to be broken from both ends. It can take time, and it will happen one fine day.

We talk of traps and we will fall into traps because we are managers and not the leaders most times in our roles, thoughts, stands and work.  The leaders too fall in trap, but a leader will be a problem solver and can see the trap and act upon it.  For a manager who wants to do the things right, it can be a tough one to handle. To a leader who wants to have the right things, can remove the blockers and solve though it is tough one.

I don't stick on to say whether it was right or wrong for asking that person to leave the job saying the English or not speaking up.  At the end, it is one of kind of personality among several other personalities of human beings.  Also I feel, that slowness in opening up to speak and get going is not okay in the business world.  The push had to come from both ends, but it did not.  The management went ahead without seeking what a leader of that team thinks about this problem.  Not sure if the manager knew what was the problem here with that person.  Or may be the manager was not considered at all by the upper management in that decision.

Soon, one day, I was called to collect my hike letter.  I was not blank here.  I said, I don't deserve this hike. I was asked why so.  I said, "One of my team member was asked to leave job. I was mentoring and assisting that person. It was said no improvement in that person while I could see the good progress.  If management does not see the progress in that person, then I have a relation to it.  I have not progressed in one my roles and responsibilities better.  I have not done my job well with that person who lost the job. I have lost a team member who could have been an asset to organization."   I thanked the management in the room and I asked if I can leave and walked back to my desk.  I don't know what impression it gave to people in the management on me.  I was clear in my decision.  I believe, I'm a leader and I stand for it when I lead me or my team. I will be a voice for them and for the job we do in solving the testing problems.

Though my financial condition was not good, I strongly moved with that decision. I feel happy about how I have responded to it and took the accountability not just responsibility being a leader.  Few months later, being out of job that person continued the software testing practice; won the 1st place in a testing competition that is open to the testers across globe and have testers participating from several countries. Please don't take it as, that person won 1st place because I was assisting in practice; no; I don't claim it that way in any means. That person practices and has skills, so the win.  That person is not into the Software Testing career, today. 

I led that person by assisting the practice of a fresher.  A fresher losing the job for no progress in my leadership, is my failure. I have a leader in me who resonates in pride for that decision of not accepting the hike, with humble respect to the management.  I was not just responsible being a leader, I was accountable for them in that role, that day.


Closing Notes:

  • People are not same; different people have different personalities.
  • All problems are not same; different problems have different complexities, patterns, and personalities.
  • For an organization, it is very important to have management and leadership go in parallel knowing what has to be accomplished.
  • The Management and Leadership are assumed and seen to be the one and same; no they are not.
  • Manager act and moves in ownership of "I'm responsible". Leader steers and drives in the ownership of "I'm responsible and accountable".  It is easy to look as being accountable and not just responsible for all of us in what we do and deliver either as individually or as a team. No the reality is, it is apparent, when the deck opens up for accountability; that is when we see categories forming for the  'responsible' and 'accountable' in the team and organization.  If felt, accountable, you will have the voice and it can be heard on the floor.  Where as when just responsible, still you will have voice and it is heard on the floor, but not as the voice that stands out on the floor in crowd.
  • Management team can have a good leader while being a manager. Likewise a leadership can have a good manager while being a leader.
  • Management and Leadership are two sides of an eye. Which side of an eye is visible to your people and to you, will tell about the influences on your people from you.
  • Most managers, to-become managers, just-promoted-as-manager and the management in an organization -- all of them learns the management from the environment where they come from and from their managers who managed them. Now you know what example you are setting by leading.
  • A leader can go unnoticed most times because a leader creates a system which is not dependent on her or him at any time.
  • Stand for your team and people, assist in the possible ways.
  • Don't be a shield of defense being a leader to team; let team face the music. Drop in and assist when and where it is needed, and let the team swing to music while you lead them.
  • As a leader, help your team to be relevant, to be aware, and to be open.
  • As a leader, communicate upon knowing what's the frequency on the other side; get down and pull up the frequency than shutting down the channel.
  • In software industry, the engineers take up the management role these days. The engineers who got promoted to management, might not have the idea of management and leadership. It takes practice and skills of the management and leadership to be a manager and a leader. Think back, how much it has taken for an engineer to be a skilled engineer over the time in gaining those engineering skills.  None were that effective in the engineering skills right immediately passing out of the engineering college or the university.
  • The management can fail to see the progress; change/progress happening in the practice and changes on the floors.  The leadership team has to enable and assist the management teams in learning to communicate, assess, and respond. 
  • Leaders, you need both managers and leaders to move in any directions. Managers are good at certain things and so the leaders.  Both are needed for an organization.  Don't just have environment that creates the managers with no leader in them. Have the environment that incubates, fosters and supports the growing of upcoming Leaders.


Friday, August 2, 2019

Challenges in Building the Skilled Software Testing Team and Testing Leadership



In testers meet, I was asked, "I happen to see overlooking the value of building the testing team and contributions team make to shipment. Do you see same in your work? How to solve it?"


Before I went ahead to discuss on this, I had silent in me.  I see certain problems are in the culture and mindset for first.  Bringing a change here is not that easy - culture and mindset. It also applies to testing teams. It also holds good to any others (or teams) interacting with the testing team.

Taking the analogy of skilled carpentry work (say, "pepperfry") - we will see how this exists not just in testing but anywhere. But in testing, it is not changing after decades too. That's the problem causing unbearable costs and not the actual problem. It's not being attempted to understand by who needs the testing, in my opinion for today.

A skilled and experienced carpenter can do her/his work quickly and with values, right? How many carpenters exist today who can do job at least to level of saying this is the minimal must value and job, I need without the supervision and initial assistance from skilled carpenters.  If seen, the assistance in carpentry work is not for weeks or months.  It takes longer time depending on the skills, mindset, passion and attitude of person learning the carpentry.  Now comes the context - there is a list of orders coming in; the skilled carpenter has people who started carpentry and the people who can do job on consistent supervision for 'x' period of time. If the skilled carpenter puts her/his time in doing the work day in-out to deliver the orders alone, may be orders delivery will be met but with diminished values in work eventually? How long the skilled carpenter can do this i.e. all alone? The skilled carpenter should not assist her/his fellow carpenters and help herself/himself or people who will be hiring them for job?  I learn, the skilled carpenter will assist and give her/his more time in closely watching her/his fellow carpenters while chipping out the core part of the orders.  What if the fellow carpenters quit and join elsewhere? That cannot be stopped by any means. Due to people quitting does one has to lower the standards of one's work? Do the furniture brands say we lower our standards of product as we find carpenters quitting the job? NO!

Relate the same to Software Testing and Automation.  Including me, we have people in software testing -- who knows jargons; who knows how to use what they know in shallow or not know at all; and starters. Here we will have serious people who are interested and also not interested.  Considering the current time (future as well hopefully) of people or team who needs the testing team, isn't that a skilled tester job to build a team on which they can sustain and rely in coming days?

This long activity i.e. building of testing team can take years. And in my experience when had a people with right attitude, consistent efforts and passion - it can take close to 2 to 2.5 years for one.  In these 2 to 2.5 years, we can see people tackling the testing problems if practiced well. But people do change job in 2 years or so, now should I invest in it?  This is one of the invest-cost-value problems which has made Software Testing to take back seat.

It has gone to least priority when considering of having the skilled testers and testing team. Because, practicing testing is not done by most. Later saying this is testing to people boarding the team/org do this and getting the lower returns and values for team & org. Eventually blame the testing and testers. One simple example, we are aware of Design Patterns in programming and know several books/authors who has authored.  Do we know the Test Designs and design techniques apart from black box, white box, grey box, and any books or authors who have authored on same? Blinking of brain starts here!  I feel there is no need of better example than this.

Everyone has experience but that does not mean they are practitioners.  This is the trouble with people boarding into practice of testing. They happen to hear and work upon hearing - just do this, like this, this much, and as this. Write your test cases, automate all, bug reports and everything here. If that can be said in ease, it can be done in much more ease. Why hiring of the testers and having testing team?  Now you know the trouble and pain points of building the testing team and testers?

The expectation from the skilled (carpenter) tester is X+1, but the people who gave the job/orders see it is y-X and not far close to X.  This is the exact case with people or team hiring the testers and wanting to see the "proportional" value right away in the product and to the organization.  It can be achieved, if considered just the skilled (carpenter) tester and for a shorter period of time. But is that the expectation of people who pay for the all carpenters (testers) doing the job in a business?

To see the value of a test, it can happen in a release or few releases. To see the value of testing being done or not done, it can take few releases.  To see the value of having the skilled testing and their work, on which people rely, it will take years.  I see same applies to programming team as well. But in programming space we have people who practices it and then assist boarding people.

In the testing space, we don't have practicing people to assist the boarding people and existing people, in the right way.  This contributes to laggard and continue giving a low mark to the testing team and testers.

Now is it -- problem of the industry; problem of the org; problem of the people or teams wanting to have testing teams; problem of the testers itself?  Whatever, the impacted entities are -- industry, people or team who want to have skilled team and of course testers too.  Help the testers, testing teams and testing practices you have in your org. By this, you are investing. When investing know if it is done in a right way and on right stuffs. Otherwise, the investment made today in testing can become blocker cost.

If a skilled (carpenter) tester is working on building the future carpenters by giving her/his assistance, it is not a simple job! That's the bigger value. Doesn’t the business find returns one day out of this assistance? I say it is not simple job.

The skilled (tester) carpenter knows that he/she is not doing in full what she/he has to do in a given context while continuing to assist other carpenter.  But negotiate in open mind with stakeholders by bringing the understandable and mutually agreeing communication - what is expected immediately out of carpentry work given or the orders that came in.  If this is done, half-the-problem is solved when you have skilled testers.  Often, this will not happen and skilled tester too fail here. 

The communication of expectation for a carpentry work coming from different people; to whom should the carpenter look upon and deliver the asked delivering the work?  We testers and testing team have this problem as well in getting our work set and delivered.

How to solve?
1.   It needs a leadership in testing at org and in teams.  The test leadership, if they are testing practitioners it is good and boon. But hands-on practitioners might find time constraint to be in management and hands-on delivery. Yet this is do-able in my experience.
2.      Testers need to pull up themselves and bring the change in-out.
3.     Culture and mindset problem, needs better way of solving and not the software testing way i.e. how software testing solves problems.  Unless having the faith in software testing and how it solves the problem, it cannot be used as a relativity in learning to learn and solve the problems.
4.   At the bottom, skilled practitioners will be on the hit list most times. Unavoidable! But that should not put down the Software Testing community and practitioners growing. One day you will be recognized, remembered and highly valued for what you have done.  Just make sure you don’t incur big costs personally by doing this activity. Balancing is the key here and it comes only by incurring the costs while doing this activity

If not bothered about
·        need to transform into skilled testing practitioners;
·        org not having/wanting the efficient testing teams;
·    continuing the shallow and low returns testing & automation, which is highly accepted, paid better for doing that and you don’t care a penny anymore about it,
then do not attempt solving this problem for you, your team, and your org. It will never be solved. It will just increase the troubles to all.  One day it will be realized and it will be picked to solve by stakeholders upon having the costs.


Note: I admire how the "pepperfry" crafts its furniture. I wonder why the same cannot be achieved by carpenters who do carpentry while constructing the house. I'm left with many thoughts on this and I try in discussing them with a tester in me.


Tuesday, December 18, 2018

Understanding Web Services, APIs and Architectural Pattern



Since I started my career in testing, I hear and see these words frequently -- 'Web Services', 'APIs', 'Service Oriented Architecture', and 'SaaS'. In recent seven years, I heard word 'Microservices' quite frequently. 

In overall, when I talk to practicing testers, we hear this question during discussion in knowing the differences and understanding of same.  I too had this confusion and questions.  I worked upon it to know them and trying my best to understand what they mean. Today I test them and continue to update myself while I learn what they mean in its existence and purpose.  

In this post, I share what I understand for them by saying the differences I have figured out.  So that, it helps other testers or SDETs.


Web Services


Before getting into word 'Web Services', I want to understand what the word 'web' and 'services' mean. The word 'web' - interconnected systems over network. Then what do word 'services' mean in this context? I learn - services is the endpoint of a connection; it has computer systems to support the connections that it offers.  Then Web Services is - the technologies that allow for making the connections over web and its protocols. Thereby we connect the services together using Web Services.

The Web Services are offered by making use of:

  • SOAP (Simple Object Access Protocol);
  • REST (REpresentational State Transfer it is a representation style of architecture, and not a protocol );
  • and, other web technologies which includes protocol and architecture pattern


Service Oriented Architecture (SOA)


SOA is collection of services, where services communicate with each other.  It can exchange data from simple to complex form between one or more services to accomplish a purpose of activity (i.e. request).  Now we see that service - i.e. a function to be well thought, defined,  and not to depend on state and context of other services.  The service will have consumer (consumer of service by requesting for it) and provider (provider of service as response to request).  Note that service provider also can be a consumer based on contexts.

With this I understand, SOA is a software architecture pattern. The service provider provides the service to consumer over communication protocol.

Note: Few protocols which are commonly used - HTTP and SOAP.  I remember the days where I tested CORBA based services.



Application Program Interface (API)


Thinking in this perspective, I believe, it helps understanding it better -- information hiding. The 'hiding' here means, independent modules which can communicate with each other and exchange the only information which is required. Thereby accomplishing the modularity with independent modules.

This enables for the creation of interface which can be used by other software systems (i.e. service consumers) to access the data and update if required. 

The APIs usually will be implemented using Web Services with help of SOAP,  HTTP, REST and other protocols and architectural representational styles.  When said REST APIs, it means the APIs adhering to the standards of REST.



Microservices


It is an architectural style which structures the application as a collection of services. That means, an application can have multiple services which are -- independently deployable; not coupled to other services very tightly; which can be tested easily in isolation to other services; easily maintainable by a programmer; and it represents the business components i.e. business's services.

For example, the search in https://amazon.in, is one service; and, the order fulfilment is another service. Either of these service is being down does not affect other service in its functional operation. This is one benefit of microservices architectural style. 



Pictorial Representation




In the above pic,

  • how two end points (service consumer & service provider) communicates is with the help of Web Services. Web Services is a concept how two end communicates in a view.
  • Underlying system and data it processes, is not visible to service consumer. The service consumer just sees an interface i.e. API through which the specific service's request is made and it gets the specific response. The API does not expose other functional behaviour of underlying system and data it processes.
  • The way these services are structured and organized forms architectural pattern of the system. It can be any architectural pattern and few commonly heard are -- SOA, Microservices.
  • How consumer talks to interface (API) changes quite often and not the interface. Likewise, how the service has to be provided by service provider changes than the API i.e. interface.


Relating a daily life example


Air ticket enquiry and booking system:
  • Airline and consumer are two end points. They can communicate to each other via phone call, email, chat, or in person.  There is a protocol which defines how this communication to happen between the two end points.  A service is provided to a consumer.  In tech, relate this to Web Services.
  • Different protocols for different communication types i.e. I can't communicate as I do in email when I talk to airline staff in airport.  Relate this to SOAP or REST, to start.
  • To enquiry about my customer membership with airline, I need to talk right person. A front desk staff might not be able to provide this service.  Relate this to API i.e. specific service request and an interface to it.  I don't see how they the info to me; all I see is the details of my membership and share it with me.
  • If the check-in system of the airline is not functional, still the ticketing system of that airline can be used to buy a ticket. This is an example of microservices assuming 'check-in' and the 'ticketing system' are two microservices which are not dependent on each other, though they interact to complete the business need.
  • Having distinguished services and staff assisting for it in airport, so that consumer can go and consume what is needed, will sum up to Service Oriented Architecture style.



Wednesday, December 20, 2017

The Test Data Stopped Me from Committing a Blunder



Recently, I took up testing of a feature and it was one of the critical releases from a point of business. We had to create new systems technically and associate with the existing system for a flow to complete the business need.  This involved testing from at least 5 different endpoints other than different client endpoints.  But how to test it with the time I had? 

To test this effectively, I could have made use of existing data from the stage database and mapped it or dumped it to create a copy for the new system.  Then, I thought, let me create a fresh set of data.  The challenge for me in creating test data was:
  1. I did not understand existing test data as it was not that straightforward and simple; most data were junk i.e. entered randomly, and created with automation aid to have some data, probably
  2. It has to sample for 100000+ entries in production and its mappings to different fulfillment
  3. It has to help in testing the newly built system in the unit wise and integrated system in each node wise
  4. It has to help in figuring out the problems in each microservices and different client nodes
  5. I had time of 2 days to prepare the test data
  6. I had to understand the logic of how various associated microservices evaluates the same data for fulfilling the request
  7. I had to understand how the data has to be constructed such that when it is fed to the cron job or scheduler, it will just pick it and insert them in the database and then associate the mappings
  8. How to make sure this mapping is done right? How shall I test this mapping?
  9. I will be getting almost 1 day to test this new feature on one client node after data creation.  How do I make sure the client endpoint is dealing it right along with other client nodes and microservices endpoints?
  10. The products get shipped at the day end that is on the one day testing of a client node
  11. What is the space I have to correct my error If I did in my testing now?
  12. I was said not to test anything and just see if that functional flow is good enough to make one as usual fulfillment, to keep it simple one transaction in a business use case. Should I take this and just do this and nothing else?
  13. I said to the team not to make junk data entry and call this as test data; I had stopped the team from entering data for two days in all interfaces
  14. Data being created from automation in systems was posing challenges each minute during this time and I had to collaborate with different teams on the same while I had left with little time to complete my testing tasks and delivery from test team

I learn, my testing can be strong here if at all, only if I understand the data and how it gets fulfilled.  I decided to sit and create the test data.  While I created test data, I started referring to the production environment and created the data to simulate them.

I prepared 42 test data and I knew exactly what it is and I had sampled it enough to simulate 100000+ data.  I had taken close to 3 days for designing these data and associating it without the help of any cron job or scheduler.  I figured out how to evaluate these data in each node and microservice endpoints by this time.

This is the advantage of test data creation. I spent most of the testing time here i.e. in preparing the test data. It helped me very much!

With this, I had sets of tests that are "must" and any problem in these will be a blocker. In another set of tests, if there are any problems, then it can be called out by stakeholders if that has to be fixed or not for releasing the product.  I was left with 3 hours before they take a call of shipping the product, that day.  I had to cover my tests by this time.

It was about 2 hours left for the shipping decision, I noticed a behavior that seemed to be a release blocker. On informing it, I started looking at different client nodes to see if it existed there as well.  I could identify this blocker, because, I had designed the test data. If I had not designed the test data, it would have not been possible for me to identify it that day. One of the disasters probably in the product's and business history if this blocker bug had gone out as part of a release.  The functionality seems to work and fulfillment runs. But the feature is not doing what it has to do.  See how tricky it is - it functions but it does not do anything that it is supposed to do eventually. The disguise!

If I had just carried out the functional flow per communication I received from the engineering management, I would have done a blunder as a practicing tester. The business does not do this purposefully; they assume it will be handled and there is no need to test this.  If I have to make the same decision as a tester that is as engineering management and business, I should be convinced enough to say, there is no need to test this at this point in time given the context. I took it up by making time in available time to test each endpoint. 

The functionality flow seem to look good but the outcome was not what the business wants and it is not obvious anywhere in the GUI.  Debugging this behavior, I learned this is a problem. I figured out the root cause of it and shared it with the programmers.  I was given a new deployment to test for the same, later.  The shipment of the product did go on the same day. I wrote the RCA for the same on receiving a fix.


Why did I share this here?
  1. Test data is an important part of a test
  2. Time what we spend on creating tests and data, usually it is not seen as part of testing and not included in the time given for testing
  3. Sampling and creating the test data is a skill to be improvised each day by the tester
  4. When said don't test this, as a tester have enough confidence and rational analysis before not testing it; else, as a tester, we will be supporting the growth of the risks in product and risk for using the product
  5. The creation of test data helps to know different endpoints of a technical system; if it did not help, then we are not preparing the right test data
  6. Blockers, bugs, and ambiguity always exist; the tests and test data should help in making it simple to understand and know the root cause
  7. If I had not worked on this test data, I would have not identified the blocker and it would not have been possible for me to test each end node of client and microservices

Now if the use cases are automated in this feature, the automation can assert for same on different end nodes because we know what is the data and what is expected out of it. There is no need for me now to do this as extensively as I did this time.  This is one of the benefits of automation which lets me focus on other stuff in testing.


Note:
  • Never exaggerate the bug report saying technical investigation and root cause. Rather, we can provide, this is what we learn from our test investigation.
  • Never exaggerate the test data and underestimate the test data. Anything associated with test data is worth investing time to look at it and know it better.


Thursday, December 14, 2017

CI & CD - Exist to solve the engineering problems for first than to solve for customers


I read a tweet post of Michael Bolton. What made me to share my opinion as a blog post is, I hear CI and CD associated with Software Testing quite often; especially in the software testing conferences.

Here is what Michael Bolton asks on Twitter:

Your CI/CD system is probably pretty good at helping you discover problems in the build process. How does it support the discovery of problems in the product that would matter to customer, the team, or the business? Note - there CAN be really good answers to this. #DevOps #testing

The CI and CD is not associated just with Software Testing, but it is integral part of Software Engineering and Development.  In 2006, I have seen CI and CD. In 2017, I see CI and CD. The change is, how we are building software today, when compared to 10 years ago.  The CI and CD has taken upper hand for how we architecture, design and work in building software, before putting it to release line for market.

I want to say this -- "We seeing or associating CI and CD with testing is okay but it is not all about the testing. It is about the engineering and testing is one part of engineering." I see this emphasis is missed in the conferences when they quote CI and CD and tag a word testing with it, especially with automation context.  Note that, when I use word "automation" here, it is not the automation part of testing deliveries, it is the automation part of the engineering pipelines as well.  Yes, the *pipelines* of technology and engineering stack.

We have multiple pipelines in the engineering and from different engineering teams which may span over different geo locations and work culture.  With this, I say, for first CI and CD has to deliver and serve the engineering teams and also the teams which work with engineering team, before serving the market customer or business. If it is not serving here, then that CI and CD has a fundamental problem that needs to be addressed.

Before thinking of Testing as a focusable space in engineering and shippable product to customer, the testing can be seen in strong form and it is "Unit Testing" while product is being developed. Plus the integration of different pipelines outcome while the Unit Testing is executed or being executed or about to be executed, as the code get pushed. This summation of different pipelines integration constitutes a picture of product which gets shipped to customer, one day very soon.  Note that, this product is not yet available to customer in market, while it may be available to different stakeholders within the engineering team and teams associated to it. We need it to vision our work, vision our product and vision my testing for the product.

The CI and CD do not remove any problems nor add problems.  If not handled CI and CD, the problem can get disguised and may ship to market.  For example, did you see a force update of software you use?  The CI and CD, waits and look forward the human's push so it can do its job and give back to Build Engineer or any other engineer.

Testers, do not get panicked about how the word CI and CD is used with Software Testing and automation. The CI and CD is beyond this and it starts with the integration of different engineering technology stack pipelines outcome as one output and the unit tests.  

I don't know how true is this, I heard from my friends years back that Amazon builds for every 11 seconds. Could be and I'm not surprised with it. You see the CI and CD here? The compiled build or deployment does not mean, shipped.  It is the gateway for unit test run and integration of different pipelines.

The coverage and testability offered by CI and CD can vary based on how it is used. It is just like this -- if you noticed a tailor marking the textile to stitch a shirt; the measure of the marking again; cut it on the marks; tie it and give a number; the other tailor picks it and thread it; then pass it to other tailor to add and do necessary stuff before it is put to shirt hanger or cover for handing it to showroom or customer.  What the tailors did it here is the CI and CD. In large manufacturing, these tailors can sit in different places and can work in different time.  Where is the testing here? You answer it! How this CI and CD of tailors help customer to wear a comfortable shirt? You answer it!

Now, just think how many of these tests are technical tests facing tailoring skills and those tests which are facing the customer in the market on having a wearable shirt.

For the teams within engineering, when we have practices that benefits engineering to build better product, then CI and CD is of help.  Because with such engineering practices, the problems in integration of product and building it, can be identified earlier.  This can be identified if we have such Unit Tests written or built; else, it won't.

The CI and CD does not mean no bugs; but helps in identifying sort of bug(s) earlier in the engineering cycle.  These tests are more towards the technology and tech stack facing than facing the customer in the market.  But that does not mean we cannot have tests for customer facing in CI & CD.  This customer facing tests comes when we have the build which can be used by different types of users, stakeholders and testers in business team.  Example of tech facing tests, a MVP (Model View Presenter) not having defined logic container/controller association to pass the information to the viewer; this can be figured out if there is one such unit tests upon integration.  This bug may not be visible in UI if the contract of client and server partially satisfies; it may be seen when looked below the UI while doing the customer facing tests.

For me, be it tech facing or customer facing, test is a test. When tests can reveal product information earlier, why not to tap on it, if that can be achieved using the capabilities of the CI & CD ?

Providing the build having technology facing tests to business teams or SMEs, may not get that powerful feedback always to engineering team in initial stages of development. I have witnessed such outcomes when said about UI is not right, alignment is not right, keep it bold, keep it in lower font size., etc.  Though these are useful feedback, when it is being received is the point here.

To end this post, the CI and CD is first to address the internal engineering problems and assist in having effective engineering, before solving problems to the customer or business.  CI & CD is C[I+D] before seeing a product and problems it can have.