Flawless!
12.6K views | +0 today
Flawless!
About everything making software flawless. Verification, analysis, methods and tools.
Curated by Petr Muller
Your new post is loading...
Your new post is loading...
Scooped by Petr Muller
Scoop.it!

30 best practices for software development and testing

30 best practices for software development and testing | Flawless! | Scoop.it
These software engineering rules and testing best practices might help save you time and headaches.
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

Z: Future of APIs

Z: Future of APIs | Flawless! | Scoop.it
A critical look at the problems of current APIs that are enabled by humans inside. Suggestion of how future, fully automated, APIs might work.
Petr Muller's insight:
An older, but still relevant piece that popped out of my overflowing Pocket queue. It's well written and deals with the current situation where different APIs are still wired together by humans (bringing error and considerable costs), and how we could get rid of the necessity for humans to be the API middlemen.
 
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

Dependency CI - Continuous testing for your application's dependencies

Automatic compliance testing for all the dependencies of your application.
Petr Muller's insight:
A simple cloud service analyzing your application's dependencies: detects if you depend on an outdated, deprecated or otherwise problematic package. Provided as a modern, easy to setup service: just connect it to GitHub and flip it on for the desired repositories. All usual package sources (like PyPi, npm etc) seem to be supported.
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

Pa11y

Pa11y is your automated accessibility testing pal.
Petr Muller's insight:
Pa11y programatically checks webpages to find issues with the page's accessibility. It works similar to a static code linter: run it against a page and it produces a bunch of warnings of various severity. It has all the usual features: suppressions like nice HTML reports. It is supplemented by a dasbhoard. which plots the warning trends on a timeline.
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

Kraken: Leveraging live traffic tests to identify and resolve resource utilization bottlenecks in large scale web services

Kraken: Leveraging live traffic tests to identify and resolve resource utilization bottlenecks in large scale web services Veeraraghavan et al. (Facebook) OSDI 2016 How do you know how well your systems can perform under stress? How can you identify resource utilization bottlenecks? And how do you know your tests match the condititions experienced with live…
Petr Muller's insight:
The idea in the paper Adrian describes today is brilliantly simple: use live traffic for load testing of live systems using unfair load balancing, supplemented by careful monitoring and analysis.
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

Adrian Colyer: Getting beyond MVP

Something a little different for today, instead of a new paper I wanted to pause and reflect on the design advice we've been reading from Tony Hoare, Barbara Liskov, and David Parnas among others. In particular, how it can be applied in a situation I've recently been through with a codebase of my own, and…
Petr Muller's insight:
I've shared the Morning Paper website already, but this writeup is so good I needed to share it separately. I've seen teams (and heard rumors about the whole companies) that never "grew up" from the state of early prototype in their development processes, because everyone felt the development would "slow down" and nobody needs that in startup world, right? Well, ultimately, the technical debt hits you.

Based on few recent Morning Paper readings of early, foundational software engineering papers, Adrian describes strategies how to transfer between a MVP and properly developed software.
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

Compiler Explorer

GCC Explorer is an interactive compiler. The left-hand pane shows editable C/C++ code. The right, the assembly output of having compiled the code with a given compiler and settings.
Petr Muller's insight:
I have learned a lot in my time working on the Linux toolchain exactly by inspecting the assembly the compiler produced for various C/C++ code. This page does exactly that, but without a need to fiddle with command line and for multiple compilers and versions.
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

BrowserLab: Automated regression detection for the web

BrowserLab: Automated regression detection for the web | Flawless! | Scoop.it
Several years ago, Facebook was largely rendered server-side, and there was only a small amount of JavaScript on the site. To understand loading time, we could apply simple tools that focused solely on server performance. Today, we face very different challenges. Facebook has become increasingly interactive, which has motivated the transition to powerful client-side rendering frameworks like React. Time spent in browser rendering and scripting has grown to become a major bottleneck in loading facebook.com — at the beginning of 2016, we found that the majority of load time was spent on the client. To solve this problem, we set out to build a system capable of detecting changes in performance that can run on any commit to automatically prevent client regressions from shipping to production
Petr Muller's insight:
An interesting, detailed article giving insight into the system Facebook built to spot performance regressions in client code of their site. The article describes how they reduced measurement imprecision caused by server and communication performance, underlying data changes and code non-determinism.
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

