Skip to main content

Automated Software Testing: Handling Memory Problem in Sikuli

One of the most important step in software engineering is software testing. Proper software testing will dramatically reduce the risk during software implementation. By the end of the day, testing will ensure your stakeholder about the quality of your software.

When you find a bug, you will assign a task to developer to fix it. When the developer has fixed the bug, it will be reassigned back to you. When you find another bug, you and the developer will do it again and again. Bad news is, when your program is fixed in one part, sometime it will make trouble in other part. Sometime what you have found as bug and then fixed, it will be bug again when the developer works in another part or your software. Thus, we have to do thorough testing for each release to ensure that no bugs are re-introduce.

Isn't it boring?

Yes, doing repetitive task (especially if the developer make daily release) will be boring. Thus, we need to automate our testing. You can do automation with any software you like. But, as I use Sikuli, here I share my hands-on experience with Sikuli.

Sikuli provides you handy API for GUI testing. However, when you want to do repetitive testing or combinatorial testing (you combine each choices in each features you have in your software), sikuli will have a problem with its heap memory especially when you have a lot of click() method. Here what I did for handling this problem:

1. In Java, we can force to release unused memory using System.gc(). In python, we can use gc.collect(). But as Sikuli runs Jython, we cannot use both. So, we have to do another way.

2. The problem is with memory. So, we have to minimize our variable in memory as much as possible. Thus, once we know that the memory is no longer used, then directly delete it from memory.

3. Here's an example for what I have done:

So, instead of using click([capture]), I put the image as one variable. So you do it by entering the name of the variable like this

size_500 =

And then you press "take screenshot" button 

Next thing you do is to click to the variable declared.

Lastly, if you think this screenshot will only used once, then directly delete the variable from memory by using

del size_500

Hope this helps if you have same problems with me.

=====
Thanks for ScramSoft for giving me amazing experiences.

Comments

Popular posts from this blog

Find JIRA issues mentioned in Confluence Page

I have been walking through a lot of pages in internet but have not found any answer except one. However, the answer is not complete, so I will share my experience here. This feature is very useful, especially to summarize the issues found during certain tests, where the tests are reported in a confluence page. I found that there are so many questions about this, but Atlassian seems does not want to bother with this request. I found one way to do this by the following tricks Take one JIRA issue that related to the target confluence page (in this case, say it is GET-895) Find the global ID of a JIRA issue: http://bach.dc1.scram.com:8080/rest/api/latest/issue/GET-895/remotelink It will show the JSON like this: [{"id":28293,"self":"http://bach.dc1.scram.com:8080/rest/api/latest/issue/GET-895/remotelink/28293","globalId":"appId=662e1ccf-94da-3121-96ae-053d90587b29&pageId=105485659","application":{...

If and For in Wolfram Mathematica (with examples)

IF Condition in Wolfram Mathematica The syntax is as follows xxxxxxxxxx If [ condition , what to do if true , what to do if false ] Some examples Example 1. Simple command x x = - 3 ; If [ x < 0 , - x , x ] 3 Example 2. If condition in a function abs [ x_ ] := If [ x < 0 , - x , x ] abs /@ { - 3 , 2 , 0 , - 2 } { 3 , 2 , 0 , 2 }   For in Wolfram Mathematica The syntax is as follows For [ start , test , inc , what to do ] Some examples Example 1. Simple Loop xxxxxxxxxx For [ i = 0 , i < 4 , i ++, Print [ i ]] 0 1 2 3 Example 2. Another simple loop For [ i = 10 , i > 0 , i --, Print [ i ]] 10 9 8 7 6 5 4 3 2 1 Example 3. Print list a = { 10 , 3 , 9 , 2 } For [ i = 1 , i < 5 , i ++, Print [ a [[ i ]]]] 10 3 9 2  

Android studio in ubuntu - problem: 'tools.jar' seems to be not in Android Studio classpath. Please ensure JAVA_HOME points to JDK rather than JRE.

I love coding, especially Java. Because Android apps is written in Java, I would love to make one as well. Unfortunately, when I tried to install Android Studio on my Ubuntu yesterday, I got this error message: 'tools.jar' seems to be not in Android Studio classpath. Please ensure JAVA_HOME points to JDK rather than JRE. When I google on this error, there are so many websites and forums discuss about this error as well as the solutions. However, in linux (or ubuntu in my case), sometime we have different environment so that the solution will not always work (sometimes we have to do another thing before or after that solution). And this also happen in this case. Here are what I did then: 1. Know what exactly the problem is: the problem is that the JAVA_HOME in my system did not point to JDK. Instead, it points to a JRE. JRE can only be used to run java applications, not to build them. 2. Check the java path used by the system. In terminal, I typed the following: ...