2010. november 4., csütörtök

Iphone iOS Summer Time bug

Hi folks..

So there is a new bug that rose its head on the iOS after the automatic clock change durring summer hours.

The bug is that the alarm clock still activates at current hour + 1.

I wonder if the head a test for it, or how would they test an automatically triggered feature.

Easy... Set a setting in the db. There sure is a setting that says now is the day time change please set your clock forward or backward.

After the clock is reset i would go over all the application that USE time to determine something.

And ofc i would say the ALARM CLOCK is pretty damn sure to be one of them!!

I wonder if they did think about this or the managment again forgot to make this a priority because they ahd to deliver.

You see i love Blizzard. They always negleted relese dates. They said.. it's done when it's done. And i do prefer that because when they are done they deliver a mostly bug free software. They don't care when it's delivered until they are satified with the product at hand.

I don't mind waiting a couple more months if things like these got fixed in the mean time.

They are just anoying and a either mean that they don't really care or that they have a bad qa team. Which will it be?

Gergely.

2010. november 2., kedd

Hi!

I know i've been away... But i was posting stuff on alternateillusion.com. :)

But i'll be resuming this blog from now on too.

Cheers,
Gergely.

2010. június 11., péntek

Ok

Ok i give up. I will move to a more coder friendly blog engine.

New URL for my Blog is: http://alternateillusion.com/

I'm a co writer there.

Bye Bye BlogSpot.

Xml Serialization with - java - SimpleXml

For those of you out there who have problem implementing some complex xmls i have a good example for you:

Xml :
[code]
UIElement
Elements DivContainer name="asdf" Div name="Carthago1" test Teszt1 test Div Div name="Carthago2" test Teszt2 test Div DivContainer DivContainer name="asdf2" Div name="Carthago2" test Teszt2 test Div Div name="Carthago2" test Teszt3 test
[code]

And this is your Class Hierarchy representing it:

[code]
@Root
public class UIElement
{
@ElementList(name="Elements")
public List divContainers;
}

@Root
public class DivContainer
{
@ElementList(name="DivContainer", inline=true)
public List
divs;

@Attribute
public String name;
}


@Root(name="Div")
public class Div
{
@Element(name="test")
public String test;

@Attribute(name="name", required=false)
public String name;
}
[/code]

And the serialize code:

[code]
public void testXml()
{
Serializer serializer = new Persister();
File source = new File("c:\\tmp\\test.xml");
UIElement ui = null;

try
{
ui = serializer.read(UIElement.class, source);
} catch (Exception e)
{
e.printStackTrace();
}

for (DivContainer divc : ui.divContainers)
{
for (Div div : divc.divs)
{
System.out.println("Value of test: " + div.test);
}
}
}
[/code]

You have to look out for two things... First note the @Root under Div tag. That is necessary there. Writing in the attribute name there is necessary too. Also the 'inline' tag. Without them it wont work.

Again sorry for the indentation problem... Blogspot is lame in detecting code.

Gergely.

2010. június 10., csütörtök

Oil crysis

One question only...

Why use something that cannot be replenished and you know that you will ran out of it eventually...

So why? Sure... because it was cheap and burned good... Well fuck you history for screwing up our generation.

Repetiton

I'm reading a bunch of blogs in a day. I'm reading actually quite a few or at least i follow them on daily basis.

After a while i noticed two things.

First: They begin to mimic each other. They are mostly blogs about testing, but they also are trying hard to write about every day knowledge like psychology and human behavior.

Second: They are trying hard to be productive. To update lots of times to always write something new. But... I'm following these people for quit some time now. And i'm reading lots of magazine. I'm reading review and stuff like that. And to be honest i see LOTS of repetition. I see LOTS of redundancy.

They talk about the same thing over and over again, by using other concepts and other wordings. But when you are good enough in your territory and you begin to see things and know stuff you begin to realize that all the posts that you are reading are somehow either connected or that you already read about it somewhere.

There are quite a few posts about basic knowledge for testers. Quite a few posts about human behavior. Posts about heuristics post about psychology. Post about life style about testing environments. Posts about conferences posts about knowledge,what to know, what to do, how to handle situations, what to do when you are in a certain position, how testing evolves, how people evolve, how managers see us, how community sees us...

Although i Do thing these posts are really good and i learned LOTS of things from these people, i do think that they are beginning to repeat them self to much.

As an automation tester i always find something new for myself. Selenium migrating with webdriver, javascript evolving, java evolving, technology moving on..

But testing? People will always be people. Testing came a HUGE way along the road in the past 6 years of me being a tester. But if nothing remarkable new happens with people or with workplaces then i do think that people will always be people. And testers will always be testers.

Don't get me wrong.. I DO think that EVERY tester should follow these people and read there teachings because that made me what i am today.