the morning paper

an interesting/influential/important paper from the world of computer science every weekday morning, as selected by Adrian Colyer

Petr Muller's insight:
One of the most useful resources I have found lately: Adrian writes a digestible summary of a computer science every weekday (I am unsure how he is able to achieve that).
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

The Inquiry Method for Test Planning

The Inquiry Method for Test Planning | Flawless! | Scoop.it
Creating a test plan is often a complex undertaking. An ideal test plan is accomplished by applying basic principles of cost-benefit analysis and risk analysis, optimally balancing these software development factors: Implementation cost, maintenance cost, monetary cost, benefit and risk.
Petr Muller's insight:
Preparing a good test plan / test strategy is an art: it is highly contextual (there is no approach that works every time), very easy to overdo and very prone to becoming that long, technical document that gets obsolete after a week, because it is not maintainable. This Google Test blog piece gives a single approach how to not miss things. It focuses on the content that might be useful when planning testing, not structure or depth.
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

[Etsy] Teaching Testing: Our Testing 101 Materials

Etsy engineers have a wide variety of backgrounds, strengths, and weaknesses, so there are no engineering skills we can take for granted. And there are things you can't just assume engineers will l...
Petr Muller's insight:

It is quite interesting to see a company that is not afraid to release their training material. Etsy's Testing 101 is indeed very basic, but still does quite nice job in introducing some basic concepts of modern SW testing.

more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

Nicholas Nethercote: How we made compiler warnings fatal in Firefox 

Compiler warnings are mostly good: they identify real problems, and when false positives do occur they are usually easy to work around. However, if they’re not fatal, they tend to be ignored and build up. (See bug 187528 for an idea!) One way to prevent the build-up is to make them fatal, so they become errors. But won’t that cause problems? Not if you’re careful. Here’s how we did it for Firefox.
 
Petr Muller's insight:
Especially with current, really smart compilers, their warnings are the first line of defense against bugs. But they are only useful if you pay attention to them, and you can only pay attention if you do not need to wade through hundreds of them. This is often the case with larger software, where the warnings were neglected and were allowed to build up. Like with FF. B
 
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

John Regehr and Pascal Cuoq: Undefined Behavior in 2017

Recently we’ve heard a few people imply that problems stemming from undefined behaviors (UB) in C and C++ are largely solved due to ubiquitous availability of dynamic checking tools such as ASan, UBSan, MSan, and TSan. We are here to state the obvious — that, despite the many excellent advances in tooling over the last few years, UB-related problems are far from solved — and to look at the current situation in detail.
Petr Muller's insight:
A lengthy post, but fear not, a good half of the size is an exhaustive list of UBs that can happen in C. John Regehr and Pascal Cuoq summarize how the UB landscape looks like in 2017, describing background, debugging and mitigation of all the UBs that usually lead to bugs in software.
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

Code Health: Google's Internal Code Quality Efforts

Code Health: Google's Internal Code Quality Efforts | Flawless! | Scoop.it

There are many aspects of good coding practices that don't fall under the normal areas of testing and tooling that most Engineering Productivity groups focus on in the software industry. For example, having readable and maintainable code is about more than just writing good tests or having the right tools—it's about having code that can be easily understood and modified in the first place. But how do you make sure that engineers follow these practices while still allowing them the independence that they need to make sound engineering decisions?

Petr Muller's insight:
I don't always admire how Google does things, but this is great. I always grumble a bit when being called a "QA", a "tester" or something similar. I've felt that to achieve good software, you must not just test. So I always leaned towards roles like described here. The point about how code health-like organizations are quite rare in practice is also good.
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

John Regehr: Testing LLVM

