2010年7月27日
Facebookには専任のQAチームがいない
Facebookのテストエンジニアリグの技術リーダーによると、Facebookに専任のQAチームがいないらしいです ( Facebook has no dedicated QA team )。テストエンジニアはいる。どうやら大量の自動テストをエンジニアが作成/メンテナンスしていて、そのテストを断続的に実行し、テスト結果は通知が届くようにしているみたい。QAチームがやるようなことは自動化しているということか。
そんな話がQuora - What kind of automated testing does Facebook do?に掲載されています。下記にリスト部分のてきとう抄訳で紹介します(すべての内容をきちんと訳しているわけではないので、興味のあるかたはリンクを参照してください)。
- PHPコードに対してはPHPUnitを使って1500を超えるクラスのテストスイートを用意している。開発ツールでは自動的にコードカバレッジデータを使用して開発サンドボックスでの目立った変更をカバーするようなテストを実施している。
また、テスト結果はパッチがレビューにサブミットされたときに自動的にコードレビューツールに入る。 - ブラウザベースのテストではWatirを使用している。Watirのテストはサイトの機能テストをカバーしている(特にプライバシー関連機能にフォーカスしてる)。
- 全自動のWatirテストに加えて、フォームの入力とか面倒な作業を避けるための半自動のWatirテストもある。ただそれらは正しい動作かどうかの検証は(人が)別途する必要がある
- Javascriptのunit testingについてはJSSpecを使い始めている。
- バックグラウンドのサービスについては、サービスによって種々のテストフレームワークを使用している。オープンソースで提供しているプロジェクトではBoostやJUnitなどのようなオープソースのフレームワークを使用している。外部に公開しないプロジェクトではオープンソースのものや、C++のテストフレームワークを使ったりする。大半のバックエンドサービスはcontinuous integration / build system と結合していて、最新のソースコードに対して断続的にテストを実施している。テスト結果はデータベースに保存されるのと、通知システムに通知される
- HipHop は countinuous-integration system に若干のひねりをいれたシステムを持っていて、unit testの実行だけじゃなくてPHPUnitのテストも実行してくれる。テスト結果はplainなPHP interpreterで実行したPHPコードの結果と比較して、その振るまいの違いを見つける。
あと、テスト結果の通知の仕方も工夫してたり、バグ管理システムとの連携もしているみたい。ここには書かれていない取り込みもいろいろやっているのでしょう。すごいなあ。
多くのテストが"push blocking"にあたるみたいなので、そんなに細かいテストはしていないように見えなくもない。そのへんの粒度は不明。特定の条件でしか発生しないような問題はどのように対処しているのだろう。ユーザーからのフィードバックをうまく利用したりしているのか、それともそのような問題は無視するのか。いずれにせよ、Facebook的には十分な粒度であって、うまく機能しているだろうなあ。たぶん。
2010年7月13日
watir: click_no_wait が動作しない
普段watirで使用していないPCにwatir (version 1.6.5) をインストールして使用したところ、click_no_waitのメソッドがなぜか動作しない。clickとclick!のメソッドは問題なく動作しました。
うーん。
click_no_wait patchのパッチをあてたら動作するようになりました。page_contaienrでのシステムの呼び出し方がよくない模様。
click_no_waitが動かなかった環境はWindows XPの Service Pack 3のIE8という環境。Service Pack 2でIE6、watir 1.5.xの環境では正常に動作しているので、Service Packの違いかブラウザかwaitrのバージョンの違いに関連がありそうですが、詳しくは分かりませんでした。
click_no_waitは、ファイル挿入の「ファイルを選択」ボタンを押すときなどに使用します。clickのメソッドはwaitを実行するので、「ファイルを選択」ボタンのようにボタンを押した後にモーダルウィンドウが表示される場合はclick_no_waitを使用する必要があります。click!のメソッドはcontainerに対してはwaitしないけど、ole_objectに対してはwaitするから(たぶん)、「ファイルの選択」ボタンのようなケースではうまく動かない、みたい。
2010年6月21日
本:若者と社会変容 リスク社会を生きる
現代社会の著しい変容が若者に与えている影響について論述した本。本書では、現代社会の生活と人生は「認識論的誤謬」が根底にあると述べています。現代は新しい時代の登場であり、いままでの集団や階級などの社会的な構造が人生に大きな影響力を持たなくなりつつあり、個人が中心の社会となってきていると言えるのか。本書では社会構造が人生の機会に与える影響力は変わらず存在しているとしています。
選択肢の多様化などが表面的には個人の選択の自由、平等化をもたらしているようにみえるが、実際には親の収入などによって階層化しており、階層によって選べる選択肢(機会)には制限がある。しかし、表面的な平等化が、自分の人生を決めるのは自分である、選択するのは自分であるとし、人生を決める責任・リスクは個人にあるという認識を生んでいる。その主観的な認識と客観的に存在する階層構造(不平等)が、認識論的誤謬となっている。本書ではこうした論を教育から労働市場への参入、余暇、健康への影響、犯罪への関与、政治への参加などの視点から詳述しています。
(本書は全体で275ページほどで、文章量としては普通ですが内容にとにかく厚みがあります。より詳細の解説については本書の訳者解説を参考にされるのがよろしいと思います)
言い換えれば、弧度近代の人生生活においては、認識論的誤謬がくりかえされている。この認識論的誤謬の内側で、長期的な歴史的プロセスの一部をなす、集団性から次第に隔絶されていく感覚が、リスクと不安という主観的認識と強く結びついて存在する。個々人は、日々の生活のあらゆる場面でぶつかる一連のリスクを乗り越えていくことを強いられる。しかしながら、個人主義の強まりによって、危機は個人のコントロールを超えて起こるプロセスの結果としてよりも、個人の欠陥として認識される状況が生まれる。(p275)
2010年6月 8日
bashでファイル名を一括変換
bashでファイル名を一括変換するというメモ。Excelが同じ名前のファイルを同時に開けないので、一時的にファイル名変えたいとかそういうときのために(そんなときあるのか?)。xlsファイルのみを対象にカレントディレクトリのファイル名の後ろに「_2」とつける。mvが期待通りに動作しなかったときのために一括変換する前にバックアップをとるのが大人の対応である。左記は自分への戒め。
for i in $(ls . | grep \.xls); do j=$(echo $i | sed 's/.xls//')_2.xls; mv $i $j; done
元のファイル名に戻す場合も同じ要領で行う。
for i in $(ls . | grep \.xls); do j=$(echo $i | sed 's/_2//'); mv $i $j; done
ほかにスマートな方法があれば教えてください。
2010年6月 7日
本:世界の多様性 家族構造と近代性
エマニュエル・ドットが1983年に著した「第三世界」と1984年に著した「世界の幼少期」を二つ合わせたのがこの本。「第三世界」では「世界にある多様なイデオロギーの基底にあるのは家族構造」と論じ、家族構造とイデオロギーは対になっていると主張しています。「世界の幼少期」では教育における女性の権威の重要性を述べ、女性の権威を受け入れる家族構造は文化的成長が速いと論じています(ただし文化的成長は地理的な伝播の影響を受けるので、それも考慮する必要がある)。
論の中心である家族構造については、「両親と子供の関係」「兄弟間の関係」「近親相姦の禁止」という3つの軸によって分析でき、3つの軸の組み合わせによって7つの類型が存在すると述べています。3つの軸にはそれぞれ2つの極があり、「両親と子供の関係」では子供が結婚後も両親と生計を共にし、親との縦型の関係を維持するのであれば家族は権威的であり、逆に子供が結婚後に親と生計を別にするようであれば、親の権威を影響を受けにくい、自由(主義)的であるとしています。「兄弟間の関係」では遺産相続の仕方によって兄弟との関係が平等的か不平等的かを分け、「近親相姦の禁止」の強弱で家族構造が「内婚的(親戚同士のつながりが強くなる)」か「外婚的(親戚ではない外部の人間を家族に受け入れる)」に分けています。この分類によると、日本は権威主義的(不平等)家族に属します(韓国やドイツと同じ分類)。
「世界にある多様なイデオロギーの基底にあるのは家族構造」という考え方がどれだけ強固に作用するのか、本書によると少なくともマクロ的なレベル、家族構造と国の政治体制(イデオロギー)は対の関係にある(家族構造が権威主義的であれば、政治体制も権威主義的になる)としています。しかし、個人のイデオロギーが家族(家庭)ではなく、個人そのものを底とするようになってくれば、この対の関係も薄まってくるのかもしれません。また、本書では家族の構造は不変(何世紀というスパンでは家族構造は変化していない)のように扱われていますが、今後の社会でも同様であるかは分からないところではあります。そういった留意点を踏まえつつも家族における自分の役割や自分の扱われ方、影響力が、自分のアイデンティティやイデオロギーの根底にあるというのは、直観的にも説得力があり賛同できるものであると思います。
次のページ >
