Search
 
 

Display results as :
 


Rechercher Advanced Search

Latest topics
Navigation
 Portal
 Index
 Memberlist
 Profile
 FAQ
 Search

Negative Testing with Selenium JUnit 4 Remote Control and Eclipse

View previous topic View next topic Go down

Negative Testing with Selenium JUnit 4 Remote Control and Eclipse

Post by Klau on Tue Dec 04, 2012 3:16 pm

Hi,
I created the following script. I use Eclipse and JUnit 4:
Can't add website to the code because: New members are not allowed to post external links or emails for 7 days. Please contact the forum administrator for more information. Please remove this limitation!

Code:
package com.example.tests;

import com.thoughtworks.selenium.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.regex.Pattern;

public class SeleniumJUnit extends SeleneseTestCase {
   @Before
   public void setUp() throws Exception {
      selenium = new DefaultSelenium("localhost", 4444, "*firefox", "website");
      selenium.setSpeed("2000");// to run the script slow
      selenium.start();
   }

   @Test
   public void testAccount() throws Exception {
      selenium.open("/company/login");
      selenium.click("link=Create Account");
      selenium.waitForPageToLoad("30000");
      selenium.type("name=username", "Claudiu");
      selenium.type("name=email", "An email address");
      selenium.type("name=password", "test");
      selenium.type("name=retype_password", "test");
      selenium.type("name=security", "9kk36c");// captcha code
      selenium.click("name=submit_register");
      selenium.waitForPageToLoad("30000");
      selenium.click("name=terms_submit");
      selenium.waitForPageToLoad("30000");
      System.out.println("Sleeping for 9 seconds");
      Thread.sleep(9000); //does not close browser for 9" after the test in executed
   }


   @After
   public void tearDown() throws Exception {
      selenium.stop();
   }
}
The script will try to create an account to a website for example.
I want to to build a new script for Negative Testing (enter wrong data in the fields, a wrong email format etc).
I know what is Negative Testing but I used most in Manual Testing.
Now I want to learn Negative Testing on Automated Testing. I am beginner with Automated Testing.
So, my first question is: How to modify the attached code to make Negative Testing on that page?
Second question: for Negative Testing is more OK to make a new script or can be added to Positive Testing script( to the same code)?
In Eclipse -> JUnit Test Validation bar(Pass or Fail) should be red when make negative testing or green?
Can you modify for me the above code to make Negative Testing to understand exactly how it's works?

I wait for an response,
Thank you very much!
Claudiu


Last edited by Klau on Fri Feb 22, 2013 4:25 pm; edited 6 times in total (Reason for editing : Try to add source code)

Klau

Posts : 8
Join date : 2012-12-04
Location : Romania

Back to top Go down

Re: Negative Testing with Selenium JUnit 4 Remote Control and Eclipse

Post by tarun3kumar on Wed Dec 05, 2012 5:11 pm

Let me try to answer but before that, if you beginning with Selenium then use Selenium 2 and not Selenium RC. You could begin here - http://seleniumhq.org/docs/03_webdriver.html

Coming to your question -

Negative testing is automation is going to be same as how you do it manually.
For ex - if you enter different password and confirm password the system should throw error message and your test can assert this error message. Hence in this case it is all about passing invalid data to test and validating that system throws error and handles such use cases. My suggestion is going to be to add different test methods for different use cases. You can reuse most part of code if you followed page object pattern -

http://code.google.com/p/selenium/wiki/PageObjects

Coming to the JUnit test validation bar, it should be green for all test whether negative or positive. A red bar means test fail and a failed negative test means that system does not handle negative use case.

Hope this helps.

_________________
Thanks
Tarun K
Free Selenium Training

tarun3kumar
Master
Master

Posts : 186
Join date : 2012-02-14

http://seleniumtests.com

Back to top Go down

Re: Negative Testing with Selenium JUnit 4 Remote Control and Eclipse

Post by Klau on Wed Dec 12, 2012 5:27 pm

tarun3kumar wrote:Let me try to answer but before that, if you beginning with Selenium then use Selenium 2 and not Selenium RC. You could begin here - http://seleniumhq.org/docs/03_webdriver.html

Coming to your question -

Negative testing is automation is going to be same as how you do it manually.
For ex - if you enter different password and confirm password the system should throw error message and your test can assert this error message. Hence in this case it is all about passing invalid data to test and validating that system throws error and handles such use cases. My suggestion is going to be to add different test methods for different use cases. You can reuse most part of code if you followed page object pattern -