John Regehr: Testing LLVM | Flawless! | Scoop.it
Once a piece of software reaches a certain size, it is guaranteed to be loosely specified and not completely understood by any individual. It gets committed to many times per day by people who are only loosely aware of each others’ work. It has many dependencies including the compiler, operating system, and libraries, all of which are buggy in their own special ways, and all of which are updated from time to time. Moreover, it usually has to run atop several different platforms, each one individually quirky. Given the massive number of possibilities for flaky behavior, why should we expect our large piece of software to work as expected? One of the most important reasons is testing.
Petr Muller's insight:
A nicely written summary of how LLVM is tested. Inspiration for any other large project struggling with its testing effort.
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

DevFreeBooks: A Collection of Free Books for Developers

DevFreeBooks: A Collection of Free Books for Developers | Flawless! | Scoop.it

This site is a open-source initiative whose the goal is sharing only free dev books for everybody. If you love Node.js, Go, JavaScript, Ruby or any other programming language or framework, and you know some ebooks sharing your basic or advanced knowledge, please send it to us! Will be a honor to fill up this site with a huge collection of free books.

Petr Muller's insight:
Free books!
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

Continuous Deployment at Instagram

Continuous Deployment at Instagram | Flawless! | Scoop.it
At Instagram, we deploy our backend code 30–50 times a day… whenever engineers commit changes to master… with no human involvement in most…
Petr Muller's insight:
A lightweight, quick read about how Instagram does CD, and more interesting, how they got there.
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

Test Heuristics Cheat Sheet | Test Obsessed

I’ve been meaning to post this for ages. So while I’m polishing the rough edges on my Part 2 of 2 post, I thought I’d take this opportunity to finally make good on that promise. Here it is: the Quality Tree Software, Inc. Test Heuristics Cheat Sheet, formerly only available by taking one of our testing classes.
Petr Muller's insight:
This cheat sheet was hanging on my cubicle wall for ages, and I have re-discovered it when I cleaned up my long time job to try something new. It can be printed on a single A4 paper and contains a lot of useful stuff helping a tester to think,
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

500 Lines or Less: Fourth volume in the Architecture of Open Source Applications book series

500 Lines or Less: Fourth volume in the Architecture of Open Source Applications book series | Flawless! | Scoop.it
500 Lines or Less focuses on the design decisions that programmers make in the small when they are building something new. The programs you will read about in this book were all written from scratch for this purpose (although several of them were inspired by larger projects that the authors had worked on previously).
Petr Muller's insight:
The Architecture of Open Source Application book series is a gem. The previous books were incredibly interesting, because they were a great collection of practical, real-world case-studies on software development a architecture. I have no reason to think the fourth book will be less useful. The web version of the book is free. You may buy a PDF or a paperback from Lulu, too.
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

Flaky Tests at Google and How We Mitigate Them

Flaky Tests at Google and How We Mitigate Them | Flawless! | Scoop.it
At Google, we run a very large corpus of tests continuously to validate our code submissions. Everyone from developers to project managers rely on the results of these tests to make decisions about whether the system is ready for deployment or whether code changes are OK to submit. Productivity for developers at Google relies on the ability of the tests to find real problems with the code being changed or developed in a timely and reliable fashion.
Petr Muller's insight:
With almost any testuite of sufficient size the so-called "flaky" tests start to appear. They eat up resources, they teach engineers to ignore failures and they mask real problems. This nice article summarizes some possible approaches to this problem. Make sure you read the discussion under the article for more insight from both inside and outside of Google.
more...
No comment yet.
Scooped by Petr Muller
Scoop.it!

Flow: A static type checker for JavaScript

Flow: A static type checker for JavaScript | Flawless! | Scoop.it
Flow is a static type checker. The goal of Flow is to find errors in JavaScript code with little programmer effort. Flow relies heavily on type inference to find type errors even when the program has not been annotated - it precisely tracks the types of variables as they flow through the program.
Petr Muller's insight:
Languages with weak (or even almost none) type system are usually very easy to use (see the success of JavaScript or Python), but also quite easy to misuse, even accidentally. In some cases, a tighter code correctness measures provided by stricter type systems may come in handy. Python grew its PEP484 optional type hints. JavaScript has Flow, which can spot type incompatible operations, and also allow the user the provide and check type hints if she wants to.
more...
No comment yet.