SlideShare una empresa de Scribd logo
1 de 29
Salesforce Developer Group Rookies
#08
2018/04/19(木)@株式会社ビズリーチ
本日のメニュー
2
• 19:00~19:10 ルーキー会の簡単な説明
• 19:10~19:20 自己紹介タイム
• 19:20~20:40 モブプログラミング
• 20:40~20:50 成果発表
• 20:50~21:00 締め&集合写真タイム
• 21:00~21:30 ご歓談タイム
注意事項
会場の様子は写真に撮って公開される可能性があります。予めご了承下さい。
(顔出しNGの方がいらっしゃいましたらサッと隠れるか運営までお知らせ下さ
い)
今日の進行役
3
讃岐 行(Sanuki Ikou)
株式会社テラスカイ
Tw:@i_sanuki
FB:isanuki
なにやっている人?
 Salesforce導入コンサルティング、開発
 社内ツール開発、トレーニング
 Salesforce Developer Group、Developerルーキー会の運営
 ユーザグループ「新機能照らす会」のリーダー
 TrailblazerCommunityにちらほら
SFDG Rookiesの紹介
これからSalesforceを学ぶデベロッパーのコミュニティ
4
運営メンバー
5
株式会社テラスカイ
讃岐 行
@i_sanuki
株式会社フレクト
齊藤 俊
株式会社テラスカイ
須山 洋輔
@suyaman_jp
株式会社NSD
小林 亮理
@ryosuke921186
ServiceCloud
の達人
Apexの神MVP テストの鬼
今日の参加者割合
6
7
3年未満
2年未満
1年未満
未経験
3年以上
未経験 半年未満 1年未満 2年未満 3年未満
SFでの
開発経験
プログラミングの経験
2
1
3
2
1
1
1
5 1
3年以上
4
2
1
半年未満 2
人数=30
1
1
1 1
8
自己紹介タイム
■Salesforceでのプログラミング経験年数
■普段どんなことやってる?
■今日の意気込み
今日のお題である
「テスト」の基本
概要
Apexは通常SandboxやDE組織で行われ、完成したら本番環境にリ
リースされます。ApexのフレームワークではApexクラス/トリガーが
本番リリース時にテストされ、エラーが1つもなく、かつコードカバ
レッジがしきい値を超える場合のみリリースが成功します。
10
Apexクラス・
トリガー
Apexテスト
Sandbox/DE 本番組織
③リリース ⑤リリース成功
①開発
②テスト
⑥利用
Apexクラス・
トリガー
Apexテスト
④テスト Apexクラス・
トリガー
Apexテスト
何のためのテスト?
① 開発したプログラムが正しく動くことの確認
② コード修正した時のデグレの影響確認
③ 自動テストによる効率化
11
Force.comはプラットフォームとして「テストを書かないとリリースで
きない」ですが、開発者がテストを書く理由はリリースのためだけでは
ありません。
75%のコードカバレッジがあり、リリース可能な状態となる
Apexテストクラスの例
テストは専用のApexクラスを作成する必要があります。
12
// Accountを取り扱うレコードアクセス用クラス
public class AccountDao {
// 指定したIDのAccountレコードを取得・返却するメソッド
public static Account getAccountById(Id accountId) {
return [
SELECT Id, Name FROM Account
WHERE Id =: accountId
];
}
}
@isTest
Private class AccountDaoTest {
@isTest static void getAccountById_ok() {
Account acc = new Account();
acc.Name = ‘test’;
Insert acc;
Test.startTest();
Account selectedAccount =
AccountDao.getAccountById(acc.Id);
Test.stopTest();
System.assertEquals(True, selectedAccount != null);
System.assertEquals(‘test’, selectedAccount.Name);
}
}
プロダクションコード テストコード
検証用のテストレコードを作成
テストしたいクラスを
呼び出し
想定通りに動作
しているか確認
テストコードに関するお約束や心得について
13
大体の場合、テストするクラス名の前か後ろに「Test」という名前をつ
けて作成。※プロジェクトや開発者によって異なる
テストクラス名
アプリケーションのテストに使用するコードのみを含むクラス、および
メソッドを定義する場合に使用する
@isTest アノテーション
基本的にテストクラス自体が他クラスから参照されることはないため
※テスト用のユーティリティクラスなどの場合は、public にする
アクセス修飾子は private
テストメソッドのルールとして static メソッドにすることstatic メソッド
明示的にここからここまでがテスト実行部分と表すために必ず使う
※startTestとstopTestは、その範囲外で行ったガバナ制限を緩和する
startTest / stopTest
引数による処理分岐など、テストは1パターンだけでは終わらない
※前提条件によってもパターンはわかれる
複数のテスト
テストの実行方法
リリース時を除いて、テストを実行する代表的なものについて
14
• Apex クラスメニュー
– 設定メニューのApexクラス画面上の「すべてのテストを実行」
• Apex テスト実行メニュー
– 設定メニューのApexテスト実行からテストクラスを選択
• 開発者コンソール
– 開発者コンソールのTestメニューで実行
• クライアント型の開発ツール
– EclipseやVSCode
• Force.com migration tool(中級者向け)
– メタデータAPIを使ったテストの実行
テストフレームワークの仕様
Force.com のテストフレームワークの仕様について
15
本番組織へリリースするには以下の条件をクリアする必要がある
• エラーがないこと
• 組織全体のApexコードに対して75%以上のカバレッジがあること
• トリガーは1%以上のカバレッジがあること
リリース
テスト内におけるオブジェクトへの変更は、たとえDMLを実行してもコミット
されません。(自動採番のカウントだけは例外)
コミット
テスト内では組織に登録済みのトランザクション系オブジェクトのレコードに
はアクセスできません。また、テストクラスは、どの組織に移行しても動くよ
うに作るというのが大切(ただし、例外もあり@isTest(SeeAllData=true))
レコード
おさらい
• Apexにはテストフレームワークがある
• プロダクションコードに対して、テストコードを記述する
• テストメソッド内でプロダクションコードを実行して結果を検証する
• 本番組織へリリースするには、テストのリリース条件がある
• テスト内での変更は組織にコミットしない
• テスト内では組織に登録済みのレコードにアクセスできない
16
Let's モブプログラミング
 ドライバーを一人決め、それ以外はナビゲータとしてサポート
 ドライバーが詰まっても、周りは優しくサポート!
 疑問点があったら遠慮なく周りの人やメンターに聞いてみよう!
 適度なところでドライバーを交代しよう
 ~20:40まで(チーム内での振り返り含めて)
