Posts

Showing posts with the label Test Automation

Simple principles for the automation world

Image
Awesome simple principles to follow: 5 Tips To Deal With Untested Code - Hacker Noon As software testers, we deal every day with a lot of untested (or insufficiently tested) code. You might say "that's a tester's role, to find bugs in the code, is not the developer's role" and I wouldn't say you're not right. But, you are partially right, though.

Curated list of all possible Testing tools via the Test Pyramid

Image
Based on the testing pyramid by Martin Fowler , I decided we need something similar that gives us a reference to all possible tools for each layer of the pyramid. and a similar one for mobile devices and Non Functional testing. Here is a curated list of all possible testing tools classified by the pyramid as a reference: https://github.com/AdyKalra/TestingToolsviaTestPyramid TestingToolsviaTestPyramid List of all testing tools in every programming language , based on the Testing Pyramid Let's finish this list! Click on each slice of the pyramid to see what tools do we have in that space Automated GUI Tests Automated API Tests Automated Integration Tests Automated Component Tests Automated Unit Tests Automated Database Tests Framework - Reporting / CI / LiveDoc / Code Analysis Agnostic Frameworks Reporting Documentation Code Analysis Continuous Integration Non Functional Testing - Performance / Security NFR Mobile Real Device Tests Si...

Machine Learning or Automation? Exactly my thoughts!

Image
Perfect start to Monday! Quick read that syncs the idea of how AML would be used in shaping the future of software testing: Machine Learning or Automation: What's the Difference? There's a lot of buzz in the tech industry, especially with cutting-edge technologies like artificial intelligence and machine learning becoming more mainstream. While many professionals understand that these technologies will make their jobs easier, or even take over certain tasks, there's also a lot of confusion: machine learning, automation - what's the difference between the two?

The CEO of GitHub thinks automation will bring an end to traditional software programming

Image
“We think the future of coding is no coding at all,” said Wanstrath The CEO of GitHub, which caters to coders, thinks automation will bring an end to traditional software programming SAN FRANCISCO - Coding - at least as it's traditionally done, by typing arcane commands on a keyboard - could soon become another job for the robots. That was main idea behind GitHub CEO Chris Wanstrath's final keynote address on Wednesday, as he spoke to a room of programmers and developers at GitHub Universe, the popular development platform's annual user conference.

Three amigios | CI - CD - Test Automation

Image
Architecting for CI/CD - DZone DevOps Learn how companies must change their software architecture to fully take advantage of continuous integration and delivery and implement effective DevOps.

The future of web development and perhaps Test Automation

Image
Here is what in my opinion would be the next thing test automation tools would do: Deep Learning + Building code just by using images as input! Project pix2code: Generating Code from a Graphical User Interface Screenshot Here is a demo of how it works: Transforming a graphical user interface screenshot created by a designer into computer code is a typical task conducted by a developer in order to build customized software, websites, and mobile applications. In this paper, we show that deep learning methods can be leveraged to train a model end-to-end to automatically generate code from a single input image with over 77% of accuracy for three different platforms (i.e. iOS, Android and web-based technologies). Official research page:  https://uizard.io/research#pix2code Here is the github Project:  https://github.com/tonybeltramelli/pix2code

My first Machine Learning experiment with real time data

Image
Solving the most common problem predicting house prices in any suburb using supervised learning. What's amazing is we shall build a Machine Learning model using MLJAR MLJAR is a human-first platform for machine learning. It provides a service for prototyping, development and deploying pattern recognition algorithms. It makes algorithm search and tuning painless! The basics of ML can be read anywhere on github/google. What we need to know is regression/classification and when to use what.  First things first test data: https://github.com/AdyKalra/MachineLearningHousing/tree/master/house_prices#house-prices train sample - (data_train.csv file) for model learning  test samples (data_test.csv) for predictions Create a new project Select Regression as a task Add train and test data Note - When we add test dataset check the option: This dataset will be used only for predictions because we want to predict the sale price Specify columns that we use , ta...

Intelligent Automation - Machine Learning

