SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar


Published on

Learn best practices for leveraging modern technologies to develop, test and deliver maintainable, quality code. You will learn the advantages of testing software early and frequently, best practices to leverage modern technologies for test automation and CI, how to avoid shipping bad code, and how to create maintainable code while keeping it “non-legacy”. You will also learn the how and why of creating a robust developer feedback mechanism for sustained success.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Importance of delivering working code/features + frequent product updates
  • Agile
    CI / CD
    Automated Testing
    Pipeline. Leverage automated testing
    First approach (nightlys and changes on master)
    Second approach (PR Build and Testing in isolation
    Role of QA Changing
  • Huggins (2004), Hammant,
    Webdriver is making its way into W3 spec

  • Show how to leverage AT in pipeilne

    First example will be of a common paradigm that is problem
    Then show solution and how it solves problem, and allows DDQCF
  • Show path for src code only -> CC
    Path for show src code + UT -> No func test
    Show when complete / done

    Enforcement mechansim for all types of code (src, test, build, etc.)
  • SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar

    1. 1. Developing and Delivering Quality Code, Frequently Neil Manvar Solutions Architect, Sauce Labs
    2. 2. AGENDA
    3. 3. Agile In • Small Iterative Changes • Rapid response to change • Agile = Automation • Focus on business logic
    4. 4. Continuous Integration • “merging all developer working copies with a shared mainline…” • CI Tools • Pipelines
    5. 5. CD • Continuous Delivery • Continuous Deployment • Code is like “inventory”
    6. 6. Automated Testing
    7. 7. Selenium WebDriver • Controls browser • Open source • Language-specific bindings • Grid
    8. 8. Appium – Functional/UI Testing for Mobile Applications
    9. 9. Pipeline
    10. 10. Running Nightlys or when master changes 11 QA Build (UT and Func Tests) PR / Commit(s) PR / Commit(s)
    11. 11. Problems - Running when master changes • Rollbacks • Debug build • Need to pinpoint offending commit • Late developer feedback • “Act and React” • Blocked Pipeline 12
    12. 12. Role of QA • Fix and debug build - “Act and React” • Write automated tests for new features and existing functionality • Manual testing • Certifying and signing off on build 13
    13. 13. Testing in Isolation – Pull Request Build 14 PR Build (UT and Func Tests) QA Build (UT and Func Tests) PR PR PR Build Kick of build against branch Safe to merge? Only review and merge if masked as safe
    14. 14. Benefits of PR Build • Developer feedback + enforcement mechanism • Clean and deployable master • Enable Continuous Delivery -> Leverage Agile • Leverage Agile • New features and bug fixes released regularly, with quality and confidence 15
    15. 15. CD Pipeline 16 PR Build (UT and Func Tests) QA Build PR PR PR Build Staging Prod Kick off build against PR branch Safe to review / merge? Merge if A/C satisfied
    16. 16. Role of QA (after) • QA playing “enablement” role - Focused on scaling testing and improving quality • Developers developing (both source and test code) • Focus on improving coverage (untested flows, browsers + devices) • Accountability – New standard of quality 17
    17. 17. Enforce, not police
    18. 18. Questions?