Automated Functional Testing

Our approach to functional testing has been carefully engineered to incorporate industry best practices and focuses on providing testing services that add measurable value to IT service delivery.  Our holistic solution encompasses the people, processes, and tools needed to ensure successful delivery of testing services.  It applies Agile/DevOps methods in a practical way to achieve speed and agility while improving outcomes.  And it incorporates rigorous analyses of user story requirements, end user scenarios, and expected values in testing, as well as analysis of testing metrics as part of our “QA of QA” management approach.

Our technical approach to testing emphasizes thoughtful automation to improve testing speed, efficiency, and thoroughness for both Waterfall and Agile software delivery.  Our automation capability has empowered and accelerated our successful drive to “Automate First!” at USPTO and USCIS.  Automation excellence begins with our people.  Our testers have the software development skills and experience needed to write effective and maintainable automation scripts, and we provide ongoing training and mentoring to hone their skills.  Next, we provide our people with effective processes.  We employ contemporary Agile methods for test script development to achieve high productivity and integrate tests into the continuous delivery pipeline for efficiency.  Our test automation process parallels the system development lifecycle, and includes all activities and deliverables needed to ensure a disciplined, responsive approach to functional testing.

  • Plan.  We plan each test engagement, coordinating with the test manager and project team to determine the scope and detail of system changes and create the master test plan.  In the plan, we identify the overall testing scope, requirements for the test environment, cross-AIS components, specific types of testing to be performed, manual/automated test approach, release schedule, toolset, resources, test data needs, entry/exit strategies, suspend/resume criteria, and defect management process.
  • Prepare.  We prepare the test environment, test tools, and test data management.  This includes allocating VMs, installing/configuring tools, and defining domain objects for test data generation.
  • Execute. We execute the test scripts, record system responses (and time), compare actual vs. expected results, record pass/fail by step, document defects in the defect/life cycle tracking system, note test observations, and record activities as appropriate.  Most test are executed automatically by Jenkins jobs in the deployment pipeline, with defects logged automatically as well.
  • Analyze and Report.  As part of our “QA of QA” approach, we analyze quality and productivity metrics for the engagement and prepare a final project report as required.
  • Closeout and Improve.  We close testing engagements by loading test deliverables including documentation, test scripts, analysis, test reports, test plans and test data into the enterprise CM repository.  We also update lessons learned and workarounds in a shared folder for knowledge sharing with all team members.