Image
John Bates the CEO of Testplant has exactly my views on what smart and intelligent test automation would be: Quick snippets: 1. Intelligent automation  - The only way to realistically test a digital app is through an intelligent automation engine accessing the application as a user would - taking control of a machine, actually using the app to exercise workflows and collecting intelligent analytics along the way. This involves technology to understand on-screen images and text, such as smart image search and dynamic neural networks (so called “deep learning”). 2. Intelligent test coverage generation and ‘bug-hunting’  - There are a potentially infinite number of paths through a complex app so which ones should we follow in our automation? We can use AI classification algorithms such as Bayesian networks, to select paths and 'bug hunt'. As these paths are explored, the bug-hunting AI algorithm continues to learn from correlations in data to refine the coverage...

Test Impact Analysis - My story so far

Image
It's been three months now that I have started my journey in a new working environment to implement a flavor of the Test Impact Analysis. Being a fan of ThoughtWorks and following Martin Fowler's blog  I was impressed about reading an article that spoke about the rise of TIA(Test Impact Analysis) The definition of TIA from martin fowler " Test Impact Analysis (TIA) is a modern way of speeding up the test automation phase of a build. It works by analyzing the call-graph of the source code to work out which tests should be run after a change to production code. Microsoft has done some extensive work on this approach, but it's also possible for development teams to implement something useful quite cheaply. " Problems to solve: Let's run all tests every time a change is pushed Tests that run late in the integration cycle - Implicitly Shifting right  Number of tests that run in the pipeline  The number of tests in the regression suite What shape is...

How does Facebook find bugs that crash their software?

Image
Facebook uses both static and dynamic analysis tools to perform testing. What impresses me more is the dynamic analysis, but lets look at the static analysis first  Static analysis, as the name implies, is only interested in the source code of the program Facebook's static analyser is called Infer. The company open-sourced the tool in 2013, and a lot of big names (Uber, Spotify, Mozilla) use it. It is on github for you to play around with https://github.com/facebook/infer Facebook's dynamic analyser is called Sapienz. " There are a lot of dynamic analysers out there, but none like Sapienz " - Facebook Why is Sapienz so different? The challenge with dynamic testing is finding the reight inputs that cause an app to crash. Facebook says that most dynamic analysers use random sequences of inputs at apps, with up to 15,000 input events to force a crash. Sapienz, on the other hand, only needs about 100-150 events to find a crashing bug. In practice, th...

Has Machine Learning arrived in the test automation space ?

Image
Testim -  https://www.testim.io/ Testim is a new test automation tool that claims to use machine learning to speed the authoring, execution, and maintenance of automated tests. "A developer can author a test case in minutes and execute them on multiple web and mobile platforms. We learn from every execution, self-improving the stability of test cases, resulting in a test suite that doesn't break on every code change. We analyze hundreds of attributes in realtime to identify each element vs. static locators. Little effort, if any, is then required to maintain these test cases yet they are stable and trustworthy." Being a huge enthusiast about Machine Learning in the test automation space , I am super excited and hope this is the beginning of a new way of testing. The CEO  Oren Rubin and COO Shani Shoham  - "We use dynamic locators and learn with every execution. The outcome is super fast authoring and stable tests that learn, thus eliminating the need ...

Canopy - F# is the new C# in the F#rictionless web/mobile testing world

Image
Canopy  is a new web testing framework for F#, for UI testing. (C# friendly ) There is also a Canopy testing framework for mobile apps -  https://fsprojects.github.io/Canopy.Mobile/ The website:  http://lefthandedgoat.github.io/canopy/index.html Nuget Package:  https://www.nuget.org/packages/canopy/1.5.0 GitHub for Mobile -  https://github.com/fsprojects/Canopy.Mobile Features : Solid stabilization layer built on top of Selenium. Death to "brittle, quirky, UI tests". Quick to learn. Even if you've never done UI Automation, and don't know F#. Clean, concise API. Canopy's API Actions : documentation of everything you can do on a page Assertions : all the ways you can verify what's on the page is correct Configuration : configure and fine tune canopy Testing : different ways to orchestrate tests and troubleshoot issues with a page Reporting : different ways to output the results of your test suite Canopy Examples - https://...

Cheatsheet - REST Architecture

Image

From Delegates to Anonymous Delegates to Lambda