So go on... Follow: James Bach, Jon Bach, Cam Kaner, Michale Heusser, Ajay Balamurugadas, Brian Heys, David Alfaro, Ben Simo ( Quality Frog ), Jeff Fry, Cedric Otaku, Coding QA podcasts, Adam Goucher ( Who apparently wrote a similar post to mine... I rest my case :D ), http://www.testingreflections.com/, Gojko Adzic, TestSideStory (http://testsidestory.wordpress.com/), UnimaginedTesting (http://www.unimaginedtesting.ca/blog/) Guarang Shah, Marlena Compton and lots of other people. ( Sorry if i have left somebody out. )

Take care,
Gergely.

Selenium Framework Structure - Java - Continued

So... Last time we had everything wired up in the framework.

Just watch out to comment enough in your xml file or you will get confused what is what no matter how meaning full names you give your elements.

So you want your tests to run every night and you want your developers to run these tests before they commit.

For the first part it's easy. For the second you need to do some extra work.

You see programmers are lazy people. They don't want to bother to set anything not even editing a config file. So you need to make sure that they can run something with two clicks MAX. Or one command line argument.

So what you need to do is using testng you need to organize your tests into groups. Groups like:

  • Smoke Test

  • Slow Smoke Test

  • Home Page test

  • Login Test

  • User Dashboard settings test

And so on and so fort. You can achieve this by using the java annotation @ at class level.

So like:

@Test(groups = { "DashboardTests" })

After defining groups you can use testng-s xml setting file to create a config that runs only these tests like :

test name="Regression1"

groups

run

include name="DashboardTests"

run

groups

test

This way you are running the group of tests. So every test that is in that particular Class. You then would save this xml into an xml named : AllDashboardTests.xml and the developer needs only to run that one.

Last but not least you need to set your ANT files.

For that i recommend using separated projects under eclipse. Why? Because you have more then one iteration of a web site. You have versions that needs to be automated not just one.

So i recommend using more projects Like:


  • Main automation project: Would contain utility classes, libraries, stuff that is constant over all of your projects

  • Version One: Would contain files specific for this version. UI Elements, Implemented test cases, steps, configuration files.

  • Version Two: Would contain files specific for this version.

So for this structure you need an ant script that can work with all these projects. For that you would have a main script under your Main Automation Project project and several smaller scripts under each version that contains useful information or only linkage to the main script.

The main script would handle everything that is constant over all your projects that means:

  • Building the files

  • Executing tasks like: check style, copying, creating directories

  • Creating report

So your smaller ant script would only contain information like, which testng xml to execute.

I also recommend creating an ant target that starts and stops selenium. So your would only have run something like this:

ant test-start-selenium

This would then run the tests and start selenium too. And stop it too of course. This would look like this:

name="test-with-selenium"

depends="selenium-start, runtests, selenium-stop"/>

selenium-start:

target name="selenium-start"

java jar="${automationframework.dir}/lib/selenium-server-standalone-2.0a4.jar"

fork="true"

spawn="true"

arg line="-firefoxProfileTemplate ${firefoxProfileTemplate}"

java

sleep seconds="1"/

target

selenium-stop:

target name="selenium-stop"

get taskname="selenium-shutdown"

src="http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer"

dest="result.txt"

target

So this would start your server ( and add a parameter to it called -firefoxProfileTemplate ). This way all you have to do is execute one little task and it would do everything for you.

Easy eh?

For Hudson and Selenium Grid integration please see this:

http://selenium-grid.seleniumhq.org/continuous_testing_with_selenium_grid_subversion_and_hudson.html

I didn't began to write down how to do it, because this tutorial is great for it.

And i didn't quite yet did it myself. :) So i have to do that one too.

I hope you liked my post, if something is left out, please tell me.

Cheers,
Gergely.

Sorry for the bad edit... I gave up with blogger handling xml tags... Damn them.

2010. június 4., péntek

Selenium Framework Structure - Java

Hi Guys!

Today i want to talk about a topic that is not often talked about. This is the structure of the framework you are building for automated testing and how you could build a framework that is easily maintained and can be expanded any time.

These are general suggestions your implementation may wary based on your environment.

And they will be made using java.

So here goes nothing...

Chapter 1. Technology

What kind of technology do you should use when you want continues integration, nightly builds, any easily executed tests.

First of all... Let go over the basics:

1.1. Continues integration

This means that you always have some functions implemented that you always build integrate and test and that mostly all of these are happening automatically. This means that there is a server or some kind of software that runs builds over night or at weekends if the build is to big.

Example softwares that are free of use are: Hudson, Cruise Control, Apache Maven, Cascade, Buildbot, and so on and so fort. The mainly used are Cruise Control, Hudson, Maven and maybe rationals tool.

These can be configured to build your application every night. These tools work with lots of configuration and lot of ant/nant scripts.

1.2. Automatic Building

So you set up your environment and you have your Maven / Hudson / whatever set and ready to go... What you need now is a building tool. For this there are two great building tools that are used all over the world. These are Ant and Nant. Where nant is a .NET version of ant really.

