JenkinsでVSTestを走らせる(ASP.NET)。
ポイント
- MSTestとVSTestは別のもの
- nugetで接続できないときはProxyの設定を疑う
- VSTest Runnerは使えない
- カバレッジはVisual StudioのEnterpriseエディション以上
ざっくり
ビルドは普通にMSBuildで行う。VSTestではテスト結果は自動でファイル名を命名する。また、VSTest RunnerはなんかばぐってるぽいのでWindowsバッチコマンドで実行する。さらにテスト結果はファイル名が自動で振られるので、テスト結果を発行するために、Windowsバッチコマンドでテスト結果ファイルをリネームする。
詳細
MSTestとVSTestは別のもの
良く出回っているのはMSTestのエントリ。テスト実行結果のファイル名が指定できるとか、Runnerの設定とか出てるけど、違う。VSTestではテスト実行結果のファイル名は指定できない。VSTest Runnerはばぐってるので使えない。
nugetで接続できないときはProxyの設定を疑う
buildが全然終わらずに接続できないときはProxyが悪さしている可能性がある。nugetコマンドでプロキシを設定するとnuget.configというファイルができる。
VSTest Runnerは使えない
VSTest RunnerはテストのDLLが見つからないというエラーになるので、使わないのが吉。
カバレッジはVisual StudioのEnterpriseエディション以上
カバレッジもネットでサンプル出てるけど、これはEnterpriseエディション以上なので、Professionalの人はあきらめましょう。
青年海外協力隊でラオスの大学で担当したプログラミングの授業
もう何度も書いてるかもだけどブログだし、まぁいいか。メールで聞かれたので備忘録がてら書いておく。ラオス国立大学工学部で授業をしてたのでその内容について。
担当した授業は?
アンドロイド入門。週1回90分の授業を15回行った。複数のクラスを受け持っていた。 この15回のうち、8、13、14、15回は授業ではなく、試験やチーム演習で、大まかなスケジュールは以下の通り。
第01回:導入、評価の説明、QAサイトへの登録の案内、軽くアプリを作る
第02~07回:画面遷移、画面部品、デザインなど
第08回:中間テスト(択一式のペーパーテスト)
第09~12回:テスト返却、デザイン、DB、Webサービスを使ったアプリ
第13回:チーム演習1回目
第14回:チーム演習2回目
第15回:チームごとに開発したアプリの発表
チーム演習では、学生同士で3人までのグループを作ってもらい、 企画、開発、発表をやってもらった。
どんな学生に教えた?
対象の学生は工学部の機械学科、情報学科の3年生、4年生。1クラス40人程度のうち2~3人は個人でもプログラムを書いていて、 それ以外の学生はDB、Java、PHPの授業を履修済で授業以外では プログラムは書いたことがないといった感じ。
名簿上は1クラス30~40名だが、出席数ベースでは20~30名くらい。 たまにアシスタントの先生が来て学生の質問に答えてくれたりした。
成績評価
成績評価は以下の基準で行いました。
出席:20%
発言:20%(質問サイトへの投稿)
中間試験:30%
アプリ発表:30%(アプリの機能、デザイン、発表の観点で採点しました)
アプリは作りたいものがない、プログラミングが苦手な学生のためにサンプルアプリをいくつか用意し、それをブラッシュアップするのでも可とした。
コースデザイン
内容は、Androidの入門書から色々と引っ張ってきたり、Androidのデザインのオンラインコースを見て勉強したりして、改善。
ツール
授業の連絡などのためにFacebookグループを作成し、休講などの連絡を流した。
他にはClasstinも使ったが、パスワード再発行とか頻発。
今ならGoogle Classroomを使ってみたい。
職場の営業さんが案件を進める際に考えていることを聞いた
まずは、SE目線のどういうシステムを作るかじゃなく、業務の全体像を把握することから始める。全体を変えるんじゃなくて、全体像の中の一部を変える。SEは分かりたいところから把握していくけど、全体像をざっくりとらえるのが重要。
会社の動きを押さえるのに経営を学ぶのが大切。ITはあくまで記憶と計算の道具。
国語と数学も大事。文章を理解する読解力で流通している情報を把握して、足りない情報を的確に質問する。ディベート的に、何が言えるかと、何が言えないかを質問で明らかにする。
また、経済を学ぶと予想ができる。
データ、統計から過去を把握して、情報から将来を予測する。
若手エンジニアと話す(WordPressテーマのレイアウト崩れ、アジャイルと背景の哲学、テスト駆動開発・テスト手法、知識体系)
近くのマックで前のプロジェクトで一緒だった若手エンジニアと、その大学の後輩と話す。
トピック
- WordPressの困りごと
- Webマーケティング
- アジャイルと背景の哲学(ひろきのだいちさんのブログ)
- STRUTSのイテレータの困りごと、考え方
- テスト駆動開発・テスト手法
- PMBOKやその他の知識体系
WordPressの困りごと
後輩さんが個人で請け負っているWeb開発でThemeを改造しようとしたらレイアウトが崩れたとのこと。Amoreというテーマを導入した。このテーマでは3つのアイコンを表示できる。これを8つに増やそうと(コードサンプルを見ながら)編集したがうまくいかず、マウスオーバー時のアニメーションが追加したものについて崩れている。応急処置としてうまく行っているアイコンのHTMLをそのままPHPに追加した。現象発生時のDOMの構造は上手く動いているものと同じように見えたが半角スペースなどが悪さをしていたのかも。Atomを使っていたがデフォルトで差分比較が出来ないのでパッケージを追加しておいた。
アジャイルと背景の哲学(ひろきのだいちさんのブログ)
gihyo.jp
最近読んで面白かった本として『エンジニアリング組織論への招待』を紹介。この本はソフトウェア開発、システム開発で行われるエンジニアリングとは何かという問いからスタートする。エンジニアリングとは、何かを実現する実学で、そこには不確実性が伴う。その不確実性を減らすのがエンジニアリングとして、不確実性の対処の仕方を分野ごとに紹介している。
で、筆者の広木さんのブログエントリでとても面白かったので紹介。
hirokidaichi.hatenablog.com
このブログエントリで彼はアジャイルをプロジェクト管理手法としてだけでなく、社会との関わり方として捉えているように感じた。彼はアーレント、レッシグなどの社会理論の研究を引いて、第二次大戦前のドイツの社会を説明し、それと現在の日本が類似していると指摘。アジャイルの取り組みがその解決策になるんじゃないかと提唱している。
STRUTSのイテレータの困りごと、考え方
若手エンジニアはレガシーシステムへの機能追加で困っているとのこと。STRUTS1でリスト形式のデータを表示、入力、保存を行いたい。イテレータの値は表示されるが編集して、保存ボタンを押してもデータがリストに代入されていない。STRUTSは大昔にやったことがあるかないかくらいだったのでその範囲でアドバイス。まずは、イテレータの記述の仕方が合っているか確認。どうも怪しい。そして、そもそも、STRUTSがイテレータをHTMLにどう展開するか、そしてクライアントからどのようにデータが送信され、リストに変換されるかを考えた。name属性か、id属性を元にPOSTされたデータからMODELクラスを生成しているはず。という話をした。
テスト駆動開発とよく言うユニットテストの違い
和田卓人さんの訳した『テスト駆動開発』や講演ビデオを見て最近はまっているという話をした。
そこで出てきたのが、テスト駆動開発とユニットテストの違いって何という質問。これは整頓できてなかった。テスト駆動開発はプログラマが開発を行う際にそのガイドとしてテストを利用するというのが異なる。また、テスト駆動開発では、テストが振る舞いを明らかにして、リファクタを助けるものとして認識されている。ユニットテストでは、そこまでの役割を求めず期待した振る舞いをするかどうかを検証するものとして利用されている、のでは?また、一般に言うユニットテストではテストは品質保証のために行うが、テスト駆動開発では品質保証はまた別のプロセスとして行う、のでは?
PMBOKやそれに似た知識体系
上の話をしていた時に、定期的に見ているブログの話を紹介。
brevis.exblog.jp
プロジェクト管理、生産管理などの面白い記事が投稿されている。で、PMBOKを紹介したら聞いたことあるような、ないような。PMBOKとはProject Management Body of Knowledgeの略で、ITに限らず、プロジェクトを実施する際の進め方のお作法をまとめたもので、ここに出てくるプロセスはプロジェクトでほぼ必ず起きる。なので、こういったのを知っておくとはまりどころを回避できるよと言う話をした。他には、ITIL、Information Technology Infrastructure Libraryを紹介。情報システムの導入、運用、改善のお作法をまとめたもの。他には、BABOK Business Analysis Body of Knowledgeといって、業務分析の手順を紹介したもの。あとは、EA Enterprise Architectureも紹介。現在の状態を把握して、次に理想形を設定、そして、最後に次期システムの構成を設定するというもの。
Information Technology Infrastructure Library - Wikipedia
BABOK - Wikipedia
エンタープライズ・アーキテクチャ(EA) | 日経 xTECH(クロステック)