Thursday

Continuous Integration: Patterns and Anti-Patterns

Interesting short read on:
 Continuous Integration  Patterns and Anti-Patterns  Build Management  Build Practices  Build Configuration  Testing and Code Quality


Tuesday

General Performance - Team / Organization

I attended a meetup this week and watched Craig Brown who is speaking at the Agile Australia this weekend, His topic was very intriguing

Ten years after adopting Agile 


Here is a picture I managed to steal that speaks volumes on where an org is at in terms of performance:


Monday

Really cool - Agile Digital Transformation Roadmap

When you read every box in this diagram you can relate to the bigger picture and the transformation most companies are going through right now:


  • Changing CX through the UI/UX
  • The Customer Journey
  • OmniChannel
  • Digital Diversity
    • Diversity of touchpoints 
  • Mobile Adoption
  • Digital Marketing
  • Individualization
  • Shadow IT
  • Self Service through democratization
  • Bi-modal IT
Enterprise wide horizontal self organization
  • Enterprise Apps
  • Modernization
  • Mainframes
  • APIs
  • Hypermedia & REST
    • NextGen SOA
  • Cloud Computing
  • Containers
  • Microservices
  • Internet of Things
  • Cybersecurity
  • Automated Governance
  • DevOps
  • Self-Organization
  • CI/CD
  • Digital Business Performance Management
  • Software defined everything(automated configuration)
  • Enterprise Architecture
  • Complex systems - scaled agile
  • Center of Digital Enablement
  • SecDevOps
  • Web Scale
  • Data Lakes
  • Big Data Analytics
  • Machine Learning
  • Real time/Streaming Data
  • Semantic Technologies
  • Cognitive Computing


Who visited my Confluence page?


Problem: I created this confluence page that acts as a single source of truth for the community.
I wan't sure who was reading or looking at this page.
Also helps me when I roll out comms  to make sure the right number of people and the appropriate people has seen it.

Solution:
You could enable the Confluence Usage Stats plugin and you would be able to see anonymous viewing stats for all pages: https://confluence.atlassian.com/display/DOC/View+Space+Activity

OR

You could install the viewtracker plugin:


Source: https://community.atlassian.com/t5/Confluence-questions/Is-there-an-ability-to-see-who-has-visited-a-page-and-how-many/qaq-p/72335


Tuesday

eBook - Continuous Delivery and Automation

Here is a really good free eBook - DevOps: Continuous Delivery and Automation

DevOps has emerged to be the “new normal” in software development, helping companies react to user feedback real-time and setting higher standards for rapid development. Since becoming a permanent topic of discussion, thought leaders, developers, and businesses have pushed to adopt the necessary DevOps tools and methodologies. In the DZone Guide to DevOps: Continuous Delivery & Automation, we explore the state of DevOps in 2017 including industry challenges, best practices, and solutions. Dive into the best mental model for implementing microservices, implementing unambiguous code requirements, best practices for microservices and containers, and Continuous Delivery anti-patterns.


Wednesday

RPA - Blue Prism, OpenSpan, Automation Anywhere vs UIPath

If you haven't heard of these then you have been living under a rock:



UiPath named RPA Industry Leader; scores Best RPA Technology - Forrester.

UiPath, known for unrivaled Citrix automation performance with its computer vision technology, has been recognized as an RPA industry leader in the "Forrester Wave ™ Robotic Process Automation, Q1 2017". The report compared 12 RPA vendors against criteria in the areas of: current offering; strategy and market presence.

Monday

My Technical Talk @ Tconf.io - Testing insights: in the fast paced technology world of apps


Or you can view on youtube @

TConf.io 2016 Aditya Kalra Testing insights: in the fast paced technology world of apps

https://tconf.io http://mst.qa SDETs are the new technical testers, reshaping industries and changing how testing can be achieved. Success in this space depends on how well and how fast you respond. Testing Insights will give you answers to what you will be looking for and where you can find in the ever changing world of app test automation.

Wednesday

Mock the backend using Postman

Postman has developed a new mock service to enable teams to simulate a backend server. Front-end developers can simulate each endpoint in a Postman Collection (and corresponding environment) to view the potential responses, without actually spinning up a back end.

Simulate a back end with Postman's mock service

Throughout the development process, delays on the front end or back end can hold up dependent teams from completing their work efficiently. Some API engineers already use Postman to work on endpoints without relying on a front-end UI to simulate API requests. Now, Postman has developed a new mock service to enable teams to simulate a backend server.


Here is also a good repository that uses postman collections demonstrating a variety of use cases for all REST and Platform Extension APIs

https://github.com/heremaps/postman-collections 

Monday

Design Patterns in Test Automation