17
今日のお題:テストメソッド
18
お題① テストの実行方法を学ぶ
お題② Assertを使って戻り値の検証
お題③ SOQLを含むメソッドのテスト
お題④ 引数ありのメソッドやifの分岐
お題⑤ DML(レコード保存)のテスト
お題⑥ テストの効率化(ファクトリークラス)
https://drive.google.com/drive/folders/1p2KtM1xR3m9f5qFMBfT4V3yhDUWmeTyE
お題のクラスファイル
お題① テストの実行方法を学ぶ
「rookiesNo1.cls」に対してのテストメソッドを作成してください。
※テストクラスを作成し、テストクラスから下記メソッドを呼ぶ
値が想定通りかの検証(assert)は①では不要です。
19
お題② Assertを使って戻り値の検証
「rookiesNo1.cls」に対しての戻り値も検証するテストメソッドを作
成してください。
• お題①とは別のメソッドを作成すること
• assertEqualsを利用する
• 意図的にassertExceptionを発生させて、try~caatchで拾えないことも確
認しよう
20
お題③ SOQLを含むメソッドのテスト
「rookiesNo3.cls」の
getAccounts()をカバーするテス
トメソッドを作成してください。
• テスト前にAccountを1件以上作成
する
• 戻り値を受けとり検証すること
21
お題④ 引数ありのメソッドやifの分岐
「rookiesNo3.cls」の
getAccounts()をカバーするテスト
メソッドを作成してください。
• テスト前にAccountを2件以上作成
する
• getAccountById()にあるif文の分岐
もそれぞれカバーしよう
22
お題⑤ DMLのテスト
「rookiesNo5.cls」の取引先オブジェクトのレコードを作成する
createAccount()をカバーするテストを作成してください。
• レコードが正しく作成されたか検証しよう
• レコードが作成されない(Nameがnull)場合のテストもしよう
23
お題⑥ テストの効率化
「rookiesNo.cls」のgetSufficientAccounts()をカバーするテストを
作成してください。
• レコード500件作成はベタで書かずTestFactoryクラスに件数を引
数で受けとるメソッドを作成して、まとめて作成できるように
24
成果発表
チームごとにお願いします!
■代表者1名から
どんな感じに進めたか(難しかったとか?)
どこまで、できたか
などなど
■メンターから
フィードバック
25
Trailblazer Community
Salesforceのユーザやアドミンや開発者が集まるコミュニティ
26
• https://success.salesforce.com/_ui/
core/chatter/groups/GroupProfilePa
ge?g=0F93A000000HTtr
【開発者向け】
• Salesforce Developer Group ルーキー会
• Tokyo Salesforce Developer Group
• Salesforce女子部
など
今日の勉強会レポートを書いてくれる方
大募集!
DGルーキー会 次回予告
• 5月24日(木)19:00~
• 場所はテラスカイ新オフィス@日本橋
27
各種イベント紹介
• 4月25日(水) 19:00- TrailheaDX 2018 Global Gatherings
– https://www.meetup.com/ja-JP/Tokyo-Salesforce-Developer-Group/events/247044256/
• 5月15日(火) 19:00- Salesforce女子部 #17
– https://sfggjp.connpass.com/event/84736/
• 5月1日~6月29日 Trailhead活用選手権(メンバー募集4/20まで)
– https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000001sOH
&fId=0D53A00003apT1d
28
Salesforce Developer Group ルーキー会 #08

