This is a summary of my experiences with the Python scripting language and test development/architecture experiences.
At IBM for Virtual I/O System Testing (2010-2011)
- Used Korn shell scripting on the AIX (Unix-like) systems.
- Interacted with lead VIOS architects to define and document a test plan based on user stories.
- Created a concurrent test framework using KSH to test virtual storage, based on RDBMS, as shared by multiple computer nodes.
- Coordinated work among 3 other test developers.
- Interacted with VIOS developers to explore additional issues I found in their source code, adding to the test repertoire, and advising of potential issues.
- My concurrency testing revealed a major design flaw which allowed management to rework a product release to a major client, preventing a $3M loss; architects were able to resolve the issue.
At IBM Flash Systems (2014-2017)
- Employed as a test developer to work with the RAID I/O systems using flash memory for storage.
- Python development using PyDev on Eclipse IDE.
- Developed various test modules for functional testing of:
- Linux System API calls to I/O services
- Fibre Channel interfaces to RAID flash systems
- Storage management commands
- Extensive use of numerous base and derived classes supporting the many levels of SCSI and system I/O (and dealt with numerous issues of MRO violations).
- Use a proprietary test framework for driving tests and reporting testing progress.
- Participated in Agile Scrums and Sprints for managing test development as product features became available.
At Seagate Technology (2017-2022)
Testing
- Employed as “test architect” (anything to do with testing since I was the only one doing testing) of software and hardware related to a Multiple Disk Writer (MDW) system which consisted of X86 single board computer, hardware boards, SCSI preamps, motors, disk write heads, chiller, and mechanical devices.
- Primarily Python used for test development using several versions of Python.
- Python 2.7 and 3.8 used in a Windows-based testing driver, with Python 2.5 and 3.8 used on the target embedded system running PharLap OS or embedded Linux.
- Test modules based on Python unittest were downloaded to target system by host, run on target, and target test runner uploaded results to host for further analysis and reporting.
- Test modules had to be usable under both Python versions 2.5 and 3.8 requiring adherence to 2.5 syntax.
- Unit and functional (more elaborate than unit) testing of target system hardware components, target system platform API, target system software behavior, complete system product.
- Performed periodic manual testing on the target product.
- Reported problems in JIRA tracking system with detailed descriptions and instructions for reproduction; also, used JIRA for Agile development tracking.
- Created release documentation for distribution to internal customers.
Python Experience
- At first, used PyDev under Eclipse IDE but transitioned to the better PyCharm IDE.
- Used pylint to eliminate static issues in all Python modules.
- Developed numerous test suite modules for the target system platform API (API between OS and its disk formatting applications).
- Created an elaborate Python-based testing framework to run on both Windows host and targeted system, using TCP/IP sockets for interoperation. The framework allows SW and test developers to control the target, aids test developers in creating and maintaining test modules, and provides the testing facility for automated regression testing performed by Bamboo or GitHub Action.
- I also developed other applications in Python:
- A wrapper app to configure the VsLint app for C++ static analysis (providing a simple command interface for developers and automated regression test to the otherwise complex VsLint configuration).
- An application that extracted run information from production testing of the target system, then feeding to the JMP numerical analysis app.
- A tool to extract the platform API documentation from the target system source files, then generate test module templates to assist me in developing final unittest modules.
- Numerous personal productivity tools to help me in source analysis, test development, etc.
At Cardinal Peak (2022-2023)
- Used PyCharm IDE for Python development.
- Developed an application to assist client to take inventory of their HDMI and DisplayPort devices (cameras and monitors). Primarily, this involved using a Unigraf HDMI/DP protocol test device to read EDID information from devices and report extensive information about each device.
- Prepared for use of the Unigraf protocol test device for testing of the clients targeted embedded system yet to be developed.
At Home
- Given a set of requirements of a function that returns numbers that are weighted with probability of occurrence, I documented and analyzed the requirements, developed a Python class and method to return such numbers, and developed a Python unittest-based test module to test the function. The ReadMe documentation and source files are found in a GitHub repository at https://github.com/syntheny/dartboard.
- Studying more Python capabilities and testing methods using the LinkedIn Learning facility.