Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ReVoman | A Template-Driven API automation tool for JVM

ReVoman | A Template-Driven API automation tool for JVM

- The majority of JVM SaaS applications are REST-based and [API-first](https://www.postman.com/api-first/).
- But to write [API automation](https://www.postman.com/api-platform/api-test-automation/), we either have low-level tools like[REST Assured](https://rest-assured.io/) which are specific to a service or domain and are rigid to reuse, extend and difficult to maintain. Or tools like Postman which don't live with the code and need altogether a different skill set to write and maintain.
- Reimagine API automation with a tool that strikes a balance between flexibility and ease of use, by letting you plug postman collections into your JVM programs/tests
- ReVoman is an Open-source template-driven API automation tool for JVM (Java/Kotlin) from the API-first SaaS company Salesforce.
- A traditional Integration test when migrated to use ReVoman has 89% low-code, more transparent and has low Cognitively complexity

Resources
---------

- Repo with Documentation: [sfdc.co/revoman](https://sfdc.co/revoman)

Gopal S Akshintala

October 22, 2023
Tweet

More Decks by Gopal S Akshintala

Other Decks in Programming

Transcript

  1. Get Started With a Multi-line Title A Template-Driven API automation

    tool for JVM Gopal S Akshintala | Lead MTS ReṼoman 🦹 (Rev-Woman)
  2. Lead Jr. Dev Code walk- through But what’s that shadowy

    place over there That’s Automation Wild West Tests @GopalAkshintala
  3. May have relatively less emphasis on Test design Specific to

    a Service or Domain Rigid to reuse, extend & difficult to maintain May deviate from real end-user interaction Wild West Tests @GopalAkshintala
  4. Universal API Automation tool? Balance between strictness and flexibility Low

    Code and Low Cognitive Complexity Augment manual Persona testing @GopalAkshintala
  5. API protocol support Ecosystem fitment Programming language Dev Experience Configurability

    CI/CD Integrable Reporting Detailing and Transparency Ease of Assertion Version Control UI Modularity Maintainability Extensibility @GopalAkshintala UX
  6. Kick.configure() .templatePaths(List.of(" ... ", " ... ")) .hooks( pre( ...

    ), post( ... )) .customAdaptersForMarshalling() .typesToIgnoreForMarshalling() .environmentPaths(Set.of(" ... ", " ... ")) .dynamicEnvironment(Map.of(" ... ", " ... ")) .customDynamicVariables() .haltOnAnyFailure() /* OR */ .haltOnFailureOfTypeExcept() .skipSteps() .runOnlyStep() .off()); // Kick-off .requestConfig(unmarshallRequest())) .hooks( pre( ... ), post( ... )) .responseConfig( unmarshallSuccessResponse( ... ), validateIfSuccess( ... ), validateIfFailed( ... )) @GopalAkshintala
  7. Custom JSON <—> POJO marshalling/ serialization and unmarshalling/ deserialization through

    Moshi adapters No need to add extra Annotations on POJO Ignore legacy types from marshalling JSON <—> POJO Type Safety @GopalAkshintala
  8. Tax {} Persist Quote Price Tax Place Quote 📜 🏷

    💲 (Async) (Async) @GopalAkshintala
  9. Rundown( stepReports: List<StepReport>, mutableEnv: PostmanEnvironment<Any?>) StepReport( step: Step, requestInfo: Either<RequestFailure,

    TxInfo<Request > > ?, preHookFailure: PreHookFailure?, responseInfo: Either<ResponseFailure, TxInfo<Response >> ?, postHookFailure: PostHookFailure?, pmEnvSnapshot: PostmanEnvironment<Any?>) Rundown @GopalAkshintala
  10. API protocol support Ecosystem fitment Programming language Dev Experience Configurability

    CI/CD Integrable Reporting Detailing and Transparency Ease of Assertion Version Control UI Modularity Maintainability Extensibility Checklist ✅ ReVoman @GopalAkshintala
  11. Postman Templates hooked to automation, always stay up-to-date Find a

    template for every feature right in your VCS, very handy for Q3 during Release Blitz More Perks 🙌 @GopalAkshintala
  12. API metrics and Analytics In-built Polling for Async steps Payload

    generation Support other popular template formats Flow control using YAML config The Future 🔮 ReVoman (Rev-Woman) @GopalAkshintala