Ant can be used to build everything really. And it has a lot of other functions too, like. Creating directory, moving files, executing tasks, integrating behavior and lots more.

These you will use to create build.xml-s that build your automation framework and executes the tests you got.

1.3. Test run framework


Next you need a framework that will organize and run your tests. These usually are xUnit where x can be a lot of things like j for java and n for .NET and r for Ruby and p for PHP and so on. And then for java there is testng what i'm currently using. It is a great tool but you have to decide for yourself which one you will use.

1.4. Web Automation Framework

There are a LOT of good automation frameworks out there. And i mean a LOT.

I will just name a few of the big ones.

  • Selenium
  • WebDriver
  • Watir
  • Watin
  • Ranorex
  • Sahi
  • WebAction
So there... These are a LOT of tools. I'm using Selenium currently because i believe that they will rule over all in time. :) For a huge list look at this: http://www.softwareqatest.com/qatweb1.html

Chapter 2. Main structure

So let us talk about how your environment should look like in java...

2.1. Modularity and basic principles


For your environment to work properly you have to consider a few things first...

First, that it will expand beyond any comprehension. This means that whatever you think how big it will get, IT WILL GET BIGGER! You will have over thousands of files that will contain over thousands of code and other stuff.

You will have to write a structure that can handle this kind of load. And you have to write it so that can handle maintenance. That means that if something breaks than you wont lose your head trying to find the problem. And then fixing the problem introduces another couple of problems.

That is something we don't want.

And it can be easily avoided for that matter. You don't need so much fancy Design Patterning or to complicated stuff. There are only a few rules that you have to follow.

Everybody for himself.

Means that everything you write every object every file only needs to be aware of himself. It only needs to take care of stuff regarding to that object only.

For example you have a class that creates ui elements that you work with. That means that everything regarding ui objects is handled in that class. It means that if some kind of problem occurs with an element, like the element is not found, then you know that you have to look in that class and that class only. ( And in the tests because sometimes you just forgot something or misspelled it :P )

KISS - Keep it Simple Stupid.

This is a basic concept and it works. You don't need to fancy tests and scripts that a programmer would create. These are programs of course but they need to be kept as simple as possible. Why? Because not all of your testers have a degree in programing science or even care to have one.

You need to keep it simple for maintainability too because the simpler the easier to edit and poke in it.

Everything in one place.

This is similar to everybody for himself. It means that everything you write or edit needs to be in one place only. This means ui elements, configurations, variables, names, users, passwords, settings, instantiations and so on and so fort.

For example you have selenium and you can start it in more then one way. Than you should have a class dealing with JUST selenium. Or you have a couple of settings like usernames you are using to test with. These should be kept in Java property files.


Chapter 3. Hard facts

So let go forth and present you with an example. Just so you see all these things working together.

For example let's say you have to automate a web page.

Technologies you are using are:

  • Selenium
  • TestNg
  • SimpleXml for Java
  • ReportNG - Reporting for TestNG - Nice piecharts
  • Ant
  • Hudson
Okey. What you want to achieve. You want your tests to run every night and you want your developers to run these tests before they commit. At least a portion of them not all. Just for example the login screen.

First you build your framework.

You have selenium in a separate class taking care of.

You have Base classes for All your tests taking care of functions that all tests should run, like setUp and tearDown.

Your tests should look something like this: doLogin; checkStatus; doLogout;

This is easily achieved too. You just need to hide your logic from your tests. Have test classes and then have Implementation classes. The test would only look like this:

@Test
public void loginTest()
{
LoginPageImplementation loginPageImpl = new LoginPageImplementation(seleniumInstance);

loginPageImpl.doLogin();
loginPageImpl.checkStatus();
loginPageImpl.doLogout();
}

Tada.... You have your test. It is easily readable. You know what it does although your don't have a clue what the implementation looks like. The implementation would be something like this:

public void doLogin()
{
selenium.type(username.xpath);
selenium.type(password.xpath);
selenium.click(loginbutton.xpath);
}

Tada.. Of course there are a bunch of more stuff to it like waiting for a page, and checking if the login was a success but again. It is really simple and you know what it does.. Why?

Here is a trick hidden again. What does username.xpath mean? Well selenium works with locators. These locators find elements on the web page.

Again like i said every man for himself. You need to encapsulate the ui objects on a webpage. How you do that is completely up to you.

I'm using xml Serialization. That is why i'm using SimpleXML for java. I have a class that holds UI objects and an XML telling how does objects are working.

For example:

The xml would look something like this:

//input[@id='usernameInput']
usernameInput
And your object hierarchy would look like UIElement - Elements. And in Elements you would have WebElement value... ( Look under the documentation for SimpleXML it is really simple! )

This way if something on the page changes you again have to look only at ONE PLACE!!

