SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
ソースコードを読んでみよう
WACATE	
  2017	
  WINTER
自己紹介
l名前 :
l角田 俊(ツノダ シュン)
l仕事 :
lソフトウェア開発
l活動 :
lWACATE実行委員(2回目)
lNaITE(長崎IT技術社会)実行委員
このセッションの目的
l目標
◦ソースコードをなんとなく読めるようになる
◦ソフトウェアがどう作れているのかを理解し、欠陥を推測
しようという気になること
l本セッションでは、開発経験のある人、ベテランの人は
復習や教育の参考の場として活用してください
質問
◦普段何をインプットとしてテストを考えていますか?
質問
◦普段何をインプットとしてテストを考えていますか?
◦ 仕様書?
◦ 過去の不具合内容?
◦ 経験?
◦ 直感?
質問
◦普段何をインプットとしてテストを考えていますか?
◦ 仕様書?
◦ 過去の不具合内容?
◦ 経験?
◦ 直感?
どれも大切なものです
他にもまだありますか?
テストをする上で大切なもの
◦普段何をインプットとしてテストを考えていますか?
◦ 仕様書
◦ 過去の不具合内容
◦ 経験
◦ 直感 ...
◦ ソフトウェアの知識
↑ 本セッションで扱うもの
ソフトウェアテストとは?
テストには以下のような目的がある。
◦欠陥を摘出する。
◦対象ソフトウェアの品質レベルが十分であることを確認す
る。
◦意志決定のための情報を示す。
◦欠陥の作りこみを防ぐ。
ISTQBテスト技術者資格制度
Foundation	
   Level	
  シラバス 日本語版 Version	
  2011.J02
http://jstqb.jp/dl/JSTQB-­‐SyllabusFoundation_Version2011.J02.pdf
ソフトウェアテストとは?
テストには以下のような目的がある。
◦欠陥を摘出する。
◦対象ソフトウェアの品質レベルが十分であることを確認す
る。
◦意志決定のための情報を示す。
◦欠陥の作りこみを防ぐ。
ISTQBテスト技術者資格制度
Foundation	
   Level	
  シラバス 日本語版 Version	
  2011.J02
http://jstqb.jp/dl/JSTQB-­‐SyllabusFoundation_Version2011.J02.pdf
ソフトウェアテストとは?
ソフトウェアテストには、ソフトウェアの欠陥を見つける、
欠陥の作り込みを防ぐ目的があります。
ソフトウェア開発プロセス
要求
定義
基本
設計
詳細
設計
実装
単体
テスト
統合
テスト
システム
テスト
受け入れ
テスト
欠陥の作り込みを防ぐ 欠陥を見つける
※プロセスモデルはSQuBOK p169	
  V字モデルより
欠陥とは
コンポーネント又はシステムに要求された機能が実
現できない原因となる、コンポーネント又はシステム
に含まれる不備。
ISTQBテスト技術者資格制度
ソフトウェアテスト標準用語集 日本語版 Version	
  2.3.J02
http://jstqb.jp/dl/JSTQB-­‐glossary.V2.3.J02.pdf
ソフトウェアの知識が何故必要か
欠陥
= コンポーネント又はシステムに含まれる不備
ソフトウェア開発の知識があると、
これらが推測出来るようになることがある
ソフトウェアの知識とは
lソフトウェアが作られる仕組み
(ソースコードの仕組み)
lソフトウェアが動く仕組み
ソフトウェアの知識とは
lソフトウェアが作られる仕組み
(ソースコードの仕組み)
lソフトウェアが動く仕組み
ソースコードとは
ソースコード(英:	
  source	
  code)とは、コンピュータプ