Más contenido relacionado

La actualidad más candente

La actualidad más candente (11)

SFDGR #5
SFDGR #5SFDGR #5
SFDGR #5
 
Sfdgr 14 20181220_v2.1
Sfdgr 14 20181220_v2.1Sfdgr 14 20181220_v2.1
Sfdgr 14 20181220_v2.1
 
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
 
SFDGR#04
SFDGR#04SFDGR#04
SFDGR#04
 
Terakoyaforce 200125 ver2
Terakoyaforce 200125 ver2Terakoyaforce 200125 ver2
Terakoyaforce 200125 ver2
 
#RoadToDF19 - Dreamforceでやりたいこと
#RoadToDF19 - Dreamforceでやりたいこと#RoadToDF19 - Dreamforceでやりたいこと
#RoadToDF19 - Dreamforceでやりたいこと
 
20190809 ルーキー会 × TERAKOYAFORCE
20190809 ルーキー会 × TERAKOYAFORCE20190809 ルーキー会 × TERAKOYAFORCE
20190809 ルーキー会 × TERAKOYAFORCE
 
『企業とカイワする』というエンジニアの選択肢 〜自社サービス「カイワジョブ」立ち上げ舞台裏〜 #guildconf
『企業とカイワする』というエンジニアの選択肢 〜自社サービス「カイワジョブ」立ち上げ舞台裏〜 #guildconf『企業とカイワする』というエンジニアの選択肢 〜自社サービス「カイワジョブ」立ち上げ舞台裏〜 #guildconf
『企業とカイワする』というエンジニアの選択肢 〜自社サービス「カイワジョブ」立ち上げ舞台裏〜 #guildconf
 
なぜ、アジャイル開発は うまくいかないのか? プロダクトオーナーをサポートすれば、きっとうまくいく!
なぜ、アジャイル開発は うまくいかないのか? プロダクトオーナーをサポートすれば、きっとうまくいく!なぜ、アジャイル開発は うまくいかないのか? プロダクトオーナーをサポートすれば、きっとうまくいく!
なぜ、アジャイル開発は うまくいかないのか? プロダクトオーナーをサポートすれば、きっとうまくいく!
 
Japan dreamin' 2019 SJAG発表資料
Japan dreamin' 2019 SJAG発表資料Japan dreamin' 2019 SJAG発表資料
Japan dreamin' 2019 SJAG発表資料
 
Japan Dreamin2019 Salesforce Developer Group Rookies
Japan Dreamin2019 Salesforce Developer Group RookiesJapan Dreamin2019 Salesforce Developer Group Rookies
Japan Dreamin2019 Salesforce Developer Group Rookies
 

Similar a Salesforce Developer Group ルーキー会 #08

Similar a Salesforce Developer Group ルーキー会 #08 (20)

WEB内定者フォローパック
WEB内定者フォローパックWEB内定者フォローパック
WEB内定者フォローパック
 