This is really important in ways of maintainability because if something fails and you have to look at at last 5 places to find a bug... well that is a sign you are doing something wrong.

Chapter 4. Last words

So i hope that helped... Any constructive comments are appreciated and tell me if something was too complicated or left out...

Stay Tuned for the next Post on which i explain how to put it together with ANT TestNG and Hudson! :)

Cheers,
Gergely.

2010. június 3., csütörtök

GTD - Getting things done

Hi folks!

Today i want to write about GTD. It is another buzz word that got reinvented and sold to stupid people.

Guess what, I've been doing GTD for at least 10-15 years. We just called it frigging note taking back then. You took your little notebook and a pencil and you started writing down stuff. And if you wanted to scribble something next to an objective then you did it in under half a minute.

GTD didn't require a fancy UI. Fancy UI is just distracting. It takes your heart of the task ahead. And despite any kind of alert you never will use a software for GTD. Because they are cumbersome. They don't work fast enough, they aren't around, you close them or put them on tray and never ever care about them again. And they are slow. Sure you can add a new task in under a minute but you wont. Because you play around with the time and deadline and stuff like that.

You don't have to and it's only distracting you. And if you want to doodle a picture next to a task? Sure you can attach nice picture. Nice pictures are good. BUT THEY ARE NOT HELPING! Why? Because they distract you. You begin to look for the task only to see the nice picture but you aren't actually working on the task.

Imagine i write down a task and draw a little dog next to it. With a pencil? 25 seconds. With the machine? More... You search for the picture, that doesn't quit do it, this one isn't black, on this the dog looks stupid, the task has a false dead line, maybe i add some more... The list looks not organized... etcetcetc...

So I've been doing this for years and now some guy comes around and tells me i gotta give him credit because i'm doing what he said?! Hell no!

Programs will never be able to give you the satisfaction a good pencil and a good moleskine notebook will give you. I'm coming in every day and the first thing i do i writing down my tasks ahead of me for that day. Every day a new page even if i have some tasks left on the other day. then i'm writing then down again. Because you have to remind your brain every day. And then i leave my notebook opened on that day in from of me or next to my laptop. It's always around i can always see my handwriting and the fine paper of the notebook wanting me to write on it. Wanting that i have to complete some tasks and fine some new ones i can scribble down.

So people... Get to it. Get some paper and a good pencil and you will see production increase. And forget GTD it's only a damn word. Do what you like and how you like it. NOBODY can tell you what you want and how you want to do it.

2010. június 2., szerda

Usefull stuff

If you have multiple working environments and machines and you have files that you gather and put it on an ftp server or a usb stick or things like that... Then here is a solution for you:


If you know dropbox then still here is a small tip for you...

You can synchronize your work environment not inly by sharing files... You can share settings too!!!

So if you for example make your eclipse save your profile into a dropbox folder, then when you get home and turn on your home computer, your eclipse will open up where you left it at your work.

Or firefox profile settings into a dropbox and when you get home and open your firefox it will open the same pages that you left open at work.

This is a very effective and very cool way to use dropbox.

Just don't forget to close all the porn pages you left open at home ;))

2010. május 26., szerda

Moving

Moving into a new company is never easy. Except if you hated your old work.

I didn't hate mine. So now i'm working in a new one. It is interesting of course and the work is much challenging and i will post stuff about it after i'm feeling more comfortable and i have the time to do so.

Until then... this is Skarlso, keep your heads up for update... and now. Some music...

2010. május 14., péntek

How does a porn star pay for her speeding ticket?

With money of course...

And if you are a tester and you didn't thought of this idea then you did two things wrong:

  1. You assumed something
  2. You used a stereotype which was present in your head
As a tester your first question should have been:

"Well i'm curious... how?"

As a tester there is a rule of three that you always have to follow no matter how trivial the problem seems.:

  1. Never assume anything
  2. Always question everything
  3. Never trust anybody
This is a good rule of thumb to follow and should be apply to your life as well. If somebody tells you that the apple you are going to buy at a store is really really good would you buy it on his opinion? Of course you would do that. Because you assume that the guy doesn't lie and has tasted the apple before. And then you bring it home and take a bite and immediately spit it out because it's damn sour. And when next time you meet the guy you ask:

- Hey that apple was pretty bad.
- Why?
- It was sour as hell.
- Yeah i like that a lot, i told you it's good.

Yes you see it was good from HIS point of view not yours. So never trust anybody unless all agree and never assume something before you didn't taste the damn thing.

Gergely.

2010. május 11., kedd

Child parenting in the views of a tester

I want to write about something funny this time.

What is the biggest project you can imagine? Empire state building? Two towers? Pyramids?

Yeah there is something much more bigger. Parenting is almost the hardest and most impossible task that you can face in your life. It is easier to jump from a plane with a parachute. There are so many things that can go wrong...

So how about mapping some of the testing heuristics to child parenting.

Let's see...

In the first few months you got to build your framework you got to find out your user stories and do an initial test case identification. You do a basic exploratory testing and find that everything is okey, the child comes around pretty well. You begin to plan for the future, you develop tests and user stories like:
  • As Amy, i would like to go to collage to be able to get a degree
  • As Amy, i would like to get a breast implant so Joey finds me attractive
  • As Mark i would like have my ears pierced so i could sleep with Amy
  • As Amy i would like to have proper parenting so i don't sleep with Mark just because he has a cool ear piercing, and oh my god did you see that biceps?
So you then begin to run some more tests until you can no longer control the child's evolution. And then comes user acceptance testing. You get a lot of feedback from other people about your child's behavior and general working processes. She did sleep with Mark and you are disappointed that there was something wrong during the testing phase. Now you have to re-factor the child.

This is no longer easy since you are over the initial phases so you have to put in a LOT of effort. That costs time, money, nerves, and a new breast implants for Amy. Eventually you get around and can introduce some patch work on Amy and you are over running your User Stories again and again comes user acceptance testing. This time the feedback is good. Amy behaves and it seems everything is working fine.

And then at some point in time without any notice at all a user comes along and says that he saw Amy doing drugs in the ally. You rush to your child you try to reproduce this bug, but you find nothing. You go again to the user and say that could he specify a bit more what he saw and where. The user tries to describe the bug again, says Amy was there at 2010.05.15. And then you realize that it couldn't have been Amy because she was with you on a weekend vacation. So you reject the bug and say that it could not have been her.

