daily post

Developing software an art

By | May 9th, 2019|daily post|

While redefining the QA function at work, I keep coming back to this question:

What is Software Quality?

If we deliver exactly what the requirements / user story says, is that quality?

We’d say that’s validation, so we must also do verification which is ‘are we building the right thing’,

The problem there is, in a large organization a bunch of ‘groups’ have to sign off.

Now the ‘end users’ (if you will) don’t align to a single version of what’s expected.

That’s why I sometimes feel developing software is not a science, it’s an art.

It’s an art to bring a vision of a select group of people to life.

The details of the vision for all might be different, but they all might be connected with a common emotion.

Therefore, in the end, it’s about answering to that shared ‘emotion’ of the stakeholders.

SAFe DevOps Health Radar

By | May 6th, 2019|daily post|

Going through the SAFe DevOps course I realized there were a few good points.Going through the SAFe DevOps course I realized there were a few good points.

Again I don’t believe in following any Agile framework to the book and take them as just guidelines, but the SAFe DevOps section does help to put things in perspective.

The image [1] attached is called the ‘DevOps Health Radar’ depicting the different stages of how an enterprise can deliver value to customers from:

1. ‘exploring’ an idea, to

2. Development, testing at speed through continuous integration, to

3. Deploying to a subset of users through ‘dark launches’ and ‘canary releases’, with sanity tests in prod,

4. To finally ‘releasing’ to all the customers on demand and validating the assumptions business had in the exploration phase

Reference:https://lnkd.in/fcZB5sB

[1] : Rights SAFe (Scaled Agile), Illustration graphics by Quality Spectrum

Dark Launches / Canary Releases

By | May 2nd, 2019|daily post|

The new UAT: Dark Launches and Canary releases

Here’s what they mean and the difference:

Before that, UAT (User Acceptance Testing) is where once the software is shipped from IT, business / end users have a look and run their own tests to see if the product is as per expectations.

Now that was inefficient and UAT sometimes takes a lot of time, which can skyrocket time to market.

How the industry is solving it?

productionize the software, but to a user’s subset

Launch to a certain few clients / users of a certain market segment. The Idea is to get ‘real’ users actually use the product.

This way feedback from customers is quicker and as real as it can be.

The catch:

To do dark launches or canary releases, besides the obvious of having scalable infrastructure,

You need to be able to roll back and fix forward real quick, for which you need CI/CD in place.

Because there is always a higher chance of something being missed, so we must be able to fix it real quick.

QA Role at Enterprise level

By | April 22nd, 2019|daily post|

If you were to describe what QA’s role would be at an Enterprise level, what would you say?

Here’s my thought so far:

Fundamental goal: Validate goals set by business for the end product are achieved and highlight any risks to decision makers. This can be done by:

– Help POs, PMs and business in making sure the articulated user stories fit the purpose (question requirements)

– Ensure testability within the system architecture

– Foster a ‘quality first’ culture / build ‘testing acumen’ by promoting and teaching the test mindset within the whole IT organization

– Test the holistic system from end to end’s functionality, usability and non-functional requirements (performance / security)

– Ensure tests among different integrated systems and low level components are done

– Enable CI/CD pipelines to significantly reduce time to market

What else would you add?

#QsDaily #Enterprise #Testing #TestingAcumen

Mindset change to go Agile

By | April 19th, 2019|daily post|

Universal truths to ‘internalize’ to really go agile:
1 – We cannot estimate effort
Without accepting this, we try to ‘accurately estimate’ the amount of work and run into the same trap

2 – We don’t clearly know the requirements
Again, instead of focusing on getting the product out in the hands of the customer ASAP, we sometimes try to ‘refine’ the product

Off course this is easier said than done. To significantly reduce time to market a lot of enablers would be needed.

However, without the mind set change, all the tools in the world wouldn’t bring about the desired results.

#QsDaily #Agile #estimation #requirements

Testable architecture

By | April 18th, 2019|daily post|

When to ensure testability for your product?

While designing the architecture..

While mkst of us know this, very few actually see it through.

We build a piece of software and then decide how to test it,

Instead while designing it make sure you have ‘test probes’ in there.

When I worked for safety critical applications, we left test points on the PCB to check the circuit

Those points were not used for any feature of the product, but were there just to help test it.

So, testers get involved when the architecture is being designed,

Or the architects trained to ensure the system is testable themselves.

Testing monolith vs micro-service?

By | April 2nd, 2019|daily post|

What is the difference between testing micro service and monolithic applications?

First off, the definitions:

Micro-services: Software is developed as several small ‘services’ which can operate autonomously

Monolith application: One giant software with all services within the same software package

The fundamental difference for testing these is scalability and integration.

Micro-services are designed to scale up and down as users of the service increase, so testing this scaling up and down is important.

Secondly the integration tests become more important. Communication between these services is different from a monolith and should be accounted for.

While there will be many more subtle differences in testing these depending on your context, these two areas would always be of importance.Anything else you would add to the list?

DevOps and Culture

By | February 10th, 2019|daily post|

While DevOps is thought to be synonymous with tools and automation,

Actually, IMO, it has to do more with cultural transformation..

The ultimate goal of DevOps is to bring what we develop faster and more useful to our customers

While automation is certainly a big part, even more important is the culture.

The tools just fast track the thought process we have,

It’s the experimentation with different ‘thought processes’ which is the secret

I always quote “Companies to take ideas to in the hands of consumers the quickest will win”,

Because they can experiment easily, and don’t have to fear a failed experimentation.

Now if the culture is not there, experimentation will not happen.

Then all DevOps will do is to facilitate in getting more “crap” out of the production line, but just “quicker”…

 

#DevOps with #CulturalTransformation = Measurable business value

#DevOps WITHOUT #DevOpsCulture = Same old crap, just delivered quickly

Automation and reusability

By | January 16th, 2019|daily post|

Automation helps by doing repetitive tasks efficiently

What happens when your code is not exactly ‘reusable?..

Automation engineers sometimes are trying to script for the immediate test scenario

And forget the whole point of automation was reusability.

This is different from a script breaking from not have good selectors..

Writing similar code across the project in multiple classes / files

And again repeating that in mulitple projects across one on multiple products

So make sure to keep each component of the framework reusable

As reusable as possible, not for just your project, but if synergies exist, between projects as well.

The concept of ‘loosely coupled’ somehwat captures this idea.

#QsDaily #Automation #FrameworkDesign

 

More on the subject here:

 

Pillars of Automation Framework Design

Using AUT’s JavaScript methods

By | January 13th, 2019|daily post|

A couple of ways to cope with web browser version updates,

Using the AUT’s own JavaScript functions is one way to mitigate issues, let me explain..

Depending on what type of application you are using, there can be custom JavaScript code running on your AUT

For cases like on interacting with a certain control a custom written JavaScript method is called to collect some data and pass to an AJAX call.

Think about it, wouldn’t the developer be using some methods to write data in the fields? Or read data from them?

In few cases they are the same as the Selenium library would use, however in a few cases there would be some custom methods,

Written by the developer or provided by the framework.

For instance, on entering data in an certain element on the web page, a JavaScript method is called parsing the data and sending an HTTP request.

Now instead of trying to interact with the element through Selenium / other library, call the JavaScript method,

Which is going to be called anyway on the mouse click / enter event, but can save you a lot of grief if Selenium has a hard time interacting with the element due to a browser update etc.