Group Details Private

Global Moderators

Forum wide moderators

 
  • AMA: Iterative vs Incremental Development

    Mario asks: I have a question to ask your post on iterative vs. Incremental Software Development: Iterative vs Incremental Software Development In the incremental approach, the few features implemented in all of their requirements can be changed after user feedback? Or, does this only happen with the iterative approach? My response: Thanks for your question … Continue reading “AMA: Iterative vs Incremental Development”

    https://watirmelon.blog/2018/08/07/ama-iterative-vs-incremental-development/

    posted in Feed de Blogs e Posts
  • How to measure exploratory tests ?

    Hello guys, Many people that are not from the QA area doesn’t know how to measure or what are the advantages of doing exploratory tests, but it is a technique really powerful when used correctly. Its effectiveness depends on several intangibles: the skill of the tester, their intuition, their experience, and their ability to follow […]

    https://azevedorafaela.wordpress.com/2018/08/06/how-to-measure-exploratory-tests/

    posted in Feed de Blogs e Posts
  • Compendium of Practice Testing Apps version 1.2

    TLDR: github.com/eviltester/testingapp new version has more apps

    To help you practice your testing I have The Evil Tester’s Compendium of Testing Apps.
    One download - lots of apps to practice testing on.

    <a name=“more”></a>

    Version 1.2

    Version 1.2 of the Evil Tester’s Compendium of Testing Apps has…

    • an improved index page so the RestListicator and The Pulper are easier to access
    • The Pulper now has a nicer GUI and the ability to Create, Update and Delete entities
    • Some new test pages in the Selenium Page list (file upload, html5 components)

    You can download it from GitHub:
    https://github.com/eviltester/TestingApp/releases

    The Evil Tester’s Compendium of Testing Apps

    A compilation of apps to help you practice your testing and your automating.

    The compendium-of-test-apps-1-2-0.jar contains all the other apps - one download, one command, many tools and apps to test.

    java -jar compendium-of-test-apps-1-2-0.jar and the application should start on localhost:4567 for you to start testing.

    If you just want parts of the app to help you focus then:

    • seleniumtestpages-1-3-0.jar has the Selenium Test Pages for Automated Web GUI Execution practice
    • compendiumdevapps-1-1-0.jar has the JavaScript apps for Web Technical Exploratory Testing
    • thepulper-1-1-0.jar has The Pulper Pulp Book database GUI app for automating or web testing
    • rest-list-system-1-2-0.jar has an API for experimenting

    If you don’t want the applications starting on port 4567 then start the apps with the command line argument -port=4568 or whatever other port you want to run it on e.g.

    <pre style=“background-color: white; font-family: Menlo; font-size: 9pt;”>Compendium of Practice Testing Apps version 1.2</pre>

    java -jar thepulper-1-1-0.jar -port=4568

    Other Apps

    I also have other apps suitable for practicing testing:

    Watch it in Action in this free video

    Youtube Video

    posted in Feed de Blogs e Posts
  • Lançamento do projeto backstop-config

    Testes de comparação de screenshots simplificados O projeto backstop-config tem o propósito de simplificar a implementação de testes automatizados de comparação de screenshots, também conhecidos como testes de regressão visual, em websites estáticos com diversas URLs. A idéia deste post é demonstrar os passos necessários para você começar ainda hoje a criar testes automatizados para seus projetos pessoais … Continue lendo Lançamento do projeto backstop-config

    https://talkingabouttesting.com/2018/08/01/lancamento-do-projeto-backstop-config/

    posted in Feed de Blogs e Posts
  • EuroSTAR Webinar Series

    The Tester’s Experience of Using Test Automation Tools: is it problematic? And why?
    Date of Webinar: 17/09/2018 :: with Isabel Evans

    AI Will Soon Test Everything
    Date of Webinar: 18/09/2018 :: with Jason Arbon

    Talking about Talking about Testing
    Date of Webinar: 19/09/2018 :: with Richard Paterson

    Seven Proven Ways to Ruin Your Test Automation
    Date of Webinar: 20/09/2018 :: with Seretta Gamba

    The Logic of Verification
    Date of Webinar: 21/09/2018 :: with Michael Bolton

    Registre-se >> https://goo.gl/iWZ3Xd

    Enjoy !

    posted in Treinamento e Eventos
  • RE: Consigo logar na página (sem que o protractor aponte nenhum erro) porém a página inicial do sistema não é carregada.

    Olha, entendo pouco de protractor…Mas o que está sendo validado depois do login? Pelo que entendi tem um fluxo para entrar, mas não vi nenhuma asserção para validar algo depois de logado… Eu vi um passo para pegar o URL atual, mas nada de validação. Chegou a depois de logar colocar algum elemento e verificar se ele existe? Pois quando ve está tendo alguma mensagem de erro ao logar, mas como tu não está comparando com nada…erro não vai dar…

    posted in Geral
  • Exercise - how many ways to count the values in a json array returned from a REST API call?

    TLDR: When we use multiple tools and existing tool features, we open up new options in how we approach our testing. This can help us identify workarounds when we identify testability feature requests, and might even remove the need for the testability feature.

    I set myself a Practice Test Exercise. You might want to try it yourself before reading the full text of this post.

    <a name=“more”></a>

    Exercise Described

    • How many ways do you have to count the values in a json array returned from a REST API call?
      • find a REST API that returns a JSON array object e.g.
        • {"todos":[{...},{...},{etc.}]}
      • how can you identify how many “todos” are in the list

    To take part you’ll need to:

    I used Thingifier, created a bunch of ‘todos’ and then used GET /todos to return an array of ‘todos’

    I eventually came up with six different ways to count the number in the array before I stopped.

    I learned some new stuff along the way, and remembered some old stuff. I found this a useful exercise.

    If you identify other ways to count the JSON than I did, then I’d be interested in learning so send me a message or leave a comment somewhere.

    Roots of the Exercise

    I’ve been working on Thingifier which at the moment exposes a REST API for a simple Todo Manager

    Elisabeth Hocke and Thomas Rinke bravely picked the app to perform some testing on, and created a useful write up.

    One note in the write up mentioned that it could be useful if the responses described how many items were returned.

    e.g. GET /todos returns a list of todos, but if there are a lot of them then it can be hard to know how many are there.

    Elisabeth and Thomas were using Postman to test the app, and Postman does not show how many items are returned.

    I wrote some comments to Elisabeth and Thomas, and at the time the only ‘workaround’ I could think of was to use Insomnia, because that can show a filter count in the responses.

    I suggested this because:

    • feature requests for testing can be useful
    • they can take time to build
    • we often need workarounds

    But my only option made me realise that I didn’t have enough workarounds available in my mind to handle this situation.

    I used this limitation as a Personal Test Improvement Exercise.

    Here’s the exercise I set myself:

    How many ways to count the values in a json array returned from a REST API call?

    I found six ways before I stopped.

    • Using the Json filter in Insomnia Response view
    • Using the pretty print view in Postman console
    • Script in Tests in a request in Postman
    • Paste the JSON into a browser dev console
    • Paste it into an online JSON viewer
    • Send Requests/Response through a Proxy and use the Proxy viewer

    I hadn’t used the Postman scripting before so I learned a new set of knowledge when I tried that out. I’ll write up a fuller set of learnings on Postman scripting in a later post.

    Using the Json filter in Insomnia Response view todos.length

    We don’t have to stick to one tool. Insomnia is a REST Client that I often use for Exploratory testing.

    It has a handy filter facility in the Response, which I can use to show the number of todos returned.

    Using the Json filter in Insomnia Response view todos.length

    Using the pretty print view in Postman console

    In Postman show the console with “View \ Show Postman Console”

    Then use the pretty print view to see how many items are in the JSON array.

    Starts at 0 so when it shows 201 at the bottom it means there are 202 todos in the returned array.

    Script in Tests in a request in Postman

    I can write any arbitrary code I want in the Postman ‘Tests’ or ‘Pre-request Script’ and I can use that to support my testing, not just assert on values.

    e.g. the code below parses the response and logs to the Postman Dev console the number of items returned in the ‘todos’ array in the response.

    var response = JSON.parse(pm.response.text());console.log("length : " + response.todos.length);
    

    There are many ways to hack this in Postman: in the request, at a folder level, at a collection level, or possibly re-using a script created by a collection. But basically - view the ‘Tests’ functionality as ‘Code to run after request is completed’ functionality.

    Paste the JSON into a browser dev console

    Paste directly and you might see the result output:

    > {todos: Array(202)}

    or paste it into a variable e.g.

    var result = {...pasted JSON here...}> result.todos.length<- 202
    

    Paste it into an online JSON viewer

    e.g. http://jsonviewer.stack.hu/

    Send Requests/Response through a Proxy and use the Proxy viewer

    I configured Insomnia to route through Charles proxy and used the Charles JSON view to show the number of items in the array. Other proxies have similar functionality.

    End Notes

    This was triggered by the very useful work that Elisabeth Hocke and Thomas Rinke describe in their write up.

    I wanted to expand the options available to me when testing.

    If you are interested in API testing then I have a book you might like to look at Automating and Testing a REST API.

    posted in Feed de Blogs e Posts
  • Code Health: Make Interfaces Hard to Misuse

    This is another post in our Code Health series. A version of this post originally appeared in Google bathrooms worldwide as a Google Testing on the Toilet episode. You can download a printer-friendly version to display in your office.

    By Marek Kiszkis

    We all try to avoid errors in our code. But what about errors created by callers of your code? A good interface design can make it easy for callers to do the right thing, and hard for callers to do the wrong thing. Don’t push the responsibility of maintaining invariants required by your class on to its callers.Can you see the issues that can arise with this code?

    <table class=“my-bordered-table” style=“width: 613px;”>

    <thead>

    <tr>

    <td style=“background-color: #f4cccc; vertical-align: top; width: 607px;”>

    <pre style=“background-color: #f4cccc; border: 0px; color: black; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-top: 0px;”>class Vector {
    explicit Vector(int num_slots); // Creates an empty vector with num_slots slots.
    int RemainingSlots() const; // Returns the number of currently remaining slots.
    void AddSlots(int num_slots); // Adds num_slots more slots to the vector.
    // Adds a new element at the end of the vector. Caller must ensure that RemainingSlots()
    // returns at least 1 before calling this, otherwise caller should call AddSlots().
    void Insert(int value);
    }
    </pre>

    </td>

    </tr>

    </thead>

    </table>

    If the caller forgets to call AddSlots(), undefined behavior might be triggered when Insert() is called. The interface pushes complexity onto the caller, exposing the caller to implementation details.

    Since maintaining the slots is not relevant to the caller-visible behaviors of the class, don’t expose them in the interface; make it impossible to trigger undefined behavior by adding slots as needed in Insert().

    <table class=“my-bordered-table” style=“width: 613px;”>

    <thead>

    <tr>

    <td style=“background-color: #d9ead3; vertical-align: top; width: 607px;”>

    <pre style=“background-color: #d9ead3; border: 0px; color: black; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-top: 0px;”>@Test public void class Vector {
    explicit Vector(int num_slots);
    // Adds a new element at the end of the vector. If necessary,
    // allocates new slots to ensure that there is enough storage
    // for the new value.
    void Insert(int value);
    }</pre>

    </td>

    </tr>

    </thead>

    </table>

    Contracts enforced by the compiler are usually better than contracts enforced by runtime checks, or worse, documentation-only contracts that rely on callers to do the right thing. Here are other examples that could signal that an interface is easy to misuse:

    • Requiring callers to call an initialization function (alternative: expose factory methods that return your object fully initialized).
    • Requiring callers to perform custom cleanup (alternative: use language-specific constructs that ensure automated cleanup when your object goes out of scope).
    • Allowing code paths that create objects without required parameters (e.g. a user without an ID).
    • Allowing parameters for which only some values are valid, especially if it is possible to use a more appropriate type (e.g. prefer Duration timeout instead of int timeout_in_millis).

    It is not always practical to have a foolproof interface. In certain cases, relying on static analysis or documentation is necessary since some requirements are impossible to express in an interface (e.g. that a callback function needs to be thread-safe).
    Don’t enforce what you don’t need to enforce - avoid code that is too defensive. For example, extensive validation of function parameters can increase complexity and reduce performance.

    posted in Feed de Blogs e Posts
  • RE: 2669 - Programador Java (Blumenau/SC)

    @keeptalent faltam informações na sua postagem, como e-mail para contato ou link da oportuindade.
    Favor revisar

    posted in Vagas
  • RE: 2705 - Analista de Marketing Inbound (São Paulo/SP)

    @keeptalent faltam informações na sua postagem, como e-mail para contato ou link da oportuindade.
    Favor revisar

    posted in Vagas