Image
" Delegate " is actually the name for a variable that holds a reference to a method A delegate is comparable to a function-pointer; a "method handle" as an object, if you like, i.e. Func < int , int , int > add = ( a , b ) => a + b ; is a way of writing a delegate that I can then call. Delegates also underpin eventing and other callback approaches. Anonymous methods are the 2.0 short-hand for creating delegate instances, for example: someObj . SomeEvent += delegate { DoSomething (); }; they also introduced full closures into the language via "captured variables" C# 3.0 introduces Lambdas , which can produce the same as anonymous methods: Lambda expressions are a simpler syntax for anonymous delegates and can be used everywhere an anonymous delegate can be used. However, the opposite is not true. Lambdas can also be compiled into expression trees for full LINQ against (for example) a database. You can't...

Duck Casting Framework / Duck Typing

Image
What is Duck Casting / Duck typing Framework ? (also sometimes incorrectly described as  Latent Typing as Ian Griffiths explains in his campaign to disabuse that notion ) for .NET languages The term duck typing is popularly explained by the phrase If it walks like a duck and quacks like a duck, it must be a duck. Wiki Says: In computer programming with object-oriented programming languages, duck typing is a style of typing in which an object's methods and properties determine the valid semantics, rather than its inheritance from a particular class or implementation of an explicit interface. The name of the concept refers to the duck test. What it actually means: Duck typing allows an object to be passed in to a method that expects a certain type even if it doesn’t inherit from that type. All it has to do is support the methods and properties of the expected type in use by the method. I emphasize that last phrase for a reason. Suppose we have a method ...

Love this from Google - Code Health: To Comment or Not to Comment?

Code Health: To Comment or Not to Comment? This is another post in our Code Health series. A version of this post originally appeared in Google bathrooms worldwide as a Google Testing on the Toilet episode. You can download a printer-friendly version to display in your office. By Dori Reuveni and Kevin Bourrillion While reading code, often there is nothing more helpful than a well-placed comment.

Migrating an existing project to a new git repo

Image
Create a new repository   on GitHub. To avoid errors, do not initialize the new repository with   README , license, or   gitignore   files. You can add these files after your project has been pushed to GitHub. Open  Git Bash . Change the current working directory to your local project. Initialize the local directory as a Git repository. git init Add the files in your new local repository. This stages them for the first commit. git add . # Adds the files in the local repository and stages them for commit. To unstage a file, use 'git reset HEAD YOUR-FILE '. Commit the files that you've staged in your local repository. git commit -m "First commit" # Commits the tracked changes and prepares them to be pushed to a remote repository. To remove this commit and modify the file, use 'git reset --soft HEAD~1' and commit and add the file again. At the top of your GitHub repository's Quick Setup page, click   to copy the remote reposi...

Crawler-Lib Concurrency Testing

Image
The Crawler-Lib Concurrency Testing Helper allows to write unit tests with multiple threads to test the concurrency behavior of components. It has synchronization mechanisms to control the workflow of the threads and to record the execution steps.  It is also possible to use it for client/server tests like PNUnit, but in one test.  It can be used in conjunction with any unit test framework or with simply handwritten tests. It is also possible to use it for client/server tests.

Automation Testing Trends that are still valid!

Image
Source: http://www.testing-whiz.com/blog/15-test-automation-trends-of-2016

Coypu - magic for Selenium

Image
Coypu is an advanced wrapper for Selenium. Coypu supports browser automation in .Net to help make tests readable, robust, fast to write and less tightly coupled to the UI. If your tests are littered with sleeps, retries, complex XPath expressions and IDs dug out of the source with FireBug then Coypu might help. As coypu has evolved over a period of time, the tool understood the pain points of selenium testers, hence you don’t really have to think of Creating browser object and working with different browsers Finding controls by complex Xpaths, CSS etc Coypu is A robust wrapper for browser automation tools on .Net, such as Selenium WebDriver that eases automating ajax-heavy websites and reduces coupling to the HTML, CSS & JS A more intuitive DSL for interacting with the browser in the way a human being would, inspired by the ruby framework Capybara -  http://github.com/jnicklas/capybara install nuget package  Install-Package Coypu visit https...