Category Partitioning: Introducing TDD Through Automation and Analysis
“小打も積もれば大木を倒す” - Little strokes fell great oaks.
Introducing test-driven development to delivery-focused software development teams provides a unique set of challenges. For example, how to begin the process of deciding what to test? As a Software Engineering Coach tasked with improving software development practices across a large enterprise, I've been hard at work tackling this very problem. The solution I found is simple: describe the requirements, then let automation do most of the work!
Category partitioning (or category partition testing) is a testing methodology based on input/output analysis that emphasizes both coverage and error detection. Combining manual design and automated test generation, the systematic nature of this method takes a lot of the guesswork and anxiety out of deciding how to begin building out a TDD suite for teams starting out.
In this session, I will walk through a sample application of the category partitioning method centered around the development of a simple application, including all of the steps of the method: identifying independently testable features, splitting features into categories, partitioning categories into choices, identifying constraints and boundary conditions, and finally generating a suite of test frames through an automated tool that could be used to begin development using TDD.
スピーカーは日本語が分かるから、セッションコンテンツの日本語版もあります。
Outline/Structure of the Talk
I. Introduction to TDD.
II. Why Teams Can Struggle With TDD.
III. Introduction to Test Generation.
IV. Category Partitioning Method
- Identifying testable features
- Dividing features into categories
- Dividing categories into choices (constraints and boundary conditions)
- Test suite generation
V. 20-minute Category Partitioning demo, generating test frames and converting them into runnable JUnit test cases.
Learning Outcome
Attendees will have an understanding of the Category Partitioning method and how it can be used to help teams of all skill levels create test suites in an automated fashion, removing one of the biggest pain points of TDD.
Target Audience
Developers, QA Professionals, Managers, Anyone Looking To Get Started with Test-driven Development
Prerequisites for Attendees
None, although some familiarity with Java, JUnit, and TDD would be helpful.
Links
A good example of Category Partition Testing can be found here (courtesy Udacity and Georgia Tech): https://www.youtube.com/watch?v=FDyY1Swll8I
schedule Submitted 4 years ago
People who liked this proposal, also liked:
-
keyboard_arrow_down
Gene Kim - Lessons Learned Since The Phoenix Project
60 Mins
Keynote
Beginner
I’ve learned so much since The Phoenix Project came out in 2013. In this talk, I will share my top learnings while co-authoring The DevOps Handbook with Jez Humble, Patrick Debois, and John Willis and the recently-released Accelerate with Dr. Nicole Forsgren and Jez Humble. I’ll talk about the latest findings from the State of DevOps Report, the true importance of deployment lead times, how DevOps truly transforms the lives of Dev and Ops, what I learned about Conway’s Law, and how DevOps is a subset of dynamic learning organizations, of which Toyota is the most famous. This project was one of the most fun and rewarding adventures of my life, and I want to share some of my biggest a-ha moments!
-
keyboard_arrow_down
Jean-Baptiste Vasseur / Masashi Arino / Tsutomu Yasui / Yasunobu Kawaguchi - Fun! Done! Learn! 〜 実験で学び、学びを喜び、喜びを成果につながるふりかえりを体験しよう!
Jean-Baptiste VasseurAgile Coach株式会社yamanecoMasashi ArinoAgile CoachMitsubishi UFJ Information Technology, Ltd.Tsutomu YasuiConsultantself-employedYasunobu KawaguchiAgile CoachAgilergo Consultingschedule 4 years ago
45 Mins
Workshop
Beginner
Retrospective で Problem -> Solution をだすという KAIZEN のやりかたが、日本ではとても普及している。アリスターコバーンのアイデアに基づくKPT(Keep/Problem/Try)フォーマットは、日本ではデファクトと言っていい。みんな改善が大好きで、改善点が出ないようなふりかえりは意味がないとすら思っている人もいるくらい。
アジャイルコーチたちはスクラムマスターからこんな相談をよく受ける。「ふりかえりでの悩みがあります。改善点がでないんです。」「でてきた改善点がちっとも解決されないんです」「改善しないのでふりかえりをやめてしまいました」
日本での長いコーチングの経験に基づき、私たちは改善を中心にしたふりかえりには問題がいくつかあることを発見した。
1. 暗くなること
2. 改善点は仮説であり、実現可能かどうかはわからないこと
3. だから、いくらでもアイデアを出せるし議論ができてしまうこと
4. 同じような課題や改善点が残り続けることで、人々がポジティブになれなくなっていくこと
これらの問題によって、ふりかえりが長時間になってしまったり、疲れてもうやりたくないと思ったり、楽しくない、と思うようになってしまうことが、よくあるのだ。チーム自身がふりかえりを行うので、ミーティングが長くなれば、作業にかけられる時間が減ってしまう。楽しくもないし改善もしないようなふりかえりなら、やめてしまうのが解決策なのだ!
Linda Rising の Positive Retrospective というアイデアを発見した。LindaはProject Retrospective の第一原則を参照し、まずこれまでやってきたことを肯定することからはじめ、その上で代替案を出していこう、ということだった。
そう、私たちはまず、チームがこれまでになにができたかを確認するセレモニーをやらなければならないのだ。Fearless Change における Small Successes パターンのように。Scrumがいうベロシティが意味するチームの能力、現在位置を確認し、完了/実験と成長と学びを喜ぶセレモニーが必要なのだ。チームメンバーがそれぞれ成し遂げたことを確認し、何に喜び、何を学びと感じたのかを共有しあう。
私たちはこのふりかえりにあたって、壁に貼る、一つのフォーマットを考えた。Fun! Done! Learn! である。このフォーマットの特徴はベン図になっていることだ。複数の要因にかかる要素を示すことができる。例えば楽しく新しいやり方を覚えたのなら、Learn!かつFun!とすることができる。
多くの場合、学びは喜びだ。チームは継続的な学びを繰り返してどんどんよくなっていく。そしてそれは喜びにも繋がる。喜びはチームの燃料になる。チームはまた、より多くのDoneを生み出していく。
当初私たちはDoneではなく、Deliveryという言葉を使おうとした。ただリズムがよりよいDoneを使おうという話になった。Regional Scrum Gathering Tokyo で Hunter Industries の Chris Lucian が実験について講演した。そうだ、実験だ。私たちは Done の中に実験も含めるべきだと気づいた。
このフォーマットについて Tsutomu Yasui がブログに書いたところ、数週間のうちに日本中で Fun! Done! Learn! が行われるようになった。ブログやfacebookで毎週のように「やってみたよ!」という報告が届いている。Regional Scrum Gathering Tokyo でも Kazuki Mori が Fun! Done! Learn! のボードを作ったところ、貼りきれないほどのポストイットが壁を埋め尽くした。
私たちはなぜここまで Fun! Done! Learn! が人々にポジティブな効果をあたえるのか、科学的なエビデンスをまだもっていない。しかし、このムーブメントになにか重要な発見があるのではないか?とすら思うようになった。DevOps Days Tokyoの場で Fun! Done! Learn! をやることで、この現象が様々な現場でどのような結果に繋がるのかを実験したい。ぜひ、皆さんの職場に持ち帰って実験してほしいと考えている。実験はDone!でありFun!であり、Learn!につながる。まさにアジャイルなマインドセットを Fun! Done! Learn! が呼び起こし、見える化するのではないかと考えている。
この最新のレトロスペクティブについて皆さんに共有し、フィードバックをいただければと考えている。
-
keyboard_arrow_down
Edward Thomson - How We Moved 75,000 Microsofties to DevOps in the Cloud
45 Mins
Talk
Beginner
How do you migrate over 75,000 of the most demanding software engineers from infrastructure built up over decades of high-intensity work into a common engineering system based on modern software development technologies and best practices? This is exactly the challenge faced by Microsoft as they moved to their One Engineering system, a globally distributed 24x7x365 service hosted in Azure DevOps. Edward Thomson will explain how we did it, the lessons that we learned along the way, and some of the technical challenges that still remain. -
keyboard_arrow_down
T. Alexander Lystad - Large Scale DevOps Transformation
45 Mins
Talk
Beginner
Visma is the largest cloud software developer in Northern Europe with 8000+ employees. Over the past four years, Visma has worked in a focused and structured way to modernize how we design, develop, deliver and operate our cloud services. We now have 40 autonomous teams that are responsible for both development and operations of their cloud services. How did we get here, and what have we learned along the way?
This is an updated version of a talk I held at DevOpsDays Oslo 2018.
-
keyboard_arrow_down
Genki Sato - 開発効率を最大化するデプロイメントパイプライン
20 Mins
Talk
Beginner
Yappliでは、プログラミング不要で簡単にスマフォのネイティブアプリを作成して、公開できるプラットフォームを280社のお客様に提供しています。
私達が開発した価値をプラットフォーム上にすばやく、安全にデプロイするためには、パイプラインを整備し、自動化することが重要になってきます。
パイプラインを整備することで、マスターへのマージに対する心理的な障壁を下げ、デプロイを自動化することで、効率的な運用が可能になります。このセッションでは、SaaSを運用している事業者として、最低限取り組むべき内容について、Yappliで実装した知見とともにお伝えしたいと思います。
-
keyboard_arrow_down
Ayana Chandler / Kotaro Ogino - 人事がDevOps研修を作っちゃった話〜恐れ知らずのブルドーザー改革 〜
Ayana ChandlerCoordinatorRakuten, Inc.Kotaro OginoDevelopment ManagerRakutenschedule 4 years ago
45 Mins
Talk
Beginner
先日ご好評頂いたJaSST'18 Tokaiで発表した内容を、
DevOps Days Tokyo 2019向けにアップデートしてお話しします。
楽天でのDevOps研修の展開方法を失敗や苦労も交えながら、
組織の変革をどうアジャイルに続けたか、
ブルドーザー事例を交えながら惜しみなくお話します。4/8 当日のスライドをアップロードしました!
4/9 スライドを少しアップデートしました!(リンク変わりました)ーーー
参考: JaSST'18 Tokai 発表資料
https://www.slideshare.net/kotaroogino/jasst-tokai18rakuten20181207平鍋さんのブログでも取り上げて頂きました!
https://anagileway.com/2018/12/09/thank-you-jasst-18-tokai/ -
keyboard_arrow_down
Mitsuyuki Shiiba - Service Operation Centered Development - サービス運用をまんなかにおいた開発
20 Mins
Talk
Beginner
サービス運用をまんなかにおいた開発についてお話します。
僕は2010年から楽天の大阪支社でウェブアプリケーションエンジニアとして仕事をしています。僕のいる部署は中規模から小規模のたくさんのサービスを担当していて、1つのチームまたはグループでサービスの開発と運用の両方を担当しています。
サービスの開発と運用の両方を担当しているため、僕らはサービスの運用のことを常に考えながら開発に取り組んでいます。運用のことを考えずに開発をすると全てが自分たちに跳ね返ってくるからです。
このセッションでは、サービスの運用をまんなかに置いて開発をするときに、どのようなことを考えるか、また、どのように他のチームや組織と向き合うか、について自分の経験を元にお話したいと思います。
資料は英語ですが、セッションは日本語です。
-
keyboard_arrow_down
Takeshi Arai / Kota Mikawa - トラディショナルな企業でズンズン歩んだ積み木細工のDevOps
Takeshi AraiDevelopment DirectorVal Laboratory CorporationKota MikawaGeneral ManagerVal Laboratory Corporationschedule 4 years ago
45 Mins
Talk
Beginner
積み木細工(またはジェンガ)とプレハブ
技術とオペレーションとチーム開発と文化醸成をビジネスの視点を持ちながら、そしてoutcomeを意識しながら実践していった話をさせていただきます。
同時多発的にアジャイル、カンバン、クラウド、カイゼンをガシガシとチーム単位で導入していったら会社のカルチャーも変わっていきました。ある種積み木のように、意欲のあるメンバーがそれぞれに積み上げて、受け入れられたものが根付いています。今振り返るとこれをDevOpsと言っても良いのかも。
43年続いているトラディショナルな企業でも、そしてプレハブのように型通りの導入でなくとも、ボトムアップからここまでできるんだという事例とその術を伝えられたらと思います。
-
keyboard_arrow_down
Arata Fujimura - DevOps導入支援、始めました
20 Mins
Talk
Beginner
クラスメソッド社では2018年7月から、DevOps導入支援サービスを始めました。一般的にDevOpsという言葉の定義は明確ではありません。そこで、支援サービスを始める上でまずは我々なりのDevOpsの定義を行ない、リーンキャンバスなどを使って仮説を立て、仮説の検証を行ないながら支援サービスの方向性を模索してきました。当セッションでは、DevOps導入支援サービスの立ち上げから今に至るまでにやってきたこと、その結果からわかったこと、次にやろうとしていることについて、ざっくばらんにお話しさせて頂きます。 -
keyboard_arrow_down
Hiroki Arai / Kenta Sasa - Value Stream Mapping ワークショップ
120 Mins
Workshop
Beginner
Value Stream Mapping ワークショップです。 Value Stream Mappingを使ったプロセスの見える化・カイゼン案の検討を実際に体験してみましょう。
Value Stream Mapping = ソフトウェア開発工程の流れ(価値の流れ)を見える化するために作成するプロセス図です。アイデアが生まれてから顧客に対して価値が届くまでの全行程を見える化することによって、ムダな作業や非効率なフローをチーム内で共有することができるようになるため、カイゼンに役立てることができます。
4、5人でグループを作ってグループワークを行います。Value Stream Mapping が描けるようになるだけではなく、チームで作った時の効果も感じられると思います。
-
keyboard_arrow_down
David Nguyen / Michael Migliacio - Design an Enterprise Library for React Components
David NguyenLead EngineerTargetMichael MigliacioLead Software Engineering CoachTargetschedule 4 years ago
45 Mins
Talk
Advanced
There are an increasing number of engineering teams adopting React to build their e-commerce solutions, or high performance single page applications for any business sectors.
As the adoption increases, there is also the need to create, and publish reusable react components to share across teams. Come join David and Michael to hear how their web UI/UX engineering team laid the foundation for this effort. They will review the process through which, the core decisions were made. The presentation will discuss the options and considerations for a component library development environment. They will share important lessons learned while exploring the many ways of handling style and themes for reusable components and the tradeoffs. Audience will learn the importance of automated testing for the components created, as well as continuous integration to assure no one breaks the build. Finally, they will share about component publishing, what they had to consider prior to distribution, whether to an internal or public repository for consumers.
-
keyboard_arrow_down
Matty Stratton - Fight, Flight, or Freeze — Releasing Organizational Trauma
45 Mins
Talk
Beginner
When humans are faced with a traumatic experience, our brains kick in with survival mechanisms. These mechanisms are the familiar fight or flight response, but can also include the freeze response - which occurs when we are terrified or feel that there is no chance of escape.
In this talk I will explain the background of fight, flight, and freeze, and how it applies to organizations. Based on my own experiences with post-traumatic stress (PTS), I will give examples and suggestions on how to identify your own organizational trauma and how to help heal it.
Sufferers of post-traumatic stress continue to feel these fight, flight, and freeze responses long after the trauma has passed, because our brains are unable to differentiate between the memory of trauma and an actually occurring event. When activated or triggered, the brain reverts to these behaviors, which are then expressed in the person’s body (through posture, disassociation, muscle tension, etc).
The same can occur to organizations - once an organization has experienced a trauma (a large outage, say) the “memory” of that trauma leads to a deregulated state whenever activated (by symptoms of similar indicators, such as system alerts, customer issues, and more). The organization will insist on revisiting the same fight, flight, or freeze response as the embedded trauma has caused, which, like a triggered post-traumatic stress sufferer, is a false equivalency.
One of the treatments for post-traumatic stress is Eye Movement Desensitization and Reprocessing (EMDR), in which the patient’s difficult memories are offset with a positive association that is reinforced through external stimuli. The same can be done for organizations - removing the inaccurate traumatic associations of previous outages and organizational pain through game days, and other techniques, we can reduce the “scar tissue” of our organization and move forward in a balanced manner.
In this talk, I will explain the background of fight, flight, and freeze, and how it applies to organizations. I will give examples and suggestions on how to identify your own organizational trauma and how to help heal it. -
keyboard_arrow_down
Sally Sloley - Personal Kanban: Making your life better, one sticky note at a time.
45 Mins
Talk
Beginner
Kanban isn’t just for work. How I reluctantly learned to use Kanban to get my personal life in order and why I’ve never been happier.
-
keyboard_arrow_down
Michael Migliacio / David Nguyen - What is DevOps Coaching? The Art, Science, and Culture Of Engineering Enablement (DevOpsコーチングは何ですか?技術、文化、科学)
Michael MigliacioLead Software Engineering CoachTargetDavid NguyenLead EngineerTargetschedule 4 years ago
45 Mins
Talk
Beginner
井の中の蛙大海を知らず - "A frog in a well does not know the great sea."
Software engineering may be difficult, but fostering a working environment that enables skilled engineers to perform their best can sometimes seem downright impossible. Every day, many engineering teams are battling a messy whirlwind of forces like unmovable deadlines, impostor syndrome, psychological safety issues, personnel/leadership conflicts, fierce technological preferences, and more. With teams more distributed all over the world than ever before, cultural differences can exacerbate many of these difficulties.
As a software engineering coach, my job is to not only introduce new technology to software teams currently looking to transition to DevOps, but to strengthen their working relationships within their organization. Coaches aren’t simply technical instructors. Rather, they are change agents that guide a team towards better outcomes for their project as well as their interactions with one another.
In this presentation, I will discuss tips, tricks, and techniques that technical leaders and managers alike can utilize to better coach engineering teams, including concepts like the definition of empathy (and, more importantly, what doesn't count), the trust-influence relationship model, introducing new technologies in a meaningful and consumable way, and a 5-step process to provide teams confidence to own their new DevOps solutions moving forward.
スピーカーは日本語が分かるから、セッションコンテンツの日本語版もあります。
-
keyboard_arrow_down
Matty Stratton - The Psychology of Chaos Engineering
45 Mins
Talk
Intermediate
Chaos Engineering, failure injection, and similar practices have verified benefits to the resilience of systems and infrastructure. But can they provide similar resilience to teams and people? What are the effects and impacts on the humans involved in the systems? This talk will delve into both positive and negative outcomes to all the groups of people involved - including users, engineers, product, and business owners.
Using case studies from organizations where chaos engineering has been implemented, we will explore the changes in attitude that these practices create. This talk will include a brief overview of chaos engineering practices for unfamiliar members of the audience, but the main focus will be on human elements. I will discuss successful implementations, as well as challenges faced in teams where chaos was a “success” from a technical perspective, but contained negative impact for the people involved.
After seeing this talk, attendees will have a better understanding of the human factors involved in chaos engineering, good practices to care for the people and teams working with chaos, and be even more excited about this practice. -
keyboard_arrow_down
David Nguyen / Michael Migliacio - Modern Web Testing with Cypress
David NguyenLead EngineerTargetMichael MigliacioLead Software Engineering CoachTargetschedule 4 years ago
120 Mins
Workshop
Advanced
In today’s ever-changing and competitive landscape of online retailers, companies invested heavily into end to end testing practice to ensure the best quality for their product. The seamless shopping experience between mobile and physical store is the universal high bar for success.
Retailers that embraced omni-channel mobile first strategy often build their system top a multi-tenant architecture. In order to make all tenants work in harmony as one unit, across all engineering teams, Test Driven Development (TDD) must be one of the Objective Key Result (OKR). The center piece of that effort is the investment in automated end-to-end testing. During this session, come join David for a in depth look of how Cypress.io enabled dev team incorporate automated testing for both internal web applications, and its public facing e-commerce site.