http://code.google.com/p/selenium/wiki/PageObjects

Coming to the JUnit test validation bar, it should be green for all test whether negative or positive. A red bar means test fail and a failed negative test means that system does not handle negative use case.

Hope this helps.

Hi,

I build a new tests to a local site by example, to show how Negative Testing is working:

Below is Positive Testing code-> create the account to a website

//Script to create an account for the site
Code:
package com.example.tests;

import com.thoughtworks.selenium.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.regex.Pattern;

public class CreateAccount extends SeleneseTestCase {
   @Before
   public void setUp() throws Exception {
      selenium = new DefaultSelenium("localhost", 4444, "*firefox", "website to test");
      selenium.setSpeed("2000");// to run the script slow
      selenium.start();
      System.out.println("SetUp is running");//
   }

   @Test
   public void testCreateAccount() throws Exception {
      System.out.println("test CreateAccount is running");//
      selenium.open("/ss/");
      selenium.click("css=a.jqTransformSelectOpen");
      selenium.click("link=Register");
      selenium.waitForPageToLoad("30000");
      selenium.type("name=name", "Claudiu Barbulescu");
      selenium.type("name=email", "Your Email");
      selenium.type("name=security_code", "super");
      selenium.click("name=new_user");
      selenium.waitForPageToLoad("30000");
      selenium.type("name=password", "test123");
      selenium.type("name=retype_password", "test123");
      selenium.click("name=new_user");
      selenium.waitForPageToLoad("30000");
      Thread.sleep(6000);
   }

   
   @After
   public void tearDown() throws Exception {
      System.out.println("TearDown is running");//
      selenium.stop();
   }
}


And here is Negative Testing for the above code when try to create an account:

// Negative Testing for Register page
Code:
package com.example.tests;

import com.thoughtworks.selenium.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.regex.Pattern;

public class NegativeTesting extends SeleneseTestCase {
   @Before
   public void setUp() throws Exception {
      selenium = new DefaultSelenium("localhost", 4444, "*chrome", "website to test");
      selenium.setSpeed("2000");
      selenium.start();
   }

   @Test
   public void testRegister() throws Exception {
      selenium.open("/ss/home");
      selenium.click("css=a.jqTransformSelectOpen");
      selenium.click("link=Register");
      selenium.waitForPageToLoad("30000");
//Verify if an account already contain the email
      selenium.type("name=name", "Claudiu");
      selenium.type("name=email", "Your Email");
      selenium.type("name=security_code", "asdfg");
      selenium.click("name=new_user");
      selenium.waitForPageToLoad("30000");
      assertTrue(selenium.isTextPresent("This email address has been already used in the past. You may either want to login using your previous login details, or create another account using another email address"));
//Test wrong captcha
      selenium.type("name=security_code", "asdfg");
      selenium.click("name=new_user");
      selenium.waitForPageToLoad("30000");
      assertTrue(selenium.isTextPresent("› The security code you typed isn't correct"));
      Thread.sleep(6000);
   }

   @After
   public void tearDown() throws Exception {
      selenium.stop();
   }
}


I use assertTextPresent command to assert warning messages from the site. It correct to use this command?If not give me another example.
Thank you!


Last edited by Klau on Fri Feb 22, 2013 4:24 pm; edited 2 times in total

Klau

Posts : 8
Join date : 2012-12-04
Location : Romania

Back to top Go down

Re: Negative Testing with Selenium JUnit 4 Remote Control and Eclipse

Post by tarun3kumar on Sun Dec 16, 2012 1:59 am

Seems ok, but in positive use case you did not assert any thing.

_________________
Thanks
Tarun K
Free Selenium Training

tarun3kumar
Master
Master

Posts : 186
Join date : 2012-02-14

http://seleniumtests.com

Back to top Go down

Re: Negative Testing with Selenium JUnit 4 Remote Control and Eclipse

Post by karthik karne on Fri Feb 01, 2013 1:40 pm

Hi,
I think writing a script where it gets its input values from a file(txt,html,json or xml) will be better. In that give your different sets of inputs. Write exceptional handling for your script and write exception to a file or use selenium.captureScreenshot() to take screen shots.
Thank you,
Karthik Karne

karthik karne

Posts : 2
Join date : 2013-01-29
Age : 26

Back to top Go down

Re: Negative Testing with Selenium JUnit 4 Remote Control and Eclipse

Post by Sponsored content Today at 1:07 am


Sponsored content


Back to top Go down

View previous topic View next topic Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum