Founder's Resume / Portfolio

John Eric Arterberry


Personal Contact Information

arterberry@pledgerunner.org
LinkedIN / GitHub / Pledgerunner Blog / Automated Testing Blog



Objective

A quality focused Software Engineer in Test, with established experience in test automation development, agile methodology, team leadership, and entrepreneurial drive - is ready to continue professional growth as a value-added employee for a promising opportunity.

Qualifications
  • Over 10+ years of automated, functional, integration, and performance test experience.
  • Nine valued years of writing Java based Selenium/Webdriver/JUnit/TestNG frameworks.
  • Seven active years of performance test execution, monitoring and analysis.
  • Four years as motivating team lead, encouraging technical growth and shared expertise.
  • Adaptive to professional challenges and evolving business changes.
  • Diverse knowledge in exploratory testing, xUnit tools and agile project cycles.
  • Strong communication and continuous feedback to team and management.
  • Commitment to proficiency in documenting test strategies, project scope and use cases.
  • Developed a commercial web platform and businesses.
  • Career Profile

    Industries and Professional Exposure

    IoT, Mobile and smart devices, OAuth, SaaS, PaaS and cloud platforms. Distributed Web Services and API, B2B, B2C, financial and retail client services.


    Test Methodology

    Proponent of agile and scrum focused product delivery - from concept to E2E tests. Mission driven to support business and customer priorities. Team-ready for short and iterative project test cycles. Valuable white-box, gray-box and black-box test skills. Valued automation script experience for functional, load, integrated, behavior-driven and UI testing. Authored test harnesses for white and grey box projects. Rigorous specification analysis and defect reporting.


    Test Platforms / Tools

    Selenium 2.x WebDriver & Grid based Java Frameworks, PHPUnit, JUnit, Appium, JMeter, Maven, Git, Mercurial, SVN, SoapScope, cURL, SoapUI, Jira, Confluence, Quality Center, Firebug


    Test Development

    Java, PHP, CSS/XPath, JavaScript, XML, JSON, HTML5, VB.

    Professional Experience

    Independent Engineer – 7/2014 to present

    Founder, developer and test engineer for Pledgerunner.org, a crowdfunding startup that leverages wearable technology to support charitable needs. Development included various third party API integrations from several smart devices (wearables), IoT and smartphone fitness applications. The product core was engineered with a PHP MVC - Zend Framework 1.12 - HTML5, CSS3, Javascript and OAuth 2.0. Integration testing of controller classes and methods was built with PHPUnit, and functional sanity tests were built with an action-driven, Java based test framework (view on GitHub)

    Development included implementation of a rest service from data model to support Android hybrid app of Pledgerunner. Early version of Android hybrid app was developed with Ionic / AngularJS. Used Appium to create sanity test against UI.

    Environments: OS X, Linux, MySQL, Firebug, Git.
    Technology: Zend Framework, OAuth 1/2, Java, PHP 5.6, PHPUnit, Java, JUnit, Selenium Webdriver, Ionic for mobile, Appium, REST/cURL, AngularJS, HTML5, CSS3/Bootstrap 3.x, Javascript, JSON, SQL, Google Charts, Flot.js.
    Code Samples:

    Java / Automated Test Framework
    A test framework was built to aid in functional testing and sanity checks after each build. Available to fork on GitHub.

    Selenium Webdriver



    UI/JS - Custom Slider / Landing page
    Leverages Bootstrap 3 with a timer to 'slide' through images and text, and handle interaction with a timer reset.

    Pledgerunner - custom slider on landing page


    																	
    	
    	// AUTOMATED TAB_RUNNER																
    	var incr = 0;
    	var tabRunner = function() {
    	
    		// CLEAR ALL ACTIVE TAB PANES AND INTERACTIVE BUTTONS
    		$('.tab-pane').removeClass('active');
    		$('.pr-tab-circle-base').removeClass('set');
    		
    		// CHECK FOR LAST TAB PANE			
    		if(incr == 3) {
    			incr = 0;
    		}			
    		
    		// HIDE OLD TAB PANE	
    		$('#set'+ incr).removeClass('active');
    		$('#circ'+ incr).removeClass('set');
    		
    		// DISPLAY NEW TAB PANE
    		incr++;
    		if(incr <= 3) {				
    			$('#set'+ incr).addClass('active');
    			$('#circ'+ incr).addClass('set');
    			$('#set'+ incr).tab('show');
    		}
    
    	};
    
    	// SET TIMER TO CYCLE THROUGH TAB PANES
    	var tabCycle = setInterval(tabRunner, 7800);
    	
    	// CUSTOMER INTERACTION WITH TAB PANES
    	$('.setTabr').on('click', function (e) {
    	
    		// CAPTURE ANY EXCEPTIONS | ERRORS
    		e.preventDefault();
    		
    		// STOP THE TABCYCLE TIMER
    		clearInterval(tabCycle);
    
    		// CLEAR ALL ACTIVE TAB PANES	
    		for(var x=1;x <= 3; x++) { 	    
    			$('#set'+ x).removeClass('active');
    		}
    
    		// SHOW THE CLICKED TAB PANE
    		$(this).tab('show');
    
    		// RESTART THE CYCLE AFTER A SET NUMBER OF SECONDS
    		setTimeout(function () {
    		tabCycle = setInterval(tabRunner, 7800);
    
    		// RESET VARS WITH TIMER BUFFER
    		incr = 0;
    		}, 3500);
    		
    	});	
    																	
    																	

    PHP/UI - Custom Alert Message
    To mimic Toastr, a PHP utility class was created with a method to display custom messages and alerts on each page, through URL parameters. For example, the custom alert can be applied like so: http://pledgerunner.org/support/base?wall=B9cFe3QB8Mzz1&alert=on&type=success&msg=You%20completed%20your%20pledge%2E

    Pledgerunner - custom message alerts


     																		
    
    // PHP CLIP OF CUSTOM MESSAGE
    
        	if(!empty($alert_switch)) {
        		if($alert_switch == 'on') {
        			// activite
        			$this->view->pr_alert_switch = "visibility: visible; display: block;";
        			// message
        			$this->view->pr_alert_msg = preg_replace("/[^a-zA-Z0-9\s\p{P}]/", "", $alert_msg);
        	
        			if(($alert_type == "success") || ($alert_type =="danger") || ($alert_type =="warning") || ($alert_type =="primary")) {
        	
        				// green
        				if($alert_type == "success") {
        					$this->view->pr_alert_border_type = "pr-alert-card-success-border";
        					$this->view->pr_alert_type = "text-success";
        					$this->view->pr_alert_title_type = "Congrats!";
        				}
        	
        				// red
        				if($alert_type == "danger") {
        					$this->view->pr_alert_border_type = "pr-alert-card-danger-border";
        					$this->view->pr_alert_type = "text-danger";
        					$this->view->pr_alert_title_type = "Error!";
        				}
        	
        				// orange
        				if($alert_type == "warning") {
        					$this->view->pr_alert_border_type = "pr-alert-card-warning-border";
        					$this->view->pr_alert_type = "text-warning";
        					$this->view->pr_alert_title_type = "Update!";
        				}
        	
        				// primary
        				if($alert_type == "primary") {
        					$this->view->pr_alert_border_type = "pr-alert-card-primary-border";
        					$this->view->pr_alert_type = "text-primary";
        					$this->view->pr_alert_title_type = "News!";
        				}
        			} else {
        				// deactivate
        				$this->view->pr_alert_switch = "visibility: hidden; display: none;";
        			}
        		} else {
        			// deactivate
        			$this->view->pr_alert_switch = "visibility: hidden; display: none;";
        		}
        	} else {
        		// deactivate
        		$this->view->pr_alert_switch = "visibility: hidden; display: none;";
        	}  																	
    																																	
    																	
    																	
     																		
    																	
    
    
    	<!-- HTML IMPLEMENTATION OF THE CUSTOM MESSAGE BAY -->
    	<div class="row">
    		<div class="col-lg-12">
    			<div id="pr-alert-card" class="card style-default-dark " style="visibility: hidden; display: none;">
    				<div class="card-body">
    					<a class="pull-right btn btn-icon-toggle" data-toggle="tooltip" data-placement="top" data-original-title="Close Alert"><i class="md md-close"></i></a>
    					<span id="pr-alert-head" class=" text-lg text-light"><strong></strong></span>										
    					<span id="pr-alert-msg" class="text-default-light text-lg text-light"><span class="pr-data-divide"></span></span>										
    				</div>
    			</div>
    		</div>
    	</div>	
    
    
    																	
    																	

    HTML/Inline CSS - Charts
    Leveraging Knob.js, a custom use of an image (Material Fonts) was added to improve UX design of the Pledgerunner dashboard.

    Pledgerunner - chart


     																		
    																	
    
    <!-- TOTAL CALORIES SNAPSHOT -->
    <div class="col-lg-4 col-md-4 col-sm-4 col-xs-9 pr-center-card">
    	<div class="card-body height-9">
    		<div class="text-center height-4">
    			<div class="knob knob-danger knob-default-track size-4">
    				<h1 class="pull-right text-xxxxl text-danger opacity-75" style="z-index: 2; position: absolute; padding-left: 41px; padding-top: 15px;"><i class="md md-whatshot"></i></h1>														
    				<input type="text" class="dial pr-knob" data-min="0" data-max="" data-thickness=.1 value="" data-readOnly=true>
    			</div>
    		</div>											
    		<div class="text-center" style="margin-top: 9px;">													
    			<span class="text-xxl pr-font-thin pr-count-header text-danger"></span>												
    			<br>
    			<span class="text-md text-light text-default"># Of Calories</span><br/>
    			<span class="pr-text-lead text-default">Total Calories Burned<br></span>
    		</div>																									
    	</div><!--end .card-body -->
    </div><!--end .col -->
    <!-- END CALORIES SNAPSHOT -->	
    
    
    																	
    																	

    Software Engineer in Test – 2/2012 to 7/2014

    One of three new hires brought in to establish the automation test framework team to support quality for the Demandforce business group at Intuit. Development required an automated test stack that supported continuous integration. Core of our framework included Java, Selenium Webdriver 2.0, JUnit, Maven, Log4J, and Jira integration for scrum reporting. Features included Xpath based UI maps to support front-end and headless test requirements. Additional responsibilities included support of integration test framework which operated and tested methods at the controller and model layer. Platform was built on AWS for independent test bed distribution to team members. Early code repository required Git, later migrated to Mercurial. Participated in daily scrum with review of test executions and blockers.

    Environment: OS X, Linux, MySQL
    Technology: Automatation, integration, regression, and white box testing, Selenium Webdriver, JUnit, Jira, Confluence, Bamboo, Jeeves, Git, Mercurial.

    Sr. Automation Engineer – 2/2011 to 2/2012

    Architect of test framework for managing tests for multiple platforms and browser configurations, using Selenium Grid, Java, and JUnit. A subset of Selenium/JUnit cases were accessible (via Subversion) for developers to include as part of their UI and unit test validation. Team Lead responsibilities included Jira and offshore project coordination with India and China QA team members, with performance and scalability test strategies and daily scrum participation. Performance test efforts were built with JMeter and web services testing with SoapUI.

    Environment: Windows 7, 2008 Server, Mac OS 10, Linux, MySQL.
    Technology: Functional, performance, regression, web services testing, Selenium, JMeter, GreenHopper, Jira, Confluence, Bamboo, Tomcat, SoapUI, Jira, Confluence, Subversion.

    Senior QA Engineer, 2008 – 12/2009, Fulltime

    Constructed Java test automation framework with Selenium RC, to support data warehouse management application, for both mobile and SaaS platforms. Additional automation support included TestComplete for consolidated management of performance and web services testing needs. QA efforts included test case and strategy planning. Support of web services/SOAP. As Senior, engagements included scrum and defect resolution with customer service team. Strongly admired for applying a defined rigor and delivering best practices to QA team.

    Environment: Windows Vista, 2007, XP, Linux, J2EE, Oracle.
    Technology: Functional, regression white box, and web services testing, Selenium, TestComplete, Java, Tomcat, C#, VB, SoapScope, Jira, Confluence. CVS, Subversion.

    Senior QA Analyst, 2004 – 2008, Fulltime

    Performance, black box and data validation testing, including Sarbanes-Oxley compliance testing. Promoted to Lead Test Coordination role to manage four person performance test team. As lead for two years, integrated profile and benchmark transaction tests with LoadRunner and JUnitPerf that mirrored user transactions. Team management required test plans, schedule coordination of resources, and defect reports.

    Environment: Windows 2000, VBA (Excel), Solaris 9, Toad, Oracle 9i, Citrix.
    Technology: Performance testing, profiling tests, Java, JUnit, Quality Center, LoadRunner.

    Senior QA Analyst Contractor, 2003 – 2004, Contract

    Complete white box testing project. Middle-tier Java service tester for FDR-to-TSYS merger/conversion project. Developed Java based integrated test cases that executed JSP methods. Simple pass or fail results were compiled in XML and delivered to a custom web dashboard.

    Environment: Windows 2000, MQ Series, WebLogic, Windows NT, AIX, Solaris 9
    Technology: Visual C++, Toad, Oracle 9i, TSYS, FDR, J2EE, XML, Custom Test Harness, CygWin, Solstice, LoadRunner, Test Director, white box testing only, performance, functional, integration, acceptance, & regression.

    Senior Quality Management Consultant, 2000 – 2003, Fulltime

    Under Spherion, all efforts were contracted to various companies, such as Virtual Alert, Inc., Convera, Corp., NextCard, Inc., Gap, Inc., and Fireman's Fund, Inc.

    Contract: Virtual Alert, Inc.
    Developed End-to-End performance test scenarios for SharePoint/Active Directory portal application. Populated Active Directory LDAP via WSH/VB, interfacing with LDIFDE. Functional tests were conducted by manual and WinRunner scripts to validate regression, per build.

    Contract: Gap, Inc.
    Created performance test plans for various intranet based applications. Load testing was applied on several multi-platform applications. High volume stress testing was applied on multi-processor servers and mainframes.

    Education and Certifications
  • (Continuing) BS, Information Technology - University of Phoenix
  • San Francisco State University, Electrical Engineering (transferred)
  • Certified Tester, Foundation Level, ASTQB
  • LoadRunner 6.5 Training Certificate, Mercury
  • TestSuite 7.0 Training Certificate, Mercury
  • Project Management and Leadership Training Certificate, SkillSoft
  • Community Responsibility and Philanthropy
  • Founded Pledgerunner to help charities leverage IoT technology for fundraising.
  • At SmartTurn - coordinated a company donation, to provide food for families in need.
  • At PG&E - participated with community outreach programs that included park cleaning, elderly assistance and special events for disabled children.
  • Interests
  • Building technology to help those in need and who are less fortunate.
  • Participating in the technological growth of IoT, M2M and smart devices.
  • Development of uniquely integrated speech interfaces.