ログラミング言語で書かれた、コンピュータプログラ
ムである文字列(テキストないしテキストファイル)の
ことである。
ASCII.jpデジタル用語辞典
https://kotobank.jp/word/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2-­‐5387
ソースコードを読むのは難しくない
ソースコードは簡単に読むことが出来る
ソースコードを読む取っ掛かり
◦コメントを読む
◦メソッド名、関数名などを読んでみる
コメントを読む
ソースコードには大体日本語や英語でコメントが記
載されている。
// 画面に表示する処理 ← コメント
fmt.println(msg); ← ソースコード
# write output
/* コメントの種類は他にも色々あります */
クラス名、メソッド名(関数名)を読んで
見る
処理ブロックとなるクラス名、メソッド名、関数名など
から処理内容を推察する。
func shopping (money int,i *Item) int{←名前から推察
return money – i.price
}
”main”という名前の関数はそこから処理が行われること
を表している事が多い。
ソースコードを読むための基礎知識
大体のプログラミング言語で共通している仕組みが
ある。
◦変数
◦条件文
◦繰り返し文
変数
値や、文字列は変数という入れ物に入れて使用す
る。
var num int = 1
var food string = “食べ物”
入れ物の大きさ(など)によって、入れられるものが
違うことに注意。ここにあるintとstringは大きさが異
なるため、入るものも違う。
条件分岐
条件が一致する時、処理が分岐する
if food == “たこやき” {
eat()
}
foodの中の文字列が”たこやき”だったとき、
eat関数が実行される
繰り返し
条件が一致するときのみ、処理を繰り返す
for i := 0; i < 10; i++ {
eat()
}
iがループ毎に加算され、0から9までの間eat関数が実
行される。
(10回実行される)
条件
条件の指定は複数の条件を組み合わせることも出
来る
if food == ”たこやき”
&& food2 == “たいやき”{
eat()
}
foodがたこやきで、food2がたいやきの時、eat関数が
実行される。(論理演算子)
条件
複数条件のときは、条件関係に注意する
if food == ”たこやき”
|| food2 == “たいやき”{
eat()
}
foodがたこやきか、food2がたいやきの時、eat関数が
実行される。
演習
時間:20分
最初10分間は一人で考えてみてください。
(スマホなどで調べながら)
その後、
分かった人は直接答えを言わないで、出来ていない
人が問題を解けるようにサポートしてください。
答え
感想の共有
ソフトウェアの開発経験がない人から順番に演習に
挑戦してみての感想を共有してみてください。
時間:6分間
(おまけ)ソースコードを読むには
ソースコードは頭から読むのは大変です。
出力されたエラーログなどをキッカケに解読していき
ましょう。
OSやエディタに付いている検索機能を使うと簡単で
す。
デモ
ソフトウェアの知識とは
lソフトウェアが作られる仕組み
(ソースコードの仕組み)
lソフトウェアが動く仕組み
ソフトウェアの動く仕組み
近年のソフトウェアは一から作成することはあまりな
い。
複数の既存技術が組み合わさってソフトウェアは
動作している。
既存技術
既存
技術
新規
使われている技術を理解しよう
今、自分が関わっているソフトウェアはどういう技術
が使われているか理解していますか?
◦プログラム言語
◦ライブラリ
◦データベース
◦プロトコル など
使われている技術を理解しよう
ソフトウェアは使われている技術によりテストが変
わってくることも有る
例)
メモリ消費量に着目したテスト
◦C/C++	
   :メモリ増加の有無を見る
◦Java :ガーベッジコレクションの頻度を見る
使われている技術を調べてみよう
今、自分が関わっているプロダクトで使用されている
技術を調べてみよう。
そこから、段々勉強して行きましょう。
まとめ
lソフトウェアの知識があると、欠陥がありそうな場
所を推測出来るようになることがある
lソフトウェアの知識とは
lソフトウェアが作られる仕組み
lソフトウェアが動く仕組み
更なるスキルアップを目指して
知識を付けて、自分のスキルアップを考える
的確なインシデントレ
ポートが書ける 欠陥が推測
できる
テストが自動化
出来る
更に上へ
開発、テスト、両方のスキルアップを目指して、両方
できるようになろう
開発 テスト
ソースコードを読んでみよう

Contenu connexe

Tendances

Asian Automation Alliance システムテスト自動化構築時の考え方と進め方の一例
Asian Automation Alliance システムテスト自動化構築時の考え方と進め方の一例Asian Automation Alliance システムテスト自動化構築時の考え方と進め方の一例
Asian Automation Alliance システムテスト自動化構築時の考え方と進め方の一例
Noriyuki Mizuno
 

Tendances (20)

ソフトウェアテスト入門
ソフトウェアテスト入門ソフトウェアテスト入門
ソフトウェアテスト入門
 
はじめてのScrum
はじめてのScrumはじめてのScrum
はじめてのScrum
 
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
 
20191104 na te_samplequestion_r03
20191104 na te_samplequestion_r0320191104 na te_samplequestion_r03
20191104 na te_samplequestion_r03
 
Asian Automation Alliance システムテスト自動化構築時の考え方と進め方の一例
Asian Automation Alliance システムテスト自動化構築時の考え方と進め方の一例Asian Automation Alliance システムテスト自動化構築時の考え方と進め方の一例
Asian Automation Alliance システムテスト自動化構築時の考え方と進め方の一例
 
レガシーコードとの付き合い方とテストでの話
レガシーコードとの付き合い方とテストでの話レガシーコードとの付き合い方とテストでの話
レガシーコードとの付き合い方とテストでの話
 
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightテストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
 
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
 
Scrumfestmikawa2021
Scrumfestmikawa2021Scrumfestmikawa2021
Scrumfestmikawa2021
 
テストエンジニア版RPG風スキルマップ JaSST'17東北
テストエンジニア版RPG風スキルマップ JaSST'17東北テストエンジニア版RPG風スキルマップ JaSST'17東北
テストエンジニア版RPG風スキルマップ JaSST'17東北
 
STAC 2015 自動家は見た ~自動化の現場の真実~ SIDE:マネージャ
STAC 2015 自動家は見た~自動化の現場の真実~ SIDE:マネージャSTAC 2015 自動家は見た~自動化の現場の真実~ SIDE:マネージャ
STAC 2015 自動家は見た ~自動化の現場の真実~ SIDE:マネージャ
 
Kaizen process with test #hackt
Kaizen process with test #hacktKaizen process with test #hackt
Kaizen process with test #hackt
 
