Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Developer Tester Collaboration: The Practical Side

Jim Holmes
November 08, 2013

Developer Tester Collaboration: The Practical Side

Updated with new organization and a bit of new content from my talk at QA Or The Highway in Feb, 2015.

Yes, Developers and Testers should spend more time talking. Yes, each can learn from the other. Your projects will go much more smoothly, and you'll deliver better software to your customers.

This deck is from my talk at SQADays 14 in Lviv, Ukraine.

Jim Holmes

November 08, 2013
Tweet

More Decks by Jim Holmes

Other Decks in Programming

Transcript

  1. [Test] public void one_method_to_rule_them_all() { var profile = new FirefoxProfile();

    var exe = new FirefoxBinary(@"D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); IWebDriver browser = new FirefoxDriver(exe, profile); WebDriverWait w = new WebDriverWait(browser,TimeSpan.FromSeconds(10)); browser.Navigate().GoToUrl("http://localhost/AJAXDemos/CascadingDropDown/CascadingDropDown.aspx"); //browser.Navigate().GoToUrl("http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx"); w.Until(ExpectedConditions.ElementExists(By.XPath("id('ctl00_SampleContent_DropDownList1')/option[text()='Acura']"))); var sl =browser.FindElement(By.Id("ctl00_SampleContent_DropDownList1")); var l = new SelectElement(sl); l.SelectByText("Acura"); w.Until(ExpectedConditions.ElementExists(By.XPath("id('ctl00_SampleContent_DropDownList2')/option[text()='Integra']"))); sl = browser.FindElement(By.Id("ctl00_SampleContent_DropDownList2")); l = new SelectElement(sl); l.SelectByText("Integra"); w.Until(ExpectedConditions.ElementExists(By.XPath("id('ctl00_SampleContent_DropDownList3')/option[text()='Sea Green']"))); sl = browser.FindElement(By.Id("ctl00_SampleContent_DropDownList3")); l = new SelectElement(sl); l.SelectByText("Sea Green"); w.Until(ExpectedConditions.ElementExists(By.XPath("//span[@id='ctl00_SampleContent_Label1' and text()='You have chosen a Sea Green Acura Integra. Nice car!']"))); browser.Quit(); } Setup
  2. [Test] public void one_method_to_rule_them_all() { var profile = new FirefoxProfile();

    var exe = new FirefoxBinary(@"D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); IWebDriver browser = new FirefoxDriver(exe, profile); WebDriverWait w = new WebDriverWait(browser,TimeSpan.FromSeconds(10)); browser.Navigate().GoToUrl("http://localhost/AJAXDemos/CascadingDropDown/CascadingDropDown.aspx"); //browser.Navigate().GoToUrl("http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx"); w.Until(ExpectedConditions.ElementExists(By.XPath("id('ctl00_SampleContent_DropDownList1')/option[text()='Acura']"))); var sl =browser.FindElement(By.Id("ctl00_SampleContent_DropDownList1")); var l = new SelectElement(sl); l.SelectByText("Acura"); w.Until(ExpectedConditions.ElementExists(By.XPath("id('ctl00_SampleContent_DropDownList2')/option[text()='Integra']"))); sl = browser.FindElement(By.Id("ctl00_SampleContent_DropDownList2")); l = new SelectElement(sl); l.SelectByText("Integra"); w.Until(ExpectedConditions.ElementExists(By.XPath("id('ctl00_SampleContent_DropDownList3')/option[text()='Sea Green']"))); sl = browser.FindElement(By.Id("ctl00_SampleContent_DropDownList3")); l = new SelectElement(sl); l.SelectByText("Sea Green"); w.Until(ExpectedConditions.ElementExists(By.XPath("//span[@id='ctl00_SampleContent_Label1' and text()='You have chosen a Sea Green Acura Integra. Nice car!']"))); browser.Quit(); } Commented Out Code!
  3. [Test] public void one_method_to_rule_them_all() { var profile = new FirefoxProfile();

    var exe = new FirefoxBinary(@"D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); IWebDriver browser = new FirefoxDriver(exe, profile); WebDriverWait w = new WebDriverWait(browser,TimeSpan.FromSeconds(10)); browser.Navigate().GoToUrl("http://localhost/AJAXDemos/CascadingDropDown/CascadingDropDown.aspx"); //browser.Navigate().GoToUrl("http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx"); w.Until(ExpectedConditions.ElementExists(By.XPath("id('ctl00_SampleContent_DropDownList1')/option[text()='Acura']"))); var sl =browser.FindElement(By.Id("ctl00_SampleContent_DropDownList1")); var l = new SelectElement(sl); l.SelectByText("Acura"); w.Until(ExpectedConditions.ElementExists(By.XPath("id('ctl00_SampleContent_DropDownList2')/option[text()='Integra']"))); sl = browser.FindElement(By.Id("ctl00_SampleContent_DropDownList2")); l = new SelectElement(sl); l.SelectByText("Integra"); w.Until(ExpectedConditions.ElementExists(By.XPath("id('ctl00_SampleContent_DropDownList3')/option[text()='Sea Green']"))); sl = browser.FindElement(By.Id("ctl00_SampleContent_DropDownList3")); l = new SelectElement(sl); l.SelectByText("Sea Green"); w.Until(ExpectedConditions.ElementExists(By.XPath("//span[@id='ctl00_SampleContent_Label1' and text()='You have chosen a Sea Green Acura Integra. Nice car!']"))); browser.Quit(); } Duplication
  4. [Test] public void one_method_to_rule_them_all() { var profile = new FirefoxProfile();

    var exe = new FirefoxBinary(@"D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); IWebDriver browser = new FirefoxDriver(exe, profile); WebDriverWait w = new WebDriverWait(browser,TimeSpan.FromSeconds(10)); browser.Navigate().GoToUrl("http://localhost/AJAXDemos/CascadingDropDown/CascadingDropDown.aspx"); //browser.Navigate().GoToUrl("http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx"); w.Until(ExpectedConditions.ElementExists(By.XPath("id('ctl00_SampleContent_DropDownList1')/option[text()='Acura']"))); var sl =browser.FindElement(By.Id("ctl00_SampleContent_DropDownList1")); var l = new SelectElement(sl); l.SelectByText("Acura"); w.Until(ExpectedConditions.ElementExists(By.XPath("id('ctl00_SampleContent_DropDownList2')/option[text()='Integra']"))); sl = browser.FindElement(By.Id("ctl00_SampleContent_DropDownList2")); l = new SelectElement(sl); l.SelectByText("Integra"); w.Until(ExpectedConditions.ElementExists(By.XPath("id('ctl00_SampleContent_DropDownList3')/option[text()='Sea Green']"))); sl = browser.FindElement(By.Id("ctl00_SampleContent_DropDownList3")); l = new SelectElement(sl); l.SelectByText("Sea Green"); w.Until(ExpectedConditions.ElementExists(By.XPath("//span[@id='ctl00_SampleContent_Label1' and text()='You have chosen a Sea Green Acura Integra. Nice car!']"))); browser.Quit(); } Can you read this? No? Didn’t think so.
  5. 40 hours, 5 rate == 200 41 hours, 5 rate

    == 207.5 DONE! Dev Tester What about zero? Fine. 40 hours, 5 rate == 200 41 hours, 5 rate == 207.5 0 hours, 5 rate == 0 1 hour, 0 rate == 0 What about negatives? Whatever. 40 hours, 5 rate == 200 41 hours, 5 rate == 207.5 0 hours, 5 rate == 0 1 hour, 0 rate == 0 -1 hour, 1 rate == Exception 1 hour, -1 rate == Exception What about changing rates during period?