Software Testing

Intro

This page is really old and I need to update. There was a time when only the development tools were being updated and the testing tools (and frameworks) were an afterthought. With the explosion of test automation and emphasis on producing quality software for digital business's reliability and availability, there is now a parallel advancement of development tools/frameworks AND test tools/frameworks.

Today's Software Tools & Framework for Testing

This is a quick list of test tools and frameworks that I am currently aware of.

ToDo

  1. Research on 2019 test tool; which is best tool to use in 2019?
    1. Cypress.io
      1. If you skip the binary installation, then skip the following:
        1. https://docs.cypress.io/guides/getting-started/writing-your-first-test.html#Add-a-test-file
      2. https://docs.cypress.io/guides/core-concepts/introduction-to-cypress.html#Cypress-Is-Simple
      3. https://docs.cypress.io/examples/examples/tutorials.html#Best-Practices
        1. https://www.youtube.com/watch?v=5XQOK0v_YRE
      4. https://www.youtube.com/watch?v=l_Q7cbmYjDY (Execute Automation)
    2. Selenium
    3. Protractor
      1. repo/tree/branch-name/ui/src/main/javascript
        1. See README.md file
    4. https://dzone.com/articles/top-5-java-test-frameworks-for-automation-in-2019
  2. Test Automation Guide
    1. Add "Page Object Model (POM)" Design Pattern
      1. https://www.softwaretestingmaterial.com/page-object-model/
      2. https://www.guru99.com/page-object-model-pom-page-factory-in-selenium-ultimate-guide.html
    2. Add "Best Coding Practices"
      1. https://saucelabs.com/blog/patterns-and-coding-practices-for-stable-end-to-end-gui-tests
    3. Add examples
  3. Update based on
    1.  https://www.softwaretestingmaterial.com/page-object-model/ for work project
      1. https://www.geeksforgeeks.org/static-class-in-java/
    2. https://www.guru99.com/page-object-model-pom-page-factory-in-selenium-ultimate-guide.html
      1. Learn the Page Factory concept and its lazy loading using AjaxElementLocatorFactory
        1. Is this useful?
    3. UserAgreement page object should have all the WebElements and functions for the page; not a PageUtility. I don't want a page to have to wait for access to the Utility in order to continue being tested. If I have 3 users on their own UserAgreement and the all click Accept, 2 of the users have to wait to use the isAccepted() utility method because they don't have their own isAccepted page method.
    4. Utilities should be for all pages, and not page specific.
      1. Can make a PageBase which is extended by multiple Pages
      2. Can make a PageUtility for PageBase 
      3. Do I need any other kind of Utility?
    5. https://www.youtube.com/watch?v=fUSl-WhqymU
    6. YouTube "Page Object Model" "Page Object Selenium"
    7. https://github.com/SeleniumHQ/selenium/wiki/PageFactory
  4. Test Automation Design @ https://saucelabs.com/blog/patterns-and-coding-practices-for-stable-end-to-end-gui-tests
  5. Selenium + Maven @ https://www.coveros.com/running-selenium-tests-with-maven/
  6. Move everything from my Software Testing Google Doc into this Page. This makes for easier info mgmt.
  7. https://medium.freecodecamp.org/how-to-dockerize-your-end-to-end-acceptance-tests-dbb593acb8e0  (Dockerizing end-to-end testing)
  8. Talk about how the Page Object Pattern misses a key part of testing with the Driver. That is, instead of Page -> Test, have Browser <interface> FF/GC/IE -> Page -> Test, and also have Components extend off of Browser because some components are not related to a page, but to the webapp itself. Puppeteer has addressed this a little bit with the ability to test Chrome Extensions.
  9. Does Page Object Model design work in other Test Automation Tools?
  10. Buy this or no?
    1. https://www.guru99.com/selenium-tutorial-pdf.html

Google "co-locate selenium tests with app"
Google "end to end testing repo"
Google "where to save end to end tests"

Testing & QA

Why Test Automation?

https://smartbear.com/solutions/automated-testing/
https://www.guru99.com/automation-testing.html

Requirements & Documentation

The beginning of each test scenario or test case is a requirement. What is the system or software expected to do? What is the input or trigger? What is the output or event (reacting to the trigger)? What response time is expected?

Test Knowledge

https://martinfowler.com/articles/practical-test-pyramid.html
https://saucelabs.com/blog/patterns-and-coding-practices-for-stable-end-to-end-gui-tests

Agile Testing book presents a clear quadrant for the major test areas of an application:

Test Snapshot

https://medium.freecodecamp.org/the-front-end-test-pyramid-rethink-your-testing-3b343c2bca51

Types of Testing

There are many types of testing. Instead of re-listing the different types, I'll point to webpages that already have this list. Be mindful that some of the definitions are slightly off from my understanding. Like, functional testing is based on user functional testing and not including system functionalities (because system functionalities would be categorized more precisely like system testing, system integration testing, unit testing, etc.).