WEBインターンパック
WEBインターンパックWEBインターンパック
WEBインターンパック
 
WEB内定者フォローパック
WEB内定者フォローパックWEB内定者フォローパック
WEB内定者フォローパック
 
#7はじめてのIT勉強会LT
#7はじめてのIT勉強会LT#7はじめてのIT勉強会LT
#7はじめてのIT勉強会LT
 
【セッション資料】サイボウズのチームリーダーと学ぶ、チーム作りの舞台裏_Cybozu Days 2022
【セッション資料】サイボウズのチームリーダーと学ぶ、チーム作りの舞台裏_Cybozu Days 2022【セッション資料】サイボウズのチームリーダーと学ぶ、チーム作りの舞台裏_Cybozu Days 2022
【セッション資料】サイボウズのチームリーダーと学ぶ、チーム作りの舞台裏_Cybozu Days 2022
 
リモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークリモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワーク
 
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)
 
アジャイルサムライ壱の太刀 - 説得しないはじめないアジャイル開発のはじめ形 -
アジャイルサムライ壱の太刀 - 説得しないはじめないアジャイル開発のはじめ形 -アジャイルサムライ壱の太刀 - 説得しないはじめないアジャイル開発のはじめ形 -
アジャイルサムライ壱の太刀 - 説得しないはじめないアジャイル開発のはじめ形 -
 
サイボウズの生産性を高める生産性向上チームと開発文化
サイボウズの生産性を高める生産性向上チームと開発文化サイボウズの生産性を高める生産性向上チームと開発文化
サイボウズの生産性を高める生産性向上チームと開発文化
 
SEO業者事業仕分け論
SEO業者事業仕分け論SEO業者事業仕分け論
SEO業者事業仕分け論
 
Visual Studio 拡張機能の作り方
Visual Studio 拡張機能の作り方Visual Studio 拡張機能の作り方
Visual Studio 拡張機能の作り方
 
Salesforce dg rookies_20171114
Salesforce dg rookies_20171114Salesforce dg rookies_20171114
Salesforce dg rookies_20171114
 
DL-D_ver1.pdf
DL-D_ver1.pdfDL-D_ver1.pdf
DL-D_ver1.pdf
 
2017-08-17 サイボウズワークショップ発表資料
2017-08-17 サイボウズワークショップ発表資料2017-08-17 サイボウズワークショップ発表資料
2017-08-17 サイボウズワークショップ発表資料
 
Lifebear beernight 1_for_share
Lifebear beernight 1_for_shareLifebear beernight 1_for_share
Lifebear beernight 1_for_share
 
「なぜクリエイティブ制作は自動化できないのか?
 〜広告史を巡って〜」セプテーニ加来幸樹×フクロウラボ林田朋也
「なぜクリエイティブ制作は自動化できないのか?
 〜広告史を巡って〜」セプテーニ加来幸樹×フクロウラボ林田朋也「なぜクリエイティブ制作は自動化できないのか?
 〜広告史を巡って〜」セプテーニ加来幸樹×フクロウラボ林田朋也
「なぜクリエイティブ制作は自動化できないのか?
 〜広告史を巡って〜」セプテーニ加来幸樹×フクロウラボ林田朋也
 
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜
 
たぶん大規模組織でのChatWork活用
たぶん大規模組織でのChatWork活用たぶん大規模組織でのChatWork活用
たぶん大規模組織でのChatWork活用
 
[enPiT筑波大ワークショップ(成果発表会)情報交換会]全部スクラム!~SIerで大切だったこと、サービサーで大切だったこと~
[enPiT筑波大ワークショップ(成果発表会)情報交換会]全部スクラム!~SIerで大切だったこと、サービサーで大切だったこと~[enPiT筑波大ワークショップ(成果発表会)情報交換会]全部スクラム!~SIerで大切だったこと、サービサーで大切だったこと~
[enPiT筑波大ワークショップ(成果発表会)情報交換会]全部スクラム!~SIerで大切だったこと、サービサーで大切だったこと~
 
スマホSEOって何すればいいの?&質問コーナー
スマホSEOって何すればいいの?&質問コーナースマホSEOって何すればいいの?&質問コーナー
スマホSEOって何すればいいの?&質問コーナー
 

Último

Último (11)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

Salesforce Developer Group ルーキー会 #08