Page Object Pattern


  • PageObject Element Map 
    • Properties of all web elements of the page and their locators
  • Page Object
    • Actions of the page
  • Page Object Validator
    • Validations/Assertions on the page
  • Tests Class 
    • Group of tests referencing the page objects, it can hold only a single instance of the page object. 


Facade Design Pattern


  • Facade
    • Holds methods that combine actions executed on multiple pages
  • Page Objects (ItemPage)
    • Holds the actions that can be performed on the page like Search and Navigate. Exposes an easy access to the Page Validator though the Validate() method. 
  • PageObject Element Map 
    • Properties of all web elements of the page and their locators
  • Page Object Validator
    • Validations/Assertions on the page
  • Tests Class 
    • Group of tests referencing the facade, it can hold only a single instance of the facade.


Singleton Design Pattern


  • Page Objects (ItemPage)
    • Holds the actions that can be performed on the page like Search and Navigate. Exposes an easy access to the Page Validator though the Validate() method. 
  • PageObject Element Map 
    • Properties of all web elements of the page and their locators
  • BasePage
    • Gives access to the child’s page element map class and defines a standard navigation operation.
  • BasePage 
    • Adds an instance to the child page’s validator class through the Validate method.
  • BaseSingleton 
    • This is an abstract class that provides a static property of its child instance.



Fluent Page Object Design Pattern


  • Page Objects (ItemPage)
    • Holds the actions that can be performed on the page like Search and Navigate. Exposes an easy access to the Page Validator though the Validate() method. 
  • BasePage
    • Gives access to the child’s page element map class and defines a standard navigation operation.
  • BasePage 
    • Adds an instance to the child page’s validator class through the Validate method.
  • BaseSingleton 
    • This is an abstract class that provides a static property of its child instance.
  • BaseElementMap
    • Provides easier access to current browser and functions to switch between different frames.
  • BasePageValidator
    • Gives all child validators instance to the current element map and the page object itself.

Source:  https://dzone.com/articles/observer-design-pattern-design

Google has implemented a headless option for Chrome

New Headless Chrome With Selenium WebDriver

So if you hadn't heard, Google has implemented a headless option for Chrome. This will be included from version 59, however you can download it now and a play using the Canary install. So I did just that.


Happy testing!

Friday

And I thought Machine Learning was cool..

Facebook is building brain-computer interfaces for typing and skin-hearing


Facebook is building brain-computer interfaces for typing and skin-hearing

Today at F8, Facebook revealed it has a team of 60 engineers working on building a brain-computer interface that will let you type with just your mind without invasive implants. The team plans to use optical imaging to scan your brain a hundred times per second to detect you speaking silently in your head, and translate it into text.

This week - Programming Turns 70

April 12th, 1947: ENIAC, the world's first general-purpose programmable electronic computer, ran the first code written in the modern paradigm, marking the birth of computer programming as a profession.

This first test code ran computations for the hydrogen bomb.
ENIAC could perform complex coded operations like loops, seen today in languages like JavaScript, Ruby and Python.

These first professional programmers were all WOMEN, a fact that took 50 years to be recognised.
Coding ENIAC to solve a single problem would take weeks. Today, you can build a website in a matter of hours!

Apple II at 40: Explore Mac History
On April 17, 1977, the Apple II computer was unveiled. 40 years later, your browser can load and run Classic Mac OS, its successor’s operating system, in seconds.
 

Tuesday

Github wiki markdown Cheatsheet

Everyone who uses a wiki page on github needs this:

If you are looking for a quick reference to markdown while creating a wiki page , including

You can also check out more Markdown tools.

adam-p/markdown-here

markdown-here - Google Chrome, Firefox, and Thunderbird extension that lets you write email in Markdown and render it before sending.

Friday

What is test sharding?


Test sharding allows you to evenly divide up your tests into groups. The shard index is which "percentage" group you are running.

How the groups are divided is arbitrary as the point of sharding is to parallelize your tests.

Generally used in the context of android:

Here is the code that shows test sharding for android devices:

androidtestlib/src/com/android/test/runner/TestRequestBuilder.java - platform/frameworks/testing - Git at Google

android / platform / frameworks / testing / 2fe8aed7542ee05ce504d69656475d1948e9c5b2 / . / androidtestlib / src / com / android / test / runner / TestRequestBuilder.java

Another example of test sharding:


Another context of where you would hear this term is mongodb:


Sharding Concepts - MongoDB Manual 3.0

Operational Segregation in MongoDB Deployments

Wednesday

Compare two pdf files to get the delta



Problem: Find the delta/diff between two pdf files on a windows machine

Solution:


  1.  Install WinMerge 
  2.  Download and install xdocdiff plugin
    • Select [Plugins]-[Automatic Unpacking].
    • Unzip file.
    • Copy xdoc2txt.exe and zlib.dll to WinMerge program folder. (Where WinMerge.exe is located)
    • Copy amb_xdocdiffPlugin.dll to sub folder "MergePlugins".
  3. In WinMerge, go to Plugins > List and tick the "Enable Plugins" checkbox 
  4. Choose Plugins > Automatic Unpacking

