SauceLabsのメルマガで、良いチェックリストがあったのでメモ Mobile App Testing Checklist from https://saucelabs.com/resources/white-papers/dzone_2015_spotlight_guide_to_mobile_development-sauce_labs.pdf Device Checks ☐ Can the app be downloaded? ☐ Can the app be uninstalled? ☐ Can the app be updated? ☐ Can the app be updated when multiple updates exist? ☐ Can the app be downloaded on multiple operating systems? ☐ Can the app be redownloaded? ☐ Does…More
Author Archives: KazuCocoa
TensorFlowに関するメモ
『ユーザインタフェース開発失敗の本質』を読んだ
ユーザインタフェース開発失敗の本質を読みました。 名著である失敗の本質と同じ”失敗の本質”を題名に置いていたので、試しに購入してみました。 内容自体はよく耳にするユーザインタフェースが関わる開発における失敗パターンの説明に成ってます。それらを、原理主義として大別し、分析したというものでした。内容自体も経験とかけ離れてもないので、多分外れてはないと思います。日本軍の話ほど記憶には残りませんでしたが… ユーザビリティ原理主義 アルゴリズム原理主義(及びロンギング原理主義) すごいデバイス原理主義 多機能原理主義 人に「自然」なインタフェース原理主義 エージェント原理主義 ユーザの声原理主義 メタファー原理主義 原理主義は時折現実から目を背けるような傾向を示しますが、そこを認識した上でうまく付き合いたいですね。More
[Elixir]CustomLoggerのコードを追う
[Elixir]Loggerのconsole出力をファイルに書き出すではlogger_file_backendを使う、ところを残しました。そのついでに、CustomLogger付近とその作り方を見てみました。 参考: Elixir Meetup #1 Loggerの構造と拡張 from Sugawara Genki これを理解するために、ElixirのLoggerの実装群や、 GenEvent 付近が理解を助けてくれます。 https://github.com/elixir-lang/elixir/tree/v1.2.0/lib/logger/lib Elixir本体のloggerの参考 https://github.com/elixir-lang/elixir/blob/v1.2.0/lib/logger/lib/logger/backends/console.ex :console のbackendの書き方の参考 このようにしてcustomer loggerを作り、backendとして指定、利用できる https://github.com/elixir-lang/elixir/blob/v1.2.0/lib/logger/lib/logger/formatter.ex log levelの種類によって表示を整形する参考 https://github.com/elixir-lang/elixir/blob/v1.2.0/lib/elixir/lib/gen_event.ex Backendの拡張のために利用される 私も参考で貼ったスライドを参考に、練習のためにCustomLoggerを書いてみました。consoleの実装箇所を参考にすればここら辺もかける感じ。 This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden…More
[Elixir]Loggerのconsole出力をファイルに書き出す
少しLogに関する知見を得たので、 logger_file_backend とか使ってみることにしました。後でちゃんとCustomLoggerの知見を貯めておこう。 経緯 通常、Loggerはconsoleに書き出されます。しかし、そのままではIOが大変ですし、ファイルに書き出したりしていきたいです。そのため、ログをファイル出力する形にしたいなーと考えていました。 CustomLogger ElixirのLogger のドキュメントを少し読んでみると、デフォルトでは :console としてコンソールに結果が出力され、そこからカスタムするときはCustomLoggerを作れるよ、と書いています。 Custom backends を読んでみると、 GenEvent を使ってCustomLoggerを作ることができるのですね。そこで簡単なファイルへ書き出すCustomLoggerを作ろうとは思ったのですが、通常のLoggerの結果をファイルに書き出す、というシンプルなreposirotyを見つけたので、ひとまずはそれを使ってみることにしました。 Logger_file_backend Logger_file_backend https://hex.pm/packages/logger_file_backend https://github.com/onkel-dirtus/logger_file_backend 他に、Erlangのlagerをラップしたexlagerというのもあるのですが、Phoenixと一緒に使う方法とか探しているとElixirに組み込まれているLoggerを操作する系の方が安易だったので見送りました。 exloger https://github.com/khia/exlager 参考 elixir in production from Tsunenori Oohara 導入した時の、サンプルプロジェクトのコミット https://github.com/KazuCocoa/web_qa_vote/commit/035f5cd6e451cd84d5c3e4304cc0853e8ccf0672More
[Elixir]tear down in ExUnit as on_exit
teardownを探していたのですが、 ExUnit では、現在はteardownは on_exit のcallbackで実装されています。過去、この形に変更されたのですね。 http://elixir-lang.org/docs/v1.1/ex_unit/ExUnit.Callbacks.html#on_exit/2 使い方は以下。 setup の中で on_exit を定義します。これで、この setup_all や setup と同じサイクルで処理が実施されます。 ちなみに、 shouldi を使った時は上手く動作しなかった… 過去、私も書いていた… MIX AND OTP vol 1More
『自由をつくる 自在に生きる』を読んだ
自由をつくる 自在に生きる (集英社新書) を読みました。ちょうど東京に戻る新幹線の中で。 森博嗣さんが書かれていたので、惹かれて読んでみました。 自由、というものに対する哲学的な話なのかと思いましたが、予想通りそうではなかったことが良かったです。自由を如何に作るか、どのような制限を受け入れるか、といった普段の生活の中での話が中心でした。 最終的には自分で考える、というところが多かった印象です。 制限というのは自由であることよりも幸せであることも多く、そこらへんの考え方に触れることができたことが面白かったです。More
『ソフトウェアの欠陥予防 テストより確実な品質改善法』を読んだ
ソフトウェアの欠陥予防 テストより確実な品質改善法 を読みました。 ある市営図書館でたまたま見つけて、ふと手に取ってた書籍です。 この書籍は日本語訳する時に一部がっつり省かれた章があるらしいです。日本語で読んでかなり資産としてよかったので、つい英語版をポチってしまった。届いたら再読しようと思います。ご興味のある方はどうぞ => The Practical Guide to Defect Prevention (Developer Best Practices) 読んでみて、この書籍はテストエンジニアや品質にかかわる人は読んだほうが良さそうです。が、それ以上にソフトウェアで製品を開発し、それによってユーザに価値をより効率的に提供したい開発者やディレクターの人ほど読むべきだと感じました。特に、第1、2章くらいを。経済的な話など含めて、欠陥予防への取り組みの価値を知ることができるので。(ちなみに、これを書かれた方はWindows Vistの開発に関わった方々です。) 例えば、欠陥予防の取り組みが、破壊的なイノベーションへの投資へ資源を回すことができる余力を作ることに如何に貢献するかなどが書いています。欠陥予防を中心に取り組んだ組織と事後対応中心に取り組んだ組織とでは、彼らの計測結果の中で新機能やサービス改善への生産性に対して約2倍の差があったそうです。つまり、欠陥予防へ取り組んだ組織は、そうでない組織に対して新機能/新しい価値を生み出すための挑戦が多く実施可能だそうです。 この背景は想像の世界ではなく、開発時にかけるコスト、その保守対応時のコスト、機会費用などを持ってきて、費用という側面からの議論のコンテキストの上で行っていることがこの書籍の素晴らしいと感じたところです。 例えば、機能を開発している時に発見された不具合を事後対応に回すほどに、リリース前に対応していた時に比べて修正するまでに費用がかかります。それは、リリース後にユーザサポートにかかるコストや、その修正を行ったあとに行われるテスト作業など含めて考えると直感にも反しないでしょう。これは事後対応中心の組織における開発では考えられないことも多く、例えば自身の変更がmasterにマージされるまでは考慮するが、それ以外のことは考慮しない、というような 限られたソフトウェアのライフサイクルしか考慮できていない ことも関係あるそうです。 ここでいう欠陥/不具合とは、それを利用した人が欠陥/不具合と判断したものです。そのため、Specの通りに実装できていないものだけを欠陥と言っているのではないです。誤って行った設計など、より上の工程に埋め込まれた欠陥、などへも言及しています。 Microsoftの人の言葉はなかなか強いですね。論文などもちゃんとしているぶん。 幾つか頭に残った項目を以下につらつら。 メトリクス P133ページごろに書かれていたメトリクスの話。 例えばカバレッジなどのメトリクスに関して書いていました。よくあるソフトウェアテスト/品質関連の書籍同様、目指す計測可能な値の1つだと書かれてはいますが、それが銀の弾丸などではないとも書いています。コード変更量とかカバレッジの話で気構えるの、私の観測する範囲ではなんかテスト界隈の人よりも開発者が過剰に反応している環境の方が多いように見えるのですが、これは過去に何かあったのかな…その計測値が顧客への成果物になってたりする場所で働いて、それが絶対的だったりしたのかな。参考値としては多彩な情報を提供してくれますが、それだけをプロセス管理などの管理のために使うといった、誤った使い方は妥当ではないですね。 Microsoftのビジネス及び従業員のゴールは、SMARTを求められるそうな。 具体的 specific 計測可能 measurable 達成可能 achievable 結果重視 result oriented 期限付き time bound そのための要素としてGQMが言われていて、 Goal Question Metric を使うそうな。優先付けの数値は、一般に粒度があまり密でないほうが良いらしい。なので、hight 9/medium 3/low 1くらいの点数付けでメトリクスやタスクを優先付けするそうです。その重み付けには、開始の容易さ・メンテナンスの容易さ・有用性、現在収集されているか、信頼レベルなどらしいです。それを元にヒートマップを作るみたい。ヒートマップを作るの良いな。(P.140くらい) リスク分析 第8章ではリスク分析の話が書かれてました。リスク分析では、特性(characteristics)、量(amount)、インパクト(impact)、理由(reason)、オーナーシップ(ownership)でリスクレベルを判断するそう。コードの変更内容、変更量、変更による影響、変更理由、誰が変更しているか、だそうです。真っ当な感じですね。過去、現在から予測する。そこにフィードバックも入れる。 欠陥分類 第10章では欠陥分類法について言及してました。そこでは、以下の内容を前提に、欠陥を分類していく幾つかの実例を載せています。 変化には決まった種類がある: 人/文化/プロセスなど…More
2015年振り返りと2016年へ ~20代も最後~
2014年を振り返って、2015年を迎えたわけですが、ここで同じように振り返ってみます。主には表立っているところで。 来年の年明けは30歳になっていると思うと、なんだか身の引き締まる思いですね。想いだけ。 テストする人に対する技術的側面を広めることができて良かったと思います。私の観測する範囲では、求人にも多少なりとも良い影響をあたえられたと思います。私のところに募集して来ていただけるとなお嬉しい。 書籍関係はこちら => 2015年に新たに読んだ書籍群を振り返って 振り返り 仕事 サービスの開発に注力できるように開発プロセスが深化してきた(モバイルアプリ) リリースまでの流れの中で、全体最適を目指して時々のボトルネックを補ってきた成果でしょうか。優秀な方々が特筆して技術的な課題を解決する傍ら、広くを見ることができる人が外堀を埋めていく感じ。 採用の方向性などにも主導する形で関わるようになってきた。いろいろと難しい。 活動 基本、職種と役割、採用目的で頑張ってた社外発表が身をむすびつつある気がします。が、役割を広めて仲間をつくっていくって難しい。 テストエンジニアについていくつか話す機会ができた: 資料1、資料2 JaSST15、Tohokuに顔を出すことができた: JaSST Tokyo、JaSST Tohoku システムテスト自動化カンファレンス 2015で話をできた: 資料 他、広島でも小さな勉強会を その他、OSS活動もボチボチ。OSSというか、自分の課題を解決するための開発の成果を公開した、という感じですね。 Androidの資源計測のための droid-monitorであったり、ElixirでParameterized testを支援するためのex_parameterized、発端はモバイルアプリをテストするときのある問題を解決するためのproxy serverが欲しかったから作ったhttp_proxyなど。実装内容を追うと、そんなに混んだことはしていないですが。 SQuBOK読破会も1年が経過して、アドベントカレンダーまで書くほどになったのは思った以上の成果になりました。 専門性 業務でもテストコードとか結構書く(時間的な)余裕が出てきた Swift/Elixirを新たな言語として集中して学んだ 思いの外、Elixir/Erlangがしっくりきた。分散系はやっぱり興味の対象なのね。あと、あの手のMacroは使いやすい。 Android/iOSのEspressoやXCUITestなど、情報少ないところ進んだ 未成熟なところなので、結局はコードを追うことになる… SQuBOK読破会など、テスト/品質界隈への取り組みは継続 🙂 総括 社内外で色々取り組みを広げた1年だった気がします。外部への発信は社内の成果の賜物です。ありがとうございます。 ふと、もう6年くらい前になる学生の頃に考えていた位置情報と食を組み合わせたサービスを思い出しました。そのサービスはキャンパスベンチャーグランプリというちょっとした大会で小さな賞をいただけたのですが、収益性とか事業としてまだ多分に未熟だったこと、修論でそれ以上手を伸ばせてなかった為にそのまま投げてしまいました… そこらへんの経験と教授の影響があって、より良いサービスを創造して開発していく為に私はテストエンジニアという役割を進み始めたのだなと思い出しました。品質向上の為のいかなる活動にも関与できるじゃないですか。 やりたいこと 2016年、20代最後です。地に足をつけて歩み続けたい。 仕事 Web/Server側へも足を運ぶぞ!(ようやっと) 社内でxUnit Test Patternsの読書会やるので、そこらへんをかんばりたい 海外とかも 同じ職種を広げたい 欠陥から学ぶ、というところに焦点を当てた何か活動を進めたい KPTを回すとかではなく、もっと規模も大きく長期的なやつ 活動 デブサミ2016へも依頼頂けたので、ちゃんと役割をこなしたい こちらです =>…More
2015年に新たに読んだ書籍群を振り返って
Blogに書き起こした、2015年のうちに新たに読んだ書籍をまとめてみました。過去読んだことがあるものを必要に応じて読んだり、本棚やKindle見るとBlogに残していない書籍も散見されましたが、そちらは特別Blogには残してないです。書いていないものは、読んでなるほどね、で終わっている感じ。WIREDみたいな雑誌なんかも。 ここ1年たどると、48冊は読んでいたことになってました。本を読むこと自体、特に嫌いではないのですがこう見ると思いの外、技術的な書籍読んでいるのですね。小説類は除いても月に3冊くらい読んでいたことになります。移動時間あるってこういうところでは素晴らしい。 ざっと見てみると、今年は実際の実装よりの所であったり、デザインに対する所が中心だった、という感じでしょうか。テスト技術という所では有名どころは過去に読んでいたため、時折読み返したりしましたが新たなものを購入して読んで、という所まではいってないです。モバイル系の話とか、書籍になった時点で欲しい情報はだいぶ私自身が知見貯めてましたしね。 このリスト取得はWordpressのAPIから、特定のtagの投稿だけを取得して整形しました。コードはこちら。 https://github.com/KazuCocoa/wordpress_ex/blob/master/lib/wordpress_ex.ex 読んでて良かったと思ったものには★をつけています。 その中で、特に良かったものは以下。 『日本の大和言葉を美しく話す―こころが通じる和の表現』 『スマホに満足してますか?~ユーザインタフェースの心理学~ (光文社新書)』 『エクストリームプログラミング』 『システムの科学 第3版』 2016年はどんな書籍を読むかな。 programming language Elixir 『Elixir in Action』を読んで写経とかも合わせてやった★ 『Programming Elixir』を読んで、写経とかした★ [Elixir]macroのテストを書いてみる 『The Little Elixir & OTP Guidebook』のMEAPを読んでみた 『Programming Phoenix』を読んでみた(まだドラフト版) Swift [Swift]The Swift Programming Language(Swift2.1)を読んで写経して学んだ★ Ruby 『リファクタリング:Rubyエディション』を読んだ★ 『dRubyによる分散・Webプログラミング』を読んで分散処理を思い出す★ 技術 テスト関連 システムテスト自動化 標準ガイドを読んだ 駆け足でテストコードのプラクティスを学べる『実践JUnit』を読んだ★ 『BDD in Action』を読んだ 『ソフトウェア・テストの技法 第2版』を久しぶりに読んだ 『TPI NEXT』を読んで(テスト)プロセス改善を考える 「実践テスト駆動開発」の積読をようやっと読んだ★ モバイル ハイパフォーマンスブラウザネットワーキングを読んでモバイルアプリ開発(クライアント/サーバ含め)に関わる人が知っているべきだと思ったこと★ Testing…More