Once we've done with infrastructure it's time to work on development itself. Now I'll start working on the functionality performing interaction with Win32 objects. In this article I'll describe basic preparations for Win32 interactions as well as I'll describe the core functionality to capture the window on screen and perform some manipulations with it. And of course this activity is done in the scope of Sirius development. So, it would be bound to the entire architecture of the platform.
Test automation shouldn't be a black box between the code and actual results. So, let's dig the code to see how it is made inside
Search
Thursday, 10 January 2013
Wednesday, 2 January 2013
Sirius: Testing setup
Since Sirius is going to be used for testing purposes it's not polite to leave it without testing. Major specifics of this solution is that different parts of entire system are written using different programming languages. At the same time all those parts reflect the same functionality. It means that the tests would be the same for all clients. Well, they would be the same for server part as well (at least most of the core tests). It's not very nice to copy/paste them and then migrate to different languages. So, obviously there's going to be a lot of duplicating work. So, I have to do something to minimize that duplication as well as minimize the maintenance effort in case I want to change some tests. It's valid especially for client side as core part doesn't have any local specific logic. All immediate client methods are actually callers for the same server side methods.
So, there's going to be multiple languages but the same interface for tests. It's not trivial solution but I found that.
Wednesday, 26 December 2012
BDD instructions writing standards
Introduction
This document describes rules for writing BDD instructions. It is used as a guideline for proper stated and formatted instructions. Natural language instructions used for BDD are not absolutely natural language instructions. They're actually "naturalized" form of some specific command with ability to variate some part. So, from the technical side of BDD the strict rules are still necessary to avoid different forms of absolutely the same phrases but with small differences. It's not essential for understanding but it is critical for technical implementation.
This document contains examples of correct and incorrect phrases. If some phrase is described as incorrect it only means that it violates the standards though it can be properly built from the language point of view. These standards do not teach English. They just describe which subset of possible phrases is taken as acceptable.
And again, standards are designed for uniformity only. There's no strict dogmatum in them. If some phrases seem to be more appropriate but they violate the rules it's OK to adjust rules to current needs rather than restrict needs with existing rules. The main thing is that there should be some uniform rule set which is kept within the project. Current document can be a basis for such standards
Sirius: solution improvements
Overview
The more code is prepared the more items require various corrections and enhancements. Also, some things weren't done initially but they were planned. So, in this article I'll describe various changes applied to the entire project. Here I'll cover the following topics:
- Adding functionality to stop service endpoints
- Server side updates for more informative generated code
- Generate Ruby client from Java server code
- Migrating solution from Ant to Maven
Saturday, 22 December 2012
Sirius: First steps
In the previous article we've created basic skeleton for entire solution. Now it's time to add the content. In this article I'll take sample method, write it's server part and create clients for all programming languages we already prepared infrastructure for. The example would be simple but it's enough to find out how it's better to design entire solution and what is the base flow for adding new functionality. Also it would be clearly seem how it is better to use such solution. So, in this article I'll describe the following:
- Sample server side method creation (actually that would be the sample of SOAP web-service creation on Java)
- Java client creation
- Ruby client creation
- C# client creation
OK. We're good to go.
Thursday, 20 December 2012
Sirius: Dev environment setup
Introduction
All right, I've decided to start development but it's not enough just to write the code. I also should be able to build the packages, test them somehow, provide some documentation and do many other activities. But firstly, I don't want to make a lot of routine work by myself. Let the machine do that for me. Also, I want to be sure that the way the system works for me locally is the same as for any other machine. And eventually, I don't want to keep the source code only locally. It's unsafe as my local machine can be damaged and all information would be lost in this case. So, we need some additional software which makes the development infrastructure and which should be configured in the way convenient to use.
This article is about to describe the infrastructure setup as well as how to configure all this software to point to each other.
Saturday, 15 December 2012
Sirius: ice is broken
Pre-phrase
This is the new series of articles dedicated to the Sirius - the new test automation platform development. This is the work I've been doing for several years accumulating different pieces of code with different languages, for different technologies, for different testing types.
The goal of my work is to combine existing solutions under common architecture and represent some unified and extensible design which can be a basis for another brand-new test automation solution or even common platform for delivering test automation types. This is the not the first time I am getting back to this but the more results I get the more different solutions I can integrate under the same framework. I don't expect it to be another widely used platform (I am not even talking about replacement of any vendor tool) but that can be a good prototype. I doubt there were a lot of people who believed in Selenium eight years ago when only some draft version appeared. But take a look at the situation on test automation market now. Selenium became one of the most popular test automation tools and the popularity is growing. Even QTP loses its positions and now it's quite easy to find test automation specialists who are familiar with some popular programming language like Java, C#, Ruby, Python, PHP and many others which were traditionally used for development.
Sunday, 9 September 2012
Test Automation ROI calculation Part 1 : Simple iterative development model
Introduction
The test automation isn't done just for fun. It has the purpose. Some of the main purposes are:- Increase testing team capacity
- Minimize testing cycle without changing testing team capacity
- Increase testing coverage without extra resources
- Minimize human factor
Sunday, 19 August 2012
Test Automation tools: trends
Friday, 8 June 2012
BDD engines comparison (Cucumber, Freshen, JBehave,NBehave,SpecFlow, Behat)
Introduction
Cucumber is not the only engine supporting natural language instructions. It's just one implementation of natural language instructions interpreter. The actual language to write tests with is called Gherkin. And it has different implementations adopted to different programming language. Thus we have:This list isn't complete as there can be many other similar engines which are simply less popular. All of them have some common set of supported features but there're some restrictions and abilities specific to the actual engine. So, the aim of this post is to collect useful features for each listed above engine and present it in some comparable form. Key features to be mentioned are:
Tuesday, 29 May 2012
Cucumber: How to avoid major mistakes
- BEHAVIOR-DRIVEN DEVELOPMENT VS. TESTING by James Bach
- Testing like the TSA (here is the criticizm of TDD approach but there is one recomendation here which fits the topic. I mean the recomendation not to use Cucumber)
Tuesday, 28 February 2012
Article: Is it sane to compare Selenium with QTP
Well, when did Selenium claim that it can tests window based applications. Selenium is browser automation framework. Comparing Selenium and QTP on this front is like comparing apples with oranges.
One paragraph says more than all others. Why such questions appear at all?
P.S.: wonder what's the goal of disabling text highlight operation on the page. If I want to copy\paste content I simply can view the page source.
Wednesday, 27 April 2011
Ruby: retrieve OLE object from HWND
- win32-api
- windows-api