background preloader

Continuous Integration

Continuous Integration
I vividly remember one of my first sightings of a large software project. I was taking a summer internship at a large English electronics company. My manager, part of the QA group, gave me a tour of a site and we entered a huge depressing warehouse stacked full with cubes. I was told that this project had been in development for a couple of years and was currently integrating, and had been integrating for several months. My guide told me that nobody really knew how long it would take to finish integrating. From this I learned a common story of software projects: integration is a long and unpredictable process. But this needn't be the way. This contrast isn't the result of an expensive and complex tool. When I've described this practice to people, I commonly find two reactions: "it can't work (here)" and "doing it won't make much difference". The term 'Continuous Integration' originated with the Extreme Programming development process, as one of its original twelve practices.

Related:  Continuous IntegrationavramcjAgile Dev

What is continuous integration (CI)? - Definition from What is continuous integration (CI)? Continuous integration (CI) is a software engineering practice in which isolated changes are immediately tested and reported on when they are added to a larger code base. The goal of CI is to provide rapid feedback so that if a defect is introduced into the code base, it can be identified and corrected as soon as possible. Continuous integration software tools can be used to automate the testing and build a document trail. Continuous integration has evolved since its conception. Introduction to Test Driven Development (TDD) Test-driven development (TDD) (Beck 2003; Astels 2003), is an evolutionary approach to development which combines test-first development where you write a test before you write just enough production code to fulfill that test and refactoring. What is the primary goal of TDD? One view is the goal of TDD is specification and not validation (Martin, Newkirk, and Kess 2003). In other words, it’s one way to think through your requirements or design before your write your functional code (implying that TDD is both an important agile requirements and agile design technique).

untitled NEWS (June 2015): 2nd edition available! Read the online version at InfoQ, or purchase a print version from there. “Your writing style is great, and the information that you provide is very useful … Your are an asset to the Scrum community” — Ken Schwaber (co-founder of Scrum) “Henrik’s book is a starter kit of basic practices that help teams move beyond trying to do Scrum to executing Scrum well.” — Jeff Sutherland (co-founder of Scrum) Meta Build Systems This is a story about my search for a hassle-free cross-platform open source (meta-/meta-meta-) build system. For our open source Bullet physics engine, I’ve been distributing the source code in a way that should make it as easy as possible to build out-of-the box. This means that for all supported platforms, the user (a developer who downloaded the Bullet SDK) should be able to download and unzip the zipfile or tarball on his machine, and get started as soon as possible. It should be hassle-free for the user but also for me, so I rather don’t manual updating too many files for each release.

TestPyramid testing tags: The test pyramid is a concept developed by Mike Cohn, described in his book Succeeding with Agile . Its essential point is that you should have many more low-level unit tests than high level end-to-end tests running through a GUI. For much of my career test automation meant tests that drove an application through its user-interface.

Differences Between Scrum and Extreme Programming Scrum and Extreme Programming (XP) are definitely very aligned. In fact, if you walked in on a team doing one of these processes you might have hard time quickly deciding whether you had walked in on a Scrum team or an XP team. The differences are often quite subtle, but they are important. What is Jidoka ? Jidoka is a Japanese term used for automation and being widely used in Toyota Production System (TPS), Lean Manufacturing and Total Productive Maintenance (TPM). Concept is to authorize the machine owner (operator) and in any case if a problem occurs on flow line, operator can stop the flow line. Ultimately defective pieces will not move to the next station. This concept minimizes the defects, over production and minimizes wastes. Also its focus is to understand the causes of problems and then taking preventive action to reduce them.History of Jidoka is back in early 1900’s, when first loom was stopped due to breakage of thread.

Automated Testing and the Test Pyramid - James Crisp Why Do Automated Testing? Before digging into a testing approach, lets talk about key reasons to do automated testing: Rapid regression testing to allow systems/applications to continue to change and improve over time without long "testing" phases at the end of each development cycleFinding defects and problems earlier and faster especially when tests can be run on developer machines, and as part of a build on a CI serverEnsure external integration points are working and continue to work as expectedEnsure the user can interact with the system as expectedHelp debugging / writing / designing codeHelp specify the behaviour of the system

Lean & Kanban Resources Here you will find a rich collection of books on Kanban and process management that cover a wide variety of subjects, written by prominent authors only. The content within these books is definitely worth a read. Kanban: Successful Evolutionary Change George Dinwiddie's blog » How easy is it for your programmers to fix problems? A programmer, writing some new code, looks into some existing code that she needs to use. Something doesn’t look quite right. In fact, there’s a bug. Whether no one’s triggered it, or they have but their complaints haven’t reached anyone who will do something about it, is hard to say. Automated Security Testing in a Continuous Delivery Automated unit, integration and acceptance tests are essential quality controls in running a reliable continuous integration or continuous delivery pipeline. Too often, security tests are left out of this process because of the erroneous belief that security testing is solely the domain of leather-jacket-wearing security experts. Security testing does not need special treatment