After a while the project gets fully out of your hands into the final stage in which whatever you do, you can no longer perform a re-factor because it became to huge to mess with it. You can only provide some workarounds and good documentation to the user. Maybe hide some of the bugs that were found. Or try to introduce new functionality to hide the old faulty one. ( She get's that breast implant after all ).

So folks. Raising a child is like bringing a huge project to success or at least not to a failure. But don't worry, the feedback is pretty good and if you manage your time properly you don't even have to work overtimes...

Gergely.

2010. május 9., vasárnap

No coding required.

hi!

Today i want to write about automation frameworks who try to sell them selfs by saying: "No coding required."

I don't like frameworks like these and i tell you why. Because it's bullshit. And it is dangerous too. Because it gives illusions. It gives false hope to managers it gives you an extra amount of work and extra amount of stress because of illusions.

Basically when there is a framework that tells you that there is no coding required it often means that it can generate code. This is great all in all, but.. It does not mean that it does not require code, because, let's face it. You REQUIRE a robust, working, expendable framework which will work for another one or two or twenty years. And you can have that without coding.

You require coding IF:

  • You want an environment with which it is easy to work
  • You want an environment which can be easily expanded
  • You want an environment which wont fail if you add another test or 200.
  • You want an environment which is portable
  • You want an environment which is configurable
  • You want an environment which can run on every kind of browser and op system
  • etc.
So you don't get to work around coding. You don't get to skip that part. And why is it dangerous? Because your managers will be impressed and passioned about it and you got to suck it up. Because you won't be able to explain them why it is a lie or at least a partial truth.

What i would like to see is adds that say:
- We can generate code
- We can create a partial framework that needs revising
- We can create a framework skeleton

And so on and so fort. So be very careful what you show to your managers and operatives because they tend to believe in adds.

Gergely.

2010. április 29., csütörtök

Learning

I know I've been quiet all this time, but is had a lot of stuff to do. I'm working on a selenium 2.0 framework.

It is really interesting and I'm working hard on making it as robust and extensible as possible.

I will post some info once it's completed.

Cheers,
Gergely.

2010. április 17., szombat

"Advanced" user opinion

Hi.

Today i want to talk about something important. Something i wanted to talk about for quite some time now.

About how the population and the end user is handled. How dumber and dumber it becomes with the passing of time.

What brought me to this conclusion? You only have to look around. The end user the end consumer is no longer handled as a thinking human being. He is handled as a baby. He is handled as a disabled baby.

Let's look at some examples in the software business.

At late times 1990-2000-ish softwares installer was not very user friendly. If you choose custom install you had endless possibilities. Of course it was all up to you. If you place some of the files necessary for the software somewhere else then it belonged then it was all your fault.

Now the install is of course more user friendly. But i'm sort of offended when i click on custom install and all i can see is defining the main path for the software. And that is not the worst part since it is custom only. Okey, i can live with that. But when i see the button labeled "Advanced" and i can only see the path again... Now that's is when i'm pissed of.

And it gets worse. The problem is that people no longer use there brains. This is partially our fault. Because we give them intuitive interfaces. That's okey, we gotta evolve, technology needs to be better. It needs to be more easier. But at what cost? Today i saw a guy asking the forums to describe to him how you can install and use Selenium RC. All he had to do is go to the website of Selenium and read the fuc... fine manual. But rather then using his brain and come up with the solution he wants others to do that for him. Either because he is lazy or he does not care OR he just didn't want to use his brain. Because he thought what for? Somebody already did it, why should i read how it should be done?

And... there is more. I played a game which was a port from a console to pc. The game had no video settings at all. It had aspect ratio, resolution and brightness. I figured there must be some other way to set it. Some files some config files or ini or whatever. I read a bunch of forums because i'm a guy who searches for information before asking anything. And found out that they didn't bother with it. One of the moderators of the forum of the games website said this:

"In general, my experience with computers is that everything is getting more and more automated with less options to tinker with for the non-advanced users. More people use them now, thus it has to become more user-friendly with less confusing terms and stuff. Everything gets streamlined and automated.

As far as advanced user configuration settings goes, they sure can be handy, but there can actually be a lot of extra work required in adding such features. Sometimes it also wont work, at all, 'cause of the fact that the game's audio/visual presentation depends on a lot of circumstances to be "just right" for things to be "right". (Dunno what you'd like to call that, but I guess it could be called preservation of artistic values or something)

In the future, you'll probably be seeing more and more games where only Resolution, Aspect Ratio and Gamma/Contrast/Brightness settings are the only adjustable pieces of visual functionality."

Do you know what i think when i read this? HELL NO! I don't want a future like this! This sounds like bullshit. I don't want the computer finding out what i want. I don't want bloom because it looks like shit. I don't want anti aliasing because my computer does not support it. I want options. We live in the 21st centure give me options because my brain deservse it.

"More people use them now, thus it has to become more user-friendly with less confusing terms and stuff."

That doesn't mean that only dumb fucks are using the game who just start it and can't barely find the "New Game" option.
I'm offended. My brain is offended. My culture is offended. My ability to find out how things work and alter them to my personal likings is offended.

Don't get me wrong. I'm all in for user friendly and intuitive behaviour. But i'll be damned if it is good and healthy if an iPhone user can't restart his/her iPhone because he is to dumb to read the manual. ( True story, the guy even went so far as bringing his back to the vendor... ).

And this goes for everything in our life. Politics... here in my country there was a voting over if we should pay when visiting a doctor or not. It was a really difficult decision. The far-right and far-left sides campaing sounded like this: "If you are with us you vote: Yes, Yes, Yes." and the left side said: "If you are with us you vote: No, No, No." There were three questions. And nobody cared to explain to the voters what they are voting on... They just told you what you should vote.

I really hope that at some point of time the people will want more. But i know that chances are that of a snowballs in hell. Well i guess that is what we are here for. At least we testers should have the guts and mind to question everything. And be explorers, Buccaneers rather then sheep in a heard.

(The term buccaneers came from James Bach. Check it out.)

2010. április 8., csütörtök

Secret code

There is a secret code on the page of jQuery.

http://jquery.com

Let me know if you can figure it out.

I give you one hint. The codes origins lays in gaming...

Those who already know it, don't blow it for the others ;)

Have fun!
Skarlso / Gergely.

Google groups for Testing

I was browsing for some good groups on software testing under google groups...

I found many and began to go through them to find a fitting one.

I went over a dozen or so, or even more and all i could see were:
"Need X"
"Need Y"
"Need Z".

Okey don't get me wrong, it's very good that we are wanted and good people are wanted. But for Christs sake create your own damn group and don't spam a group which tries to talk about something. It messes it up. I don't want to read these letters. And what do you know.. These groups are all dead. No one writes something because no one reads them anymore because they are pissed about all the spam they are getting.

So if anybody knows a good google group about testing which is not spammed with job offers... Please tell me!

Thanks,
Gergely.

2010. március 30., kedd

Technical Skills vs. Testing knowledge

I want to talk today about priorities. If you are an automation tester read on. If you aren't then this probably does not concern you.

In our world of automation we face many problems. Framework, programing languages, abstraction, simplification, input focus and so on and so fort. We face the problem then what we do is not visible and does not provide feedback for a long time. It will reward you in the end but you have to get there first.

In terms of knowledge for an always automation guy technical knowledge is important. It's not only important it's essential. Without technical skills like programming you are not a very good automation expert are you?! So if you are an automation guy then what you need to learn is not testing heuristics and global knowledge of testing technnics but a very good technical skill set of things like:
  • Design Patterns
  • The selected programming language
  • Object Oriented design and programming
  • Framework building / designing
  • Automation knowledge
  • Tips and tricks of the selected tool ( selenium, ranorex, watir, etc )
And not only these. If you are for example put on a project that uses perl as automation ( Test::Harness ) then what you need to do is become a perl expert. Use perl at home, play with it, learn it, build stuff with it out of your work at home. Join the discussion groups, read forums, read news of what's going on with the perl language. Be on top, or be dead.

So the best advice i can give you is that for an automation expert testing methodologies are not that important. They are useful of course and you should follow some major sites only to know what the latest hype is, BUT. Technical skills are much more important. And i speak out of experience. When i was getting a job as automation expert they didn't ask me ONE question what i know about testing... All questions were about technical stuff and knowhow.

Good testing.
Gergely.

2010. március 25., csütörtök

New things

I want to talk to you about new things today.

New job, new offers, new project, everything that you don't know yet, but need to learn because you life demands it.

It is perhaps a promotion it is perhaps a new job of some sorts it could be anything. I have a simple advice for you about that. DO NOT BE AFRAID!!! Never be a afraid. New things in life are GREAT! New thing mean you can learn something new! You can learn everything you want if you sit down and give it time. To learn something new is always a good thing. If you face a new challenge don't be afraid of it! Laugh in its ugly mount and say: "I'm not afraid of you! I challenge you to fight my intelligence. To fight my courage! To fight my thirst for knowledge and information!" And if you fail? So what! You LEARN from failure too! But for that you have to FACE the new thing. You have to embrace it. James Bach wrote in it book "Buccaneer Scholars" that he learns from failures as of successes. I love that thought. Bad luck in your life just got served. A job offer didn't work out? So what... Learn what your problems were. Learn why they didn't want you. Learn and adapt. Identify you gaps and fill them. It's just information. It's just knowledge. Don't be afraid of knowledge! EMBRACE KNOWLEDGE!! LOVE KNOWLEDGE! It helps you. It respects you it loves you too! It will always be there for you if you need it!

I have a notebook by me at all times. Even when i go to the toilet. You know why? Because the best ideas comes when you are sitting on a toilet. I write down everything. I can remember all that shit i'm thinking about come on?! So i write it down. There is no shame in that! There is no shame if you can't remember 1234525442 digits of pi. Write it down if that is important for you. BUT! WRITE! And later on you can skim through your book and see what ideas you had during a day. That helps to identify what your brain thinks when it's on stand by. Do you why the best ideas come when you are sitting on a toilet? Because you are relaxed. It is quite and you are bored. You need to pass time and at some point your brain because to think of its own. It thinks a lot if you care to listen to it. Don't be afraid of you brain. It will tell you stuff you never imagined you know. Write it down. You will get a cramp in your arm from the stuff your brain produces when you start listening...

So... I encourage you to embrace your brain. Embrace change. Embrace Knowledge. Embrace new things and your life! DON'T BE AFRAID! Love it... And it WILL Love you back.

2010. március 23., kedd

Failing after Failing

Have you noticed that many blogs and audio streams and things like that about testing die off after a while? They think that everything that you can talk about testing is talked about somewhere else and that there are only concepts about testing that apply to testing only. And that when you described every possible testing Technic and method, you don't have anything else to say about testing?

This is so wrong. It's wrong because:

1. Testing is NOT ONLY ABOUT Methods

I'll tell you something. For a very long time i was a tester WITHOUT knowing why i am a tester and what methodologies there are and what kind of testing i'm doing right now. And i tell you something else too... I did pretty damn well. Why? Because i was Passionate because i was excited because i liked what i did because i was enthusiastic about it. Because i knew technology because i understood how the system worked and i could take it apart without knowing that i did regression test or boundary analysis or what ever.

2. Testing comes with experience

A good tester will learn whatever there is to learn that is requested from him. If he has to be a network expert so be it. If he needs to be a professional performance tester so be it. I will be a friggin performance tester in 2 weeks. Why? Because i can.

3. Tools...

A testers best arsenal is his brain and the internet. There are PLENTY of tools for EVERYTHING now days. If you know what to look for you can asses riches beyond any imagination. And if you are good enough then you WRITE your own tool. That's possible too. Imagine that... I hated perl i feared it because i didn't know anything about it. One day a project came to my door which required perl knowledge. The pay was very good so yeah... i got into it. And before i knew i learned perl and i wrote a database mock in a week with xml handling, streaming, interface compatibility and dynamic file creation. I never thought i would be able to do that in perl. I was weak back then. I did not trust myself. But...

4. Confidence

It's all it takes... Self belief that you can do it. It does not matter what you know it's what you CAN know. And you CAN know EVERYTHING!!


So to all does blogs and audio blogs that failed and are discontinued... Same on you for not be able to come up with more stuff. I could write a book about testing and not even mentioning one friggin method ever! I'm not saying that they are not important and the usage of them can bring you forward. I'm just saying that you don't have to rely on them so much. You have a brain you know.. Use it! So suit up, and follow if you would like to learn my way of taking on the world of testing.

Cheers,
Gergely.

The soul of a tester

Hi.

I went through a small inner conflict. Am I a tester or do I wanna be a developer? I think that every tester who ever was a programmer does take on this question.

Do I program at home or do I commit myself to a life time of studying technology and understanding it but never actually using it since I ain't got the time to delve into something. Why not? Because you must go on with your studies as a tester and you must go on with your work. And if you are a tester from the soul you should practice your testing skills and not your programmer skills. And if you're an automation tester then you should practice your automation skills which does involve programming but not at application level.

And that brings me to today's topic. A tester's soul.

I could write about many things... Technology. Boundary Analysis. White Box testing. Black box testing. Performance, Syntax, Idiot proof, Exploratory, Semantic, Error Guessing, Algorithm testing and so much more. Automation, Server side scripting, web automation, sql injection proofing and so on and so fort.

None of these mean anything. It does not matter if you know these things, it does not matter if you can write a test within 5 minutes that tests a textbox for every value possible it does not mean ANYTHING IF... if you don't have a testers soul. A tester will do this with Passion! A tester will do this out of curiosity a tester will try to break the system in any way possible a tester will try to find loopholes a tester will try to find every bug in a the world. And tell you what? A tester is a tester even if he is NOT in work. A tester will test a TV in a market before he buys it. A tester will try to punch a melon to see if it breaks before he buys it. A tester will take careful decisions based on analysis the available data at hand. A tester will do his job and he will love it. Even if it is dull at some times. It does not matter. He likes it that way. It does not matter if from time to time there is nothing to do because the servers are not working. He would not mind the time out. Why? That's just another opportunity to broaden his skills. He reads books about testing, he reads blogs about testing he reads articles about testing. It's in his Soul in his Blood in his very existence. He will jump into new opportunities he will gladly learn the 123131345533th programming language if the project demands it. He will be an expert on Network Security if the project demands it and hell he will even be a professor a doctor and a damn astronaut if that is what he needs to be.

A good tester's a very good tester's best abilities are not what he may already know about technology. Technology is not a constant variable. It's always changing always evolving. A good tester can ADAPT. A good tester LIKES to adapt. A good tester WANTS to adapt. A good tester has strong people skills. A good tester is a cheerful person with very good fantasy and ideas which pop out of his head every minute. A good tester is a guy who if he drops his phone has almost instantly written and performed a dozen test cases to see if his telephone is working. A good tester will NEVER assume. A good tester does NOT KNOW the word ASSUME. He hates the sentences:”Let's assume.” Let's not. Tell me how it looks like. Tell me how it works. Tell me it's bits and pieces tell me the nature of it's heart and i take it apart and put it back together and tell you what's wrong with it.

THAT is a Tester. A tester loves to test. A tester loves the challenge of a good application. A tester loves reading, writing, learning about technology, testing processes, the world in it self. A tester wants to be ALL KNOWING. A tester can never have enough knowledge in his brain. A tester NEVER does something SINGLE. He always does multiple things at once. Never does focus on something he focuses on many things WITHOUT loosing detail on one thing.

So... What is a tester's soul? A tester's soul is his life. A tester is the embodiment of a protecting angel who tries his best to surface all the evil in the world and all the bugs in software development. A tester is a life commitment. And i like being a tester. I love being a tester. There is nothing better then to be a professional senior software quality assurance engineer. Amen.

2010. március 22., hétfő

Mutli user Testing

You would think that with the huge evolution that databases went through in the past years multi user testing is out dated. But that is completely untrue.

Web applications now days face a user pool of more then thousand or even more then tens of thousands of users. These are a lot of people acting all at the same. There ought to be some problems. Imagine a bunch of users requesting information on one subject. Or editing a document? Take a document from a shared library and begin to edit it and then submit the change? Who wins? First come first served? Or imagine a document with the same name submitted by a dozen of users at the same time.

Now days there are keys that prevent these kind of errors from happening. Unique keys that don't allow conflicts. Even so a deadlock is possible. Imagine a tunnel that only allows one car at a time to pass it. Two cars wont fit and when one car comes from the other and then it's a lock. Now this is possible if the design was not good enough or the developer did not thought of it. In my career i encountered multi user problems all the time when testing Web applications. They were never solved only patched.

So don't underestimate multi user testing because when a deadlock occurs that's no fun...

2010. március 21., vasárnap

Learning

As a tester you should do at least two things EVERY DAY:

- At the end of the day, write down what you learned. Try to compose at least a few sentences that will help you understand what you wrote. And Understanding is the way of learning.

- Re read the previous days log in the morning.

This list can be written on the weekend too. Because you should always pursuit knowledge!

Today i learned:

- How to be a better boyfriend.
- How to handle a bad family situation.
- Quantum Superposition.
- Read an article that scientists finally could create a resonator that responded to quantum superposition effect.
- Read about Systems thinking and how to use you brain for good stuff.

I'm tired now. Have a nice week folks. Will write soon.

Gergely.

2010. március 19., péntek

First!

We all hear or read this sentence once in a while... But this time it just made to much sense.

This is the first post of many posts at least i hope so.

Welcome to the QA Home for Software testing. Hope you will have fun, and enjoy the lessons.

Have a seat.. Try a cookie!