Learn how to use version control (e.g., Git, GitHub), build systems (e.g., NPM, Gradle, Bazel), and automated tests (e.g., static analysis, unit tests, integration tests).
By Steve Freeman and Nat Pryce (Addison-Wesley Professional)
Test-Driven Development (TDD) is now an established technique for delivering better software faster. TDD is based on a simple idea: Write tests for your code before you write the code itself. However, this 'simple' idea takes skill and judgment to do well. Now there's a practical guide to TDD that takes you beyond the basic concepts. Drawing on a decade of experience building real-world systems, two TDD pioneers show how to let tests guide your development and 'grow' software that is coherent, reliable, and maintainable. Steve Freeman and Nat Pryce describe the processes they use, the design principles they strive to achieve, and some of the tools that help them get the job done. Through an extended worked example, you’ll learn how TDD works at multiple levels, using tests to drive the features and the object-oriented structure of the code, and using Mock Objects to discover and then describe relationships between objects. Along the way, the book systematically addresses challenges that development teams encounter with TDD--from integrating TDD into your processes to testing your most difficult features.
By Robert C. Martin (Pearson)
Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way. Noted software expert Robert C. Martin, presents a revolutionary paradigm with Clean Code: A Handbook of Agile Software Craftsmanship. Martin, who has helped bring agile principles from a practitioner’s point of view to tens of thousands of programmers, has teamed up with his colleagues from Object Mentor to distill their best agile practice of cleaning code “on the fly” into a book that will instill within you the values of software craftsman, and make you a better programmer―but only if you work at it. What kind of work will you be doing? You’ll be reading code―lots of code. And you will be challenged to think about what’s right about that code, and what’s wrong with it. More importantly you will be challenged to reassess your professional values and your commitment to your craft.
By Michael Feathers (Pearson)
This book provides programmers with the ability to cost effectively handle common legacy code problems without having to go through the hugely expensive task of rewriting all existing code. It describes a series of practical strategies that developers can employ to bring their existing software applications under control. The author provides useful guidance about how to use these strategies when refactoring or making functional changes to codebases. One of the book's key points is that it teaches developers to write tests that can be used to make sure they are not unintentionally changing the application as they optimize it. Examples are provided in Java, C++, and C sharp,and the book assumes that the reader has some knowledge of UML notation. Strategies using UML and code in C++ and Java primarily while language independent advice will be delivered in side bars and appendices for language specific users.
By Kent Beck and Cynthia Andres (Addison-Wesley)
Extreme Programming (XP) was conceived and developed to address the specific needs of software development conducted by small teams in the face of vague and changing requirements. This new lightweight methodology challenges many conventional tenets, including the long-held assumption that the cost of changing a piece of software necessarily rises dramatically over the course of time. XP recognizes that projects have to work to achieve this reduction in cost and exploit the savings once they have been earned.
By Gayathri Mohan (O'Reilly)
Testing is a critical discipline for any organization looking to deliver high-quality software. This practical book provides software developers and QA engineers with a comprehensive one-stop guide to testing skills in 10 different categories. You'll learn appropriate strategies, concepts, and practical implementation knowledge you can apply from both a development and testing perspective for web and mobile applications. Author Gayathri Mohan offers examples of more than 40 tools you can use immediately. You'll acquire the skills to conduct exploratory testing, test automation, cross-functional testing, data testing, mobile testing, and visual testing, as well as tests for performance, security, and accessibility. You'll learn to integrate them in continuous integration pipelines to gain faster feedback. Once you dive into this guide, you'll be able to tackle challenging development workflows with a focus on quality.
By Glenford J. Myers, Corey Sandler, and Tom Badgett (Wiley)
This long-awaited revision of a bestseller provides a practical discussion of the nature and aims of software testing. You'll find the latest methodologies for the design of effective test cases, including information on psychological and economic principles, managerial aspects, test tools, high-order testing, code inspections, and debugging. Accessible, comprehensive, and always practical, this edition provides the key information you need to test successfully, whether a novice or a working programmer. Buy your copy today and end up with fewer bugs tomorrow.
By Roy Osherove (Manning)
Unit testing is more than just a collection of tools and practices—it’s a state of mind! This bestseller reveals the master’s secrets for delivering robust, maintainable, and trustworthy code. Thousands of developers have learned to hone their code quality under the tutelage of The Art of Unit Testing. This revised third edition updates an international bestseller to reflect modern development tools and practices, as well as to cover JavaScript.
By Lucas da Costa (Manning)
Testing JavaScript Applications is a guide to creating JavaScript tests that are targeted to your application’s specific needs. Dripping with the insight author Lucas da Costa has developed as a core contributor to some of the most popular JS testing libraries, this book offers dozens of detailed code samples that you can apply to your own projects. You’ll learn how to write tests for both backend and frontend applications, covering the full spectrum of testing types so you can pick an approach that’s right for you. Taking on the role of a developer for a bakery’s web store, you’ll learn to validate different aspects including databases, third-party services, and how to spin-up a real browser instance to interact with the entire application. All examples are delivered using the popular testing tool Jest and modern packages of the JavaScript ecosystem.
By Scott Chacon and Ben Straub (Apress)
Pro Git (Second Edition) is your fully-updated guide to Git and its usage in the modern world. Git has come a long way since it was first developed by Linus Torvalds for Linux kernel development. It has taken the open source world by storm since its inception in 2005, and this book teaches you how to use it like a pro. Effective and well-implemented version control is a necessity for successful web projects, whether large or small. With this book you’ll learn how to master the world of distributed version workflow, use the distributed features of Git to the full, and extend Git to meet your every need.
By Yevgeniy Brikman (Blog post)
A version control system (VCS) is a tool that allows you to store source code, share it with your team, integrate your work together, and track changes over time. A VCS is a central part of every modern software delivery process, and yet, I still frequently come across developers who don’t know how or why to use version control. If you’re one of these developers, it’s nothing to be ashamed of, and you’ll find that if you take a small amount of time to learn it now, it’s one of those skills that will benefit you for years to come. This tutorial will teach you the basics of how to use two of the most popular version control tools available today, Git and GitHub, through a series of hands-on exercises that take about 15 minutes.
By Yevgeniy Brikman (Talk)
Yevgeniy Brikman talks about how to write automated tests for infrastructure code, including the code written for use with tools such as Terraform, Docker, Packer, and Kubernetes. Topics covered include: unit tests, integration tests, end-to-end tests, dependency injection, test parallelism, retries and error handling, static analysis, property testing and CI / CD for infrastructure code.
By Ham Vocke (Blog post)
Find out what kinds of automated tests you should implement for your application and learn by examples what these tests could look like.
By Martin Fowler (Blog post)
Mainline, Feature Branching, Continuous Integration, Release Branch and a clutch of other handy patterns.
By Alexander Shvets (Online course)
GitHowTo is a guided tour that walks through the fundamentals of Git, inspired by the premise that to know a thing is to do it. The surest path to maining Git is to immerse oneself in its utilities and operations, to experience it first-hand.
By Peter Cottle (Online course)
An interactive Git visualization tool to educate and challenge!
By Chris Beams (Blog Post)
Commit messages matter. Here's how to write them well.
By Conventional Commits (Specification)
A specification for adding human and machine readable meaning to commit messages.
By Atlassian (Blog post)
This tutorial will cover various methods of rewriting and altering Git history. Git uses a few different methods to record changes. We will discuss the strengths and weaknesses of the different methods and give examples of how to work with them. This tutorial discusses some of the most common reasons for overwriting committed snapshots and shows you how to avoid the pitfalls of doing so.
By Google (Policy)
A code review is a process where someone other than the author(s) of a piece of code examines that code. At Google, we use code review to maintain the quality of our code and products. This documentation is the canonical description of Google’s code review processes and policies.
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.
Mercurial is a free, distributed source control management tool. It efficiently handles projects of any size and offers an easy and intuitive interface.
Perforce Software provides enterprise-scale development tools. This includes version control, application lifecycle management, agile planning, and static analysis.
Subversion is an open source version control system. Founded in 2000 by CollabNet, Inc., the Subversion project and software have seen incredible success over the past decade. Subversion has enjoyed and continues to enjoy widespread adoption in both the open source arena and the corporate world.
CVS is a version control system, an important component of Source Configuration Management (SCM). Using it, you can record the history of sources files, and documents.
Join the world's most widely adopted, AI-powered developer platform where millions of developers, businesses, and the largest open source community build software that advances humanity.
From planning to production, bring teams together in one application. Ship secure code more efficiently to deliver value faster.
Bitbucket Cloud is a Git-based code and CI/CD tool optimized for teams using Jira.
Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax.
Accelerate developer productivity. Gradle helps teams build, automate and deliver better software, faster.
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
sbt is a simple build tool for Scala, Java, and more. Define your tasks in Scala. Run them in parallel from the interactive shell.
Relied upon by more than 17 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has become the center of JavaScript code sharing, and with more than two million packages, the largest software registry in the world.
Use the Bazel Open Source Project to scalably build and test massive, multi-language, multi-platform codebases.
🤖 Just a command runner. Contribute to casey/just development by creating an account on GitHub.
GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files.
Yarn, the modern JavaScript package manager.
Turbo is an incremental bundler and build system optimized for JavaScript and TypeScript, written in Rust.
Lerna is a fast, modern build system for managing and publishing multiple JavaScript/TypeScript packages from the same repository.
Fast, disk space efficient package manager.
Parcel combines a great out-of-the-box development experience with a scalable architecture that can take your project from just getting started to massive production application.
A pluggable and configurable linter tool for identifying and reporting on patterns in JavaScript. Maintain your code quality with ease.
JSLint, The JavaScript Code Quality and Coverage Tool.
Opinionated Code Formatter.
SpotBugs is a program which uses static analysis to look for bugs in Java code. It is free software, distributed under the terms of the GNU Lesser General Public License.
A Ruby static code analyzer and formatter, based on the community Ruby style guide.
Terrascan detects security vulnerabilities and compliance violations across your Cloud Native Infrastructure.
Use Trivy to find vulnerabilities (CVE) & misconfigurations (IaC) across code repositories, binary artifacts, container images, Kubernetes clusters, and more. All in one tool!
Policy-based control for cloud native environments.
Policy as code framework for HashiCorp Enterprise Products.
Policy as Code Engine.
Policy-based control for cloud native environments.
Terratest is a Go library that provides patterns and helper functions for testing infrastructure, with 1st-class support for Terraform, Packer, Docker, Kubernetes, AWS, GCP, and more.
Package testing provides support for automated testing of Go packages.
The unittest unit testing framework was originally inspired by JUnit and has a similar flavor as major unit testing frameworks in other languages. It supports test automation, sharing of setup and shutdown code for tests, aggregation of tests into collections, and independence of the tests from the reporting framework.
✅ The 5th major version of the programmer-friendly testing framework for Java and the JVM.
Jest · 🃏 Delightful JavaScript Testing.