email: keith.dart@gmail.com
Key words.
Quality Assurance: | Write test plans, perform tests, use test tools, automate, script, report bugs, suggest improvements. White-box, black-box methods. Primary focus has been data communications technologies. |
Quality Assurance Automation: | Design and develop frameworks and toolkits for automated testing of software and hardware. Automate instrumentation using GPIB/IEEE-488, serial protocols, SNMP, HTTP/CGI, etc. |
Software Development: | Python, Javascript, C, shell scripting. Git, and Perforce SCM. Object-oriented design. |
Networking, LAN: | IEEE-802 family, hubs, switches, cabling, VLAN, Wifi. Routing, topologies, IPAM. |
Networking, WAN: | Frame relay, leased T1, T3, X.25, ISDN, ATM, VPN, PPP, IPsec, modems. |
Operating Systems: | UNIX, Linux, MacOS, iOS. |
Network Management: | SNMP management, reporting; CLI, SSH, Telnet, Expect, custom tools in Python. |
Network Security: | Intrusion detection (Snort), Vulnerability Assessment (Nessus), OS hardening, SQL injection. |
01/2018 to Present |
Q Analysts, LLC. |
QA Engineer at Q Analysts. Q Analysts is a company that specializes in outsourcing QA talent. I have been assigned to the following clients.
While there I performed the following tasks.
05/2017 to 01/2018 |
Tech Mahindra, Inc. |
Automation and Tools Engineer. Worked at outsourcing company, at Google, Inc. for the entire duration. I working in the Comms Group, developing test cases and tools for Android dialer.
05/2015 to 05/2017 |
Apple, Inc. |
Automation and Tools Engineer. Work within a Devops team in an organization called CoreOS. I develop testing strategies and test automation frameworks for iOS and MacOS devices.
09/2012 to 05/2015 |
Dartworks |
Principal Consultant. Formed sole proprietorship to provide QA and test automation services.
09/2012 to 04/2014
I designed and deployed a QA framework, wrote test tools and APIs, and implemented test cases. Primarily focused on KMIP protocol testing and crypto-key management product. Wrote a Python module to provide KMIP client functionality for automation scripts. Implemented a proprietary API for interfacing to the product for automation. Wrote database user interface to simplify lab data management. On-going regression testing, lab management (DHCP, DNS, etc.) and finding root-cause of bugs.
04/2014 to 08/2014
Working through Embedded Resource Group, I designed a new QA automation framework for the communcations subsystem for Android. Primary focus was WiFi connectivity and feature testing. Framework interfaced to Android via a Python implementation of ADB that I also wrote, and a modified Scripting Language for Android (SL4A) interface.
Automated interfacing to OpenWRT WiFi routers via JSON-RPC, and wrote custom JSON-RPC client module for Python.
09/2014 to 03/2015
Working through Oxford International at Apple's Core OS unit. Developed Arduino micro-controller interface to control small devices such as magnets, LEDs, and servo motors for the purpose of simulating real-life environmental inputs. The system also exposes the controller as a shared client-server service to test cases, written in Python.
02/2012 to 07/2012 |
InStart Labs |
Software Engineer in Test. Designed and built a complete, end-to-end, test lab for testing web-based service delivery. This includes automated HTTP client and server operations. Based on VMWare vSphere infrastructure and custom Linux controllers with shared storage and virtual LANs (VLANs).
Wrote low-level protocol test modules and test cases in Python. Wrote tools to make ad-hoc testing quicker and easier.
12/2010 to 02/2012 |
Oxford Global Resources |
Contract work to various clients.
Sr. Software Engineer in Test. Working on Kindle product at Lab126. Contractor from Oxford. Developing tests for over the air update testing.
Automation Consultant. Working on crypto-key management product at Thales e-Security. Wrote a Python API for configuring, controlling, and inspecting the device under test. Re-designed and implemented a new lab network utilizing virtualization technology (VMware vSphere and VLANs). Wrote many test cases for stress testing and testing DUT behaviour with various simulated WAN impairments. Automation controllers for various equipment like tape libraries (for stimulating crypto-key requests) and network simulators.
08/2010 to 11/2010 |
FireEye, Inc. |
Sr. Software QA Engineer. Developed fully automated appliance remanufacture tests. Developed fully automated forwarding latency test using Ixia product and TCL API. Designed and built network test bed with controllable network traffic sources comprised of background traffic and known malicious injection. This was done to test device forwarding latency under load and malware detection reporting.
11/2008 to 08/2010 |
HyTrust, Inc. |
QA Engineer. I designed and built a "corporate model datacenter", that is designed to model a real corporate datacenter using current best practices (e.g. redundant switches, failover paths, etc.) to identify issues involved with product deployments. Performed testing as required to file bugs and identify usability issues. Reviewed code, and make suggestions for improvements to the design and implementation.
12/2006 to 11/2008 |
Google |
Test Engineer. Performed test and QA of Android product. This is an open-source software stack for mobile phones. Also tested reference hardware. Responsibilities include the following.
In support of test and measurement I wrote a Python framework and tools for measuring power consumption and radio. The primary equipment used were Agilent products including a programmable power supply, N4010 test set, Fluke 45 multimeter, and 8960 communications test set. This was controlled via IEEE-488 bus and RS-232 interfaces, using 488.2/SCPI command set. The Python framework provides abstract interfaces to these and other instruments and measurements. Also wrote plotting and analysis software.
5/2006 to 12/2006 |
Google (through Adecco) |
Software QA Engineer (temp). Working at Google through a contract agency (Adecco). Primary developer of the Mobile group's test automation framework. This framework provides the following features:
This test automation framework is largely based on the Django web application framework and the Pycopia network application framework. The basic design is one used successfully at other companies. At Google it is known as Gtest.
3/2006 to 04/2006 |
NetZentry |
Senior QA Engineer. This company makes a network security product. The product detects and mitigates denial-of-service attacks. I was responsible for bug fix validation. Started an automation framework. Learning product internals when QA department was eliminated due to financial difficulties (failed to receive a round of funding). I was here only about six weeks.
10/2005 to 01/2006 |
Stratalight Communications |
Software Developer (Test Tool Developer). Implemented a new Manufacturing Test automation system. This was used to validate product before shipping. The system included the following features:
05/2005 to 9/2005 |
Securify, Inc. |
Software Quality Assurance Engineer.
Designed and built automation framework specifically for testing network
intrusion and vulnerabilities. The framework utilized remote method calls to
distribute simulated hosts for various roles, such as victims,
attackers, and defenders. A Snort
machine was used
as a reference. The device under test supports Snort
compatile
rule definitions and custom rules had to be created for negative testing, The
nessus
software was also used to verify IDS functionality. The
framework is capable of arbitrary TCP and UDP protocols and exploits.
02/2004 to 05/2005 |
NeoPath Networks, Inc. |
Software Quality Assurance Engineer. Write test plans, perform testing, and report bugs in the product. I designed and implemented an automated test framework. The framework included a testbed abstraction so that tests could be run with any available set of hardware, and test writers can implement test cases more abstractly. Designed a persistent object database schema and objects. Implemented a remote method invocation server for MS Windows and Linux for remote control of clients and servers. Wrote documentation on how to use the framework. This system was adopted by the company as the automation framework for QA and unit testing for engineers.
12/2002 to 10/2003 |
Ironport Systems, Inc. |
Test Tool Developer. Primary designer and author of test automation library and automated test cases. Most of the framework was written in the Python language. The framework provided a rich and consistent API for test automation. Solid Object Oriented design principles were used throughout resulting in a very modular, reusable, and maintainable code base. I implemented many test cases using this framework. Other members of the automation team also used the framework. Some notable contributions include the following.
3/2002 to 10/2002 |
Pivia, Inc. |
QA Engineer. Primary designer and author of test automation library. This was written in the Python language. Performed tests and automated regression testing of Pivia's Dynamic Web Cache product. Also contributed supporting utility programs for the product.
compilesDTDs to Python source form.
expectthat can control other processes. This works similar to the Expect language itself, but implemented as a pure Python module.
Reason for leaving was a 33% reduction in force, due to company's change of focus (original product was not selling).
9/1999 to 10/2001 |
Cosine Communications |
Senior QA Engineer. Initially, I worked in the Systems Management System (SMS) group. This group was responsible for the management software for the product, which was a carrier-grade IPsec-based VPN device. I designed an object-oriented automation framework for the SMS system using the provided CORBA interfaces. The implementation language was Python. This framework provided for easy system configuration and automated testing from Python scripts. The object model for this was later translated to Java by SMS developers for the next version of the SMS software.
5/1999 to 9/1999 |
Globix Corp. |
Senior Network Administrator. I joined this tier-1 Internet service provider, that was just starting a global expansion, in order to help them become a world-class ISP. Here I performed various duties, including interviewing and hiring additional operations staff, installing and configuring Cisco routers and switches, built the network operations center computing environment (Linux workstations and servers), performed technical consultation with prospective customers, and anything else required to grow the business. Due to management's change of strategy this position was short-lived. They decided to keep engineering staff at their headquarters in New York, rather than the regional offices, as originally planned. Since I worked in a regional office, and the job and compensation became less than originally discussed, I left after a few months.
7/1997 to 5/1999 |
Cisco Systems |
Devtest (QA) Engineer. Devise test procedures and write test plans for various Cisco products. Wrote scripts in Tcl and Python languages for automated functional and regression testing. Conduct performance testing using custom, in-house built, and commercial tools (such as Smartbits). Assisted junior engineers in doing the same. I worked with Voice over IP (VoIP) related gateways and gatekeepers most of this time. The primary focus was on testing authentication, authorization and accounting, using a customized RADIUS server and driver programs.
10/1995 to 7/1997 |
International Network Services |
Network Systems Engineer. International Network Services (INS) was a consulting company specializing in information technology. Generally, I would work with customers to design, build, deploy, and maintain data networks. While at INS I was deployed to several customer engagements, as follows:
Installed, debugged and administered Internet firewall and other Internet services. Set up internal (fake rooted) DNS system. Managed corporate token-ring LAN.
Second level support for MFS Datanet's managed frame relay and ATM network. Trained MFS employees in Cisco router troubleshooting. I wrote a custom training course for Cisco products tailored to MFS. I Resolved customer trouble tickets. Analyzed network data patterns, located problems, and effect solutions in their global frame-relay network. Acted as professional services consultant on behalf of MFS to MFS customers.
Assisted Cisco SE's in building new LAN infrastructure at a new site using Cisco VLAN technology. Wrote some simple VLAN test and verification tools using Tcl/Scotty scripting. Installed intranet services such as DNS, network management stations, etc. Reported some bugs to Cisco I found in their Ethernet switch products.
Initially brought into Cisco to form a tiger team
to liaison between
Cisco engineers and customer's engineers supporting a new Cisco product
(the AS5200).
Later, I worked with devtest group to analyze performance, and verify
functionality, of Cisco network access (NAS) products. In support of the
goal to create more real world
test scenarios for large-scale network
access products (specifically, the AccessPath), I designed and built a call
simulator. This system measured call-answer rate and data throughput rates.
It was comprised of a cluster of Linux PCs with multi-port serial
and ISDN daughter cards. It could provide up to 644 modem and ISDN dial-in
sessions (T3 capacity). This required devising methods of large scale
system control in order to precisely control timing, call mix, and traffic
flow during test runs. Most of the software was written Tcl, with some C
utilities and shell scripting.
After this, I joined Cisco as a full-time employee.
8/1995 to 10/1995 |
West Valley Engineering, |
Consultant. West Valley Engineering is a contracting brokerage company that places skilled technical workers at corporations needing specific skills. During this time I was assigned to Adobe Systems to install a remote access system using Ascend products. While here I also analyzed and made recommendations for improving their Ethernet LANs, and NFS performance. I helped monitor and support their LAN infrastructure while the primary IT group transitioned to their new San Jose site.
8/1994 to 8/1995 |
Airtouch Communications, |
Network Data Services Specialist . Part of Airtouch's CDPD Data Group. We were primarily responsible for building and maintaining Airtouch's new wireless data service network.
6/1992 to 8/1994 |
GTE Mobilnet, |
Information Systems Analyst. I planned and implemented the overall computing environment in the GTE Mobilnet Western region, in collaboration with three other analysts and the IM Manager. I also performed LAN administration, application integration and development, and troubleshooting. I managed UNIX, MS-DOS, MS-Windows and Macintosh operating systems and software.
Equipment Engineer. As part of the engineering department, I planned the layout and specified parts lists for GTE Mobilnet cellular base sites. Later, I was part of a team to change system infrastructure from Motorola to AT&T switches. I designed the floor plan, cable runs, power systems, and general support of the sites. I wrote the cut-over plan for several of the sites my team was responsible for. This operation required careful planning and coordination, and we succeeded without any major problems.
Designed a cellular phone call pattern analysis tool that graphed cell and sector utilization. This was comprised of MS Excel macros and Oracle middleware, running on MS Windows. It could report call traffic intensity and trunking capacity, reported in Erlang or CCS per site, sector, or channel.
9/1991 to sometime | Various courses at UC Santa Cruz Extension and UC Berkeley Extension in network engineering and software engineering. These are taken on a continuing basis to enhance my knowledge and skills in the telecommunications, software engineering, and data networking fields. |
9/1988 to 9/1991 | De Anza Junior College, Cupertino, CA. Courses in electronics, chemistry, and math. |
Various corporate training in quality assurance, Cisco products, general data networking, cellular voice systems, and telephony.
US Navy for six years. Various training in basic electronics, radio direction finding systems, satellite communications, photography.
I am the primary author of the following open-source projects.