現状分析→価値開発→仕様化&テスト設計の展開事例解説:仕様&テスト編
現状分析→価値開発→仕様化&テスト設計の展開事例解説:仕様&テスト編現状分析→価値開発→仕様化&テスト設計の展開事例解説:仕様&テスト編
現状分析→価値開発→仕様化&テスト設計の展開事例解説:仕様&テスト編
 
[JaSST nano] テストケースを作ってもらうときに気を付けていたことをお話するの
[JaSST nano] テストケースを作ってもらうときに気を付けていたことをお話するの[JaSST nano] テストケースを作ってもらうときに気を付けていたことをお話するの
[JaSST nano] テストケースを作ってもらうときに気を付けていたことをお話するの
 
テスト計画セッション
テスト計画セッションテスト計画セッション
テスト計画セッション
 
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
 
Et west テスト自動化_公開版
Et west テスト自動化_公開版Et west テスト自動化_公開版
Et west テスト自動化_公開版
 
○○したら受託開発が180°変わった
○○したら受託開発が180°変わった○○したら受託開発が180°変わった
○○したら受託開発が180°変わった
 
AAA2015 関西風と欧米風 2つのTest Automation Patterns
AAA2015 関西風と欧米風 2つのTest Automation PatternsAAA2015 関西風と欧米風 2つのTest Automation Patterns
AAA2015 関西風と欧米風 2つのTest Automation Patterns
 

Similaire à ソースコードを読んでみよう

XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
Shuji Morisaki
 
グループディスカッションの巻
グループディスカッションの巻グループディスカッションの巻
グループディスカッションの巻
Takashi Abe
 
PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)
nishikawa_makoto7
 
77回スピーカーを経験して分かったこと」共有します
77回スピーカーを経験して分かったこと」共有します77回スピーカーを経験して分かったこと」共有します
77回スピーカーを経験して分かったこと」共有します
Yuya Yamaki
 
【17-E-7】アジャイルUX宣言
【17-E-7】アジャイルUX宣言【17-E-7】アジャイルUX宣言
【17-E-7】アジャイルUX宣言
Tarumoto Tetsuya
 

Similaire à ソースコードを読んでみよう (20)

はじめてのテスト技法
はじめてのテスト技法はじめてのテスト技法
はじめてのテスト技法
 
今日から始めるEnvoyの開発
今日から始めるEnvoyの開発今日から始めるEnvoyの開発
今日から始めるEnvoyの開発
 
推し技術書「ユースケース駆動開発実践ガイド」
推し技術書「ユースケース駆動開発実践ガイド」推し技術書「ユースケース駆動開発実践ガイド」
推し技術書「ユースケース駆動開発実践ガイド」
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景
 
サポーターズ勉強会スライド 2018/2/27
サポーターズ勉強会スライド 2018/2/27サポーターズ勉強会スライド 2018/2/27
サポーターズ勉強会スライド 2018/2/27
 
グループディスカッションの巻
グループディスカッションの巻グループディスカッションの巻
グループディスカッションの巻
 
プレゼンテーション用資料作成のプレゼンテーション資料
プレゼンテーション用資料作成のプレゼンテーション資料プレゼンテーション用資料作成のプレゼンテーション資料
プレゼンテーション用資料作成のプレゼンテーション資料
 
情シスオフ 2nd Lt 20090620
情シスオフ 2nd Lt 20090620情シスオフ 2nd Lt 20090620
情シスオフ 2nd Lt 20090620
 
20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka
 
GCSアジャイル開発を使ったゲームの作り方
 GCSアジャイル開発を使ったゲームの作り方 GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
 
JaSST'19 Hokkaido 「テスト設計技法、その前に ~フェイスアップ、次にビルドアップ、その先にマインドアップ~」
JaSST'19 Hokkaido 「テスト設計技法、その前に ~フェイスアップ、次にビルドアップ、その先にマインドアップ~」 JaSST'19 Hokkaido 「テスト設計技法、その前に ~フェイスアップ、次にビルドアップ、その先にマインドアップ~」
JaSST'19 Hokkaido 「テスト設計技法、その前に ~フェイスアップ、次にビルドアップ、その先にマインドアップ~」
 
PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)
 
77回スピーカーを経験して分かったこと」共有します
77回スピーカーを経験して分かったこと」共有します77回スピーカーを経験して分かったこと」共有します
77回スピーカーを経験して分かったこと」共有します
 
Codevs5.0勉強会
Codevs5.0勉強会Codevs5.0勉強会
Codevs5.0勉強会
 
java-ja TDD 2nd
java-ja TDD 2ndjava-ja TDD 2nd
java-ja TDD 2nd
 
【17-E-7】アジャイルUX宣言
【17-E-7】アジャイルUX宣言【17-E-7】アジャイルUX宣言
【17-E-7】アジャイルUX宣言
 
Roo
RooRoo
Roo
 
アプリ開発を効率化する 方法あれこれ
アプリ開発を効率化する 方法あれこれアプリ開発を効率化する 方法あれこれ
アプリ開発を効率化する 方法あれこれ
 
議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」
 

ソースコードを読んでみよう