Or https://github.com/vslavik/diff-pdf

Tuesday

The best way to understand what is Machine Learning

This is probably one of the best single page website that could explain what is Machine Learning using interactive visualizations:


A visual introduction to machine learning

Let's revisit the 73-m elevation boundary proposed previously to see how we can improve upon our intuition. Clearly, this requires a different perspective. By transforming our visualization into a histogram, we can better see how frequently homes appear at each elevation.

More to come on ML!

Thursday

Devops Patterns and Practices

Intriguing to see what we have in each of our organizations:


Monday

Machine Learning in the Test Automation space?


For those of you who know me I have been exploring and talking about Machine Learning a lot these days. (Blame it on one of the meetups I had been to)

Let's explore the what and how of ML:
What is it?

Machine learning is the subfield of computer science that gives computers the ability to learn without being explicitly programmed - Arthur Samuel, 1959

Evolved from the study of pattern recognition and computational learning theory in artificial intelligence, machine learning explores the study and construction of algorithms that can learn from and make predictions on data

Machine learning is the study of computer algorithms that improve automatically through experience
- Tom Mitchell

In 2006, the online movie company Netflix held the first "Netflix Prize" competition to find a program to better predict user preferences and improve the accuracy on its existing Cinematch movie recommendation algorithm by at least 10%. A joint team made up of researchers from AT&T Labs-Research in collaboration with the teams Big Chaos and Pragmatic Theory built an ensemble model to win the Grand Prize in 2009 for $1 million.Shortly after the prize was awarded, Netflix realized that viewers' ratings were not the best indicators of their viewing patterns ("everything is a recommendation") and they changed their recommendation engine accordingly.


In 2010 The Wall Street Journal wrote about money management firm Rebellion Research's use of machine learning to predict economic movements. The article describes Rebellion Research's prediction of the financial crisis and economic recovery.


In 2012 co-founder of Sun Microsystems Vinod Khosla predicted that 80% of medical doctors jobs would be lost in the next two decades to automated machine learning medical diagnostic software.


In 2014 it has been reported that a machine learning algorithm has been applied in Art History to study fine art paintings, and that it may have revealed previously unrecognized influences between artists

Approaches

  • Decision tree learning
  • Association rule learning
  • Artificial neural networks
  • Deep learning
  • Inductive logic programming
  • Support vector machines
  • Clustering
  • Bayesian networks
  • Reinforcement learning
  • Representation learning
  • Similarity and metric learning
  • Sparse dictionary learning
  • Genetic algorithms
  • Rule-based machine learning
  • Learning classifier systems

Applications



Very Important Difference between machine learning and predictive analytics

Most machine learning systems are based on neural networks. A neural network is a set of layered algorithms whose variables can be adjusted via a learning process. The learning process involves using known data inputs to create outputs that are then compared with known results. When the algorithms reflect the known results with the desired degree of accuracy, the algebraic coefficients are frozen and production code is generated.
Today, this comprises much of what we understand as artificial intelligence.
By contrast, predictive analytics makes adjustments to the algorithms in production, based on results fed back into the software. In other words, the application better understands how to apply its rules based on how those rules have worked in the past.

Test Automation and Machine Learning?

Thursday

Awesome Github Topics


Last week, GitHub released an awesome feature called Topics. It allows authors to tag their repositories.

If you have read my previous post you would know what gitlogs are.

Why I love gitlogs is because they innovate and have now updated and built a simple project called Awesome Github Topics

It's an indexed list of the top 500 topics on GitHub that's painstaking filtered and categorized into different categories based on developer interests.

http://www.gitlogs.com/awesome-topics

Monday

Exploring Gwen Continued


Continuing from my previous post  and after attending the meetup last evening I decided to put in a few hours to see what the tool had to offer.

Opensource is wonderful and when it's in the test automation space and from the city you live in it gets even better!

The tool is quite intriguing.

Let's explore:

Github page: https://github.com/gwen-interpreter/gwen-web

See also:

Install by downloading the zip or using maven: https://github.com/gwen-interpreter/gwen-web/wiki/Installation

Add the gwen.properties file in the users home directory
This makes it a lot more easier to use.

Here are a list of supported properties: http://htmlpreview.github.io/?https://github.com/gwen-interpreter/gwen-web/blob/master/docs/conf/gwen-web-settings.html

Choose the browser from the properties file

Use the -r option to create reports
Moore options here https://github.com/gwen-interpreter/gwen-web/wiki/Gwen-Web-User-Guide