Test Automation

has test step, test object, test action, and test data

End-to-End (E2E) Frameworks

These test automation frameworks have tools for cross-browser testing. Some including mobile app testing.
Behavior-Driven Development Test Framework
https://jbehave.org/
https://cucumber.io/
http://www.thucydides.info/#  (Serenity)
https://www.softwaretestinghelp.com/cucumber-bdd-tool-selenium-tutorial-30/

Unit Frameworks

  • Karma (NodeJS) - Unit Test

Other Frameworks

GoogleTest
https://github.com/google/googletest/

Online Testing Platforms

https://www.getpostman.com/ (API Testing)
https://applitools.com/
https://testproject.io/
https://www.testim.io/
https://www.browserstack.com/
https://www.lambdatest.com/
https://www.gurock.com/

Blogs & Channels

Companies

Is there a difference between the Online Testing Platforms and these Companies? Or are the companies providing these platforms as well as testing services?


Company Test Team References

  1. https://developers.facebook.com/docs/apps/test-apps/
  2. https://developer.android.com/studio/test/
  3. https://developer.apple.com/testflight/

Universities & Online Education

https://testautomationu.applitools.com/

Further Thoughts

  • https://angiejones.tech/shared-repository-for-dev-and-automation-code/
    • https://techbeacon.com/app-dev-testing/6-reasons-co-locate-your-app-automation-code
  • https://medium.freecodecamp.org/why-end-to-end-testing-is-important-for-your-team-cb7eb0ec1504
  • https://medium.freecodecamp.org/the-front-end-test-pyramid-rethink-your-testing-3b343c2bca51
  • https://www.thoughtworks.com/insights/blog/guidelines-structuring-automated-tests
https://www.softwaretestinghelp.com/what-is-end-to-end-testing/
https://blog.testim.io/7-critical-tips-for-quality-code/
https://dzone.com/articles/top-5-java-test-frameworks-for-automation-in-2019

Era of Non-Selenium automation testing tools 2019

https://www.youtube.com/watch?v=EbENbe8mmGM&index=311&list=WL&t=0s


Top 15 Selenium Alternatives in 2019

dated: April 17, 2019
Source: https://www.guru99.com/selenium-alternatives.html

  1. TestCraft
  2. Mabl
  3. Squish (GUI Test Automation Tool)
  4. Cypress*
  5. Ranorex Studio
  6. TestLeft
  7. Functionize
  8. TestArchitect
  9. iMacros
  10. Cucumber
  11. Unified Functional Test (UFT)
  12. Serenity**
    1. uses Selenium
  13. IBM Rational Functional Tester
  14. Galen framework*
    1. uses Selenium
  15. SikuliX
  16. RedwoodHQ*  - watch overview
    1. uses Selenium
  17. Watir*
    1. uses Selenium
    2. open source Ruby library
  18. Telerik Test Studio
  19. Screenster
    1. cloud-based UI testing platform
  20. Katalon Studio
  21. Tricentis Tosca
  22. Cloud QA
    1. uses Selenium
  23. TestIM
    1. uses artificial intelligence

*open source
**selenium alternative that includes generating test reports

Testing vs Hacking

There are tons of people including self-taught students who making "hacking" through testing public software a fun, but profitable vocation.

One of the differences between being a Tester and a Hacker is that usually a Tester is an in-house hacker.

Nowadays (and near future), hacking will be the new type of "exploratory testing" or "real-user" testing. Whereas, most of the Tester roles will be filled by Software Developers specializing in creating test tools and methods to test products and/or services developed.

Why become a Tester when one can become an ethical Hacker?

The biggest reason is the guaranteed pay (i.e. salary) rather than by a reward system (payment per bug found and confirmed by company as a bug).

Why not do both, test and hack?

You actually can be a Tester and a Hacker. If you have the time, then here are some sites to further discover softwares for ethical hacking.


Creating Test Plan

https://qacomplete.com/resources/articles/how-to-implement-an-effective-test-planning-proces/

Testing Back in the Days (before 2006)

https://www.riceconsulting.com/home/index.php/Web-Testing/how-to-develop-test-cases-and-test-scripts-for-web-testing.html

https://youtu.be/T3q6QcCQZQg  (eureka software testing tutorial / feb 2019 / interesting to see so much old knowledge in this video)

The problem with these traditional methods of testing including the training of software testing is that it takes too long to even just start officially testing the software. Hence, why in Agile the conversations around testing are kept short and done instantly whether the code is implemented or not. A test script can be created with clear design direction stemming from the requirement(s) and clear design patterns / best programming practices to state whether the application fails or passes. A test script does NOT wait for the implemented code in order to test.

Other References

Learn



No comments:

Post a Comment