Testing these days spills onto production too. Testers from Qxf2 have been able to show value by knowing how to trace transactions across multiple forensic tools. This post is for testers who have always wanted some insight into how to investigate issues in production but never had the opportunity. Background Testing in production also is a good idea. We were […]
Investigating Data Loss: A Forensic Approach
Automate Rust Lambda deploy using GitHub Actions
We are open-sourcing a GitHub Action that will let you deploy AWS Lambdas written in Rust. This helps us automate deploying Rust AWS Lambda functions using GitHub Actions. If you are interested in the implementation details of this GitHub Action, you can look at the source code here. You can also file issues in that repository to ask for any […]
Generate CPU load using Python
Problem: How do I spike up my CPU load? Recently at one of our client engagement, for one of our tests, we needed to spike up CPU usage in a controlled manner on some of our Unix servers. One way to do this was to generate a specific amount of load for a specific amount of time. This was a […]
How to use thirtyfour crate with Cucumber-rs: Part 1
This post shows how to set a webdriver instance produced by thirtyfour as a member of the World struct defined by Cucumber-rs. We hope to follow up with one more simple post on How to use thirtyfour crate with Cucumber-rs showing ways to write browser driven BDD test automation in Rust using thirtyfour and Cucumber-rs. Why bother writing browser automation […]
Setting up Synthetic data in Neo4j
Qxf2 engineers are fans of using synthetic data for testing. We have used this technique for years now. But until recently, our experience was limited to SQL. We needed to work with neo4j in one of our projects. There was enough custom Python code and Cypher queries that we had to write as part of creating, backing up and restoring […]
Error handling with Rust using delta-rs as an example
In this blog, I will explore the various ways to do handle and/or propagate errors with Rust. Qxf2 is transitioning to using Rust as our primary programming language. The Rust documentation is great and has a nice section on error handling and propagation. However, everytime we tried to implement some of those ideas in our day to day work, we […]
Virtualizing GraphQL Microservice using Apollo Server
There is plenty of information online about how to virtualize REST based microservices. At our clients, Qxf2 has implemented different techniques like using a Flask app, using wiremock, etc. But recently we found the need to for virtualizing a GraphQL microservice to expand the scope of our test automation on our CI environment. In this post, we will show one […]
Test Automation with Testim
Qxf2 recently explored a tool called Testim, a low code tool for test automation. We found it useful in specific cases and wanted to quickly write about it. Why bother with a low code tool? Readers of this blog will know that Qxf2 loves to use code for testing. All our engineers write code. Our GitHub page is extremely popular […]
Reset password on multiple machines in parallel using AsyncSSH
I am a member of the TestOps team at my client. Our team is responsible for building test systems. In some releases, it is mandatory to reset the default password right after the application installation and this is time-consuming. This scenario was ideal for automation. I wrote a Python program using AsyncSSH and asyncio to save our team’s time. Limitation […]
Implement PartialEq for a custom type in Rust
This post will show you a couple of ways to implement the PartialEq trait for a custom type in Rust. This is particularly useful for testers since we end up using the assert_eq! macro. A bit of background: Qxf2 has started adopting Rust as our primary language to write our tests and tools. The reasons for the shift from Python […]