Use the --parallel option to run tests in parallel
gwen --parallel   .. 
Configure the gwen.rampup.interval.seconds runtime setting. If you set this value to 5, the staggered execution will look like this:
|< 0 secs >|<-- --="" 1a="" feature="">|<-- --="" 1b="" feature="">|..
|<----- 5="" secs="">|<-- --="" 2a="" feature="">|<-- --="" 2b="" feature="">|..
|<---------- 10="" secs="">|<-- --="" 3a="" feature="">|<-- --="" 3b="" feature="">|..
|<--------------- 15="" secs="">|<-- --="" 4a="" feature="">|<-- --="" 4b="" feature="">|..
This brings us to a very interesting question: Should we do codeless automation?

Here are some experts on the same:

Thursday

Exploring Gwen

Gwen Stefani! Not really :)

Gwen: The tool that claims to reduce the development effort when testing using selenium in a BDD(Gherkin) fashion.

Attending a meetup by the developer(Branko Juric) himself here

Quoting the details:

"Automating tests with Selenium WebDriver is a very developer centric activity. But what if you could express the expected behavior of a feature in a standard business language instead and have an interpreter translate and evaluate it for you? This session will introduce and demonstrate an open source automation tool called Gwen that allows you to compose executable tests in a way that frees you from the development concerns typically associated with automation. It will also show you how Gwen can help BDD practices and Agile teams rapidly accelerate their UI testing. As a user of this tool, you no longer need to write any code that interacts with Selenium, develop any page objects, or build any test frameworks at all."

I thought let me play around before I attend the session.


  1. Installation: https://github.com/gwen-interpreter/gwen-web/wiki/Installation
  2. Flood IO Challenge
  3. Open a regular command prompt .. Traverse to where gwen is downloaded and stored
  4. test gwen --help


















Page Scopes
  • Gwen-web introduces the concept of page scopes. Page scopes are stacks of name-value pairs bound to namespaces in memory. Gwen uses them internally to manage all pages and web element bindings for you. You simply specify what pages and web elements you require using a prescribed DSL
Not convinced yet!
Got much more to explore and will do after the session I guess :)





Friday

What is Blue-green Deployment, Canary release?


  • Problem:Traditionally, we deploy a new release by replacing the current one. The old release is stopped, and the new one is brought up in its place.
    • The problem with this approach is the downtime occurring from the moment the old release is stopped until the new one is fully operational
    • Having monolithic applications introduces additional problems like, for example, the need to wait a considerable amount of time until the application is initialized.
  • Solution:  variation of the blue-green deployment process. At any time, one of the releases should be running meaning that, during the deployment process, we must deploy a new release in parallel with the old one. The new and the old releases are called blue and green.
    • With the blue-green process, not only that we are removing the deployment downtime, but we are also reducing the risk the deployment might introduce.
    • If we combine the blue-green process with immutable deployments (through VMs in the past and though Docker containers today), the result is a very powerful, secure and reliable deployment procedure that can be performed much more often.
  • If architecture is based on microservices in conjunction with Docker containers, we don’t need two nodes to perform the procedure and can run both releases side by side.
  • a canary release is that it's a partial release to a subset of production nodes with sticky sessions turned on.
    • Similar to a BlueGreenDeployment, you start by deploying the new version of your software to a subset of your infrastructure, to which no users are routed.


Sources: 
http://stackoverflow.com/questions/23746038/canary-release-strategy-vs-blue-green
http://blog.christianposta.com/deploy/blue-green-deployments-a-b-testing-and-canary-releases/
https://www.javacodegeeks.com/2016/02/blue-green-deployment.html

Tools and technologies - Test Automation awesomeness - PHP

Here is a quick overview of the top 6 programming languages used and the various flavors of testing:



Let's continue with PHP:


6. PHP




Happy PHP testing!

Tools and technologies - Test Automation awesomeness - Ruby

Here is a quick overview of the top 6 programming languages used and the various flavors of testing:



Let's continue with Ruby:

5. Ruby



Happy Ruby testing!

Tools and technologies - Test Automation awesomeness - JavaScript

Here is a quick overview of the top 6 programming languages used and the various flavors of testing:



Let's continue with JavaScript:

4. JavaScript



Happy JS testing!



Tools and technologies - Test Automation awesomeness - Python

Here is a quick overview of the top 6 programming languages used and the various flavors of testing:



Let's continue with Python:

3. Python









Happy Python Testing!


Tools and technologies - Test Automation awesomeness - C#

Here is a quick overview of the top 6 programming languages used and the various flavors of testing:



Let's continue with C#:

2. C#



Happy C# testing!

Tools and technologies - Test Automation awesomeness - Java

Here is a quick overview of the top 6 programming languages used and the various flavors of testing:



Let's start with Java:

1. Java









Happy Java Testing!