タグ

programmingとquality assuranceに関するvanbraamのブックマーク (22)

  • Go言語でのテストの並列化 〜t.Parallel()メソッドを理解する〜 | メルカリエンジニアリング

    この記事は、Merpay Tech Openness Month 2020 の6日目の記事です。 メルペイでBackendエンジニアをしている柴田(@yoshiki_shibata)です。この記事では、Go言語のtestingパッケージに用意されている並列化の機能について説明します。 Go言語では、テストコードを作成するためのtestingパッケージが用意されています。一般に開発するソフトウェアの規模が大きくなるに従って、作成されるテストコードの量も多くなり、すべてのテストが終了するまでの時間も長くなっていきます。特に、データベースへアクセスするようなテストでは、データベースへの通信時間がテスト時間の多く占めますので、テストコードを逐次実行するよりは並列実行することで、テスト時間を短縮できます(厳密には用語「並行」ですが、t.Parallel()メソッドの説明なので、この記事では用語「並列

    Go言語でのテストの並列化 〜t.Parallel()メソッドを理解する〜 | メルカリエンジニアリング
  • 20年物のC言語で作られたシステムのテスト工程を改善しようとした話 - Qiita

    はじめに ちょっと前に20年物のC言語で作られたシステムのテストを色々改善しようとしてみたので、この時に得たちょっとした知見を書いていこうと思います。 ※注意 記事を書くために自分のパソコンで当時を思い出しながら環境を作っているので、実際、実務でやった環境やバージョンとは違います。 また、この記事にはいくつかコードがでてきますが、すべて記事を書くために考えた疑似的な例にすぎません。 単体テスト用のテストコードの作成 20年も動いているシステムだと、もはや誰にも意味はわからんが、既存の挙動を変えてはいけない箇所がいくつもあります。 そういう箇所に手を入れざるを得ないときに、有効な方法として以下のような方法があります。 まず、既存のコードに対するテストコードを記載します。そして全て合格することを確認してから、少しづつ機能を拡張していきます。 これにより、新規機能追加が既存の機能を壊していないこ

    20年物のC言語で作られたシステムのテスト工程を改善しようとした話 - Qiita
    vanbraam
    vanbraam 2019/10/29
    "Windows10 + Ubuntu 18.04"ってWSLの事だろうか?; DBのテストは,リソースが潤沢ならcontainer一択では; "保守的な〜"と"敗北の記録"の項は完全に腐った文化の話なので,本来若者を巻き込むべきではない領域.筆者は悟りを開いている
  • テストを書きたくない話 / I don't want to write tests

    2019/10/11に行われた「「テスト」の話を聞いてみようの会」での登壇資料です

    テストを書きたくない話 / I don't want to write tests
    vanbraam
    vanbraam 2019/10/12
    「テストしたくない」とか「テストコードは負債になりやすいから手動テストにしよう」みたいな話じゃなくて胸をなでおろした
  • JaSST' Tokai 18 - Agileとテスト自動化導入の勘所

    近年日のソフトウェア開発チームでも取り入れられるようになったアジャイル/DevOps開発では,今まで主流であったウォーターフォール開発と異なり,短い開発サイクルの中で小刻みなフィードバックループと改善活動を繰り返しながら開発する特徴がある.そのため,品質保証や信頼性でのメトリクス活用においても,メトリクスにもとづいたQAテストを実施することは依然重要であるが,それに加え開発から運用までの一連のプロセスの中でプロダクトとプロセスの品質を見える化し継続的な改善活動を促進するフィードバックを提供することがアジャイル開発では求められる.また、DevOps開発では番稼働中のシステムについてもレジリエンスの枠組みで障害やバグに関するフィード バックを獲得し継続的に学習する.講演ではアジャイル /DevOps の品質保証と信頼性におけるメトリクス活用の方法について事例も交えながら紹介する.

    JaSST' Tokai 18 - Agileとテスト自動化導入の勘所
    vanbraam
    vanbraam 2018/12/18
    "「本当に100%自動化されてるのか」と繰り返される質問に自動化しない言い訳を探しているように感じた”<似たような質問を繰り返すのは確かにヤバい
  • 開発現場に学ぶ、円滑なコードレビューに必要な8つの手法 ~手段から準備、実施時期まで徹底解説~|ハイクラス転職・求人情報サイト AMBI(アンビ)

    開発現場に学ぶ、円滑なコードレビューに必要な8つの手法 ~手段から準備、実施時期まで徹底解説~ コードレビューによって解決される問題とは?そして、実際にチームでコードレビューを実施する上で気をつけるべきこととは?ソニックガーデンの取締役プログラマー西見公宏さんが、コードレビューのポイントを、実践に基づき解説します。 ITを活用して事業の課題を解決するサービス「納品のない受託開発」を提供する会社、ソニックガーデンの西見公宏(にしみ・まさひろ/@mah_lab)です。お客様の「バーチャルCTO」として、サービスの企画からシステムの開発・運用まで、日夜幅広く関わらせていただいております。 皆さんは普段、ソースコードをどのくらい読んでいるでしょうか? 普段からソフトウェア開発をしている人であれば、何か問題が起こったときの原因調査のために他の人が書いたコードを読んだり、はたまた自分の書いたコードを読

    開発現場に学ぶ、円滑なコードレビューに必要な8つの手法 ~手段から準備、実施時期まで徹底解説~|ハイクラス転職・求人情報サイト AMBI(アンビ)
    vanbraam
    vanbraam 2018/04/05
    "若手もレビュー"は同意しかない;8項目に新鮮味はないが,重要点が網羅されてて素晴らしい;"設計レベルの指摘"を対面でやる際に"話した内容"を"リアルタイムにプルリクのコメントに書き込んで"議事代わりにするの凄く良い
  • 希薄化したTDD、プロダクトの成長のために必要なものは?〜『健全なビジネスの継続的成長のためには健全なコードが必要だ』対談 (6)

    テスト書くのが当たり前、だけど・・・和田:次に意味の希薄化ですね。『Test-Driven Development by Example』の出版から15年経ち、テストコードを書く人はすごく増えました。15年前は啓蒙期で、テストコードを書きましょう、テストコードの書き方はこういう感じですというのを頑張って啓蒙する必要があった。 でも、例えば今の若手プログラマーは普通にテストコードを書く。なぜなら既存システムにはテストコードが書かれているから、開発の継続、不具合の修正とか機能追加を行う際にテストコードを書くのが普通だし、テストコードが無いとレビューは通らないしみたいな話になって、テストコードがあるという生活は普通のものになっている。そうすると、なぜテストコード書くのかとか、来こういうテストコードを書きたかったんだけどとか、こういうテストを書くべきなんだけどみたいな議論はだいぶ土俵から外れてし

    希薄化したTDD、プロダクトの成長のために必要なものは?〜『健全なビジネスの継続的成長のためには健全なコードが必要だ』対談 (6)
    vanbraam
    vanbraam 2018/04/05
    何かモヤモヤする;テストを書く理由なんて"テスト(の様な非生産的な作業)を手動で何度も実施したくないから"で十分では."変更を自信を持って行える"はテストの最大の効用だが,唯一の効用ではないと思う
  • xUTP Magazine - xUnitester Hotlinks: 第一回 和田卓人さん(下)

    xUnitester Hotlinks は、毎号、著名な xUnitester にインタビューを行っていこう、という企画です。 栄えある第一回のインタビューは、日の TDD 伝道師、和田卓人さんにお願いしました。 こちらは後編となります。前編はこちら 和田卓人(わだたくと) タワーズ・クエスト株式会社取締役社長、プログラマ、テスト駆動開発者。 学生時代にソフトウェア工学を学び、オブジェクト指向分析/設計に傾倒する。その後様々な縁に導かれソフトウェアパターンやXP(eXtreme Programming)を実践する人たちと出会い、後のテスト駆動開発の誕生を知る。テスト駆動開発に「完璧主義の呪い(完璧な設計を得るまではコードを書けないし良いシステムも出来ないという強迫観念)」を解いてもらってからは、文章を書いたり、講演を行ったり、ハンズオンイベントを開催するなどして、テスト駆動開発を広めよう

    vanbraam
    vanbraam 2018/03/22
    "Kent Beck がやっていたのは、抽象的な話で、「テストの向き」という概念は基本的に無かった","Steve Freeman と Nat Pryce は、モックオブジェクトを使うことで(略)要求や対象の世界を自分たちが理解していく上での設計ツールに"
  • マニアが潰したテスト駆動開発〜『健全なビジネスの継続的成長のためには健全なコードが必要だ』対談 (5)

    昨年12月に行われた和田卓人氏と『時を超えたプログラミングの道』編集長/『スクラム実践入門』著者の家永英治氏の『健全なビジネスの継続的成長のためには健全なコードが必要だ』対談の記事第5弾をお届けします。 対談のこれまでの記事は以下になります。

    マニアが潰したテスト駆動開発〜『健全なビジネスの継続的成長のためには健全なコードが必要だ』対談 (5)
    vanbraam
    vanbraam 2018/03/22
    密結合/疎結合の話や,"その構造のまま大きくなるとすごく大変になる"の話が,"Rails自身の設計"と"Rails上で書かれるアプリの設計"のどちらを指すかが曖昧;"TDD"と"自動テスト"も別.TDDが抜け殻でもテストは自動化すべきでは
  • コードレビューをより効果的にする方法

    ツールに任せることができないどんなことを人間は指摘できるのだろうか? 驚くほど多数の事柄があることがわかっている。この記事の残りで幅広い重要事項のリストに触れ、2つの特定の領域、パフォーマンスとセキュリティに関してはもう少し深く言及する。 設計 新しいコードは全体アーキテクチャに適合しているだろうか? コードはSOLID原則、ドメイン駆動設計、もしくはチームが採用する他の設計手法に従っているだろうか? 新しいコードでデザインパターンは使用されているだろうか?これらは適切だろうか? コードベースの標準や設計スタイルが混合されている場合は、新しいコードは現在の原則に従っているだろうか?コードは現在の方向性を引き継いでいるか、徐々に除去される古いコードの例に従っているだろうか? コードは正しい場所に配置されているだろうか?例えば、コードが注文に関係する場合は、それは注文サービスの中にあるだろうか

    コードレビューをより効果的にする方法
    vanbraam
    vanbraam 2017/04/29
    長いが,一読の価値あり.特にセキュリティに関する記述
  • タダでソフト開発の生産性と品質を上げる方法(4):単体テストで威力を発揮する「MinUnit」

    1.はじめに 出荷後、顧客サイトでソフトウェアのバグを出さないためには、開発中にたくさんバグをたたき出しておく必要があります*1)。このためにはシステマチックなテストが重要で、通常は、モジュールレベルの単体テスト、ひとまとまりの機能をテストする結合テスト、システム全体を検証する統合テストの3段階構成で進めます。 今回は、これら3つのテストの中で最も数が多くて時間がかかり、ソフトウェア開発技術者が最も嫌う単体テストで威力を発揮するツール「MinUnit」を紹介します。MinUnitは、最小限の機能で大きな効果を期待できます。 *1)製品のテストが一通り完了し、「ほぼ正常に動作する」段階になると、「α版」として顧客に提供することがあります。α版をリリースする目的は、「正式版ではないが、お試しに使ってください。使い勝手に問題があったりバグがあったら教えてください。可能な限り対応します」です。 ソ

    タダでソフト開発の生産性と品質を上げる方法(4):単体テストで威力を発揮する「MinUnit」
  • 開発を効率化するテストのデザインパターン

    2017/3/13 iOS Test Night #3 https://testnight.connpass.com/event/49561/

    開発を効率化するテストのデザインパターン
    vanbraam
    vanbraam 2017/03/15
    Parameterized Testは良し悪しだと思う.テストの複雑度や非局所性が増すと,テスト自身の正しさを理解するのが困難になる;ViewControllerFactoryパターンついてはスライド読んだだけではわからなかった
  • スローテスト刑事 (デカ)

    第74回 Ruby関西 勉強会 (https://rubykansai.doorkeeper.jp/events/49364)

    スローテスト刑事 (デカ)
    vanbraam
    vanbraam 2016/09/12
    並列化は良いと思うが,"migrateせずにloadする"とか"system呼び出さない"とかはテストとプロダクションが段々乖離してしまいそう."毎回初期化しない"とかも,意図せぬ依存関係ができて並列化の妨げになりそうだし
  • Haskellと共に4年間を歩んだ起業家の視点 | POSTD

    (訳注:2017/11/17、頂きましたフィードバックを元に記事を修正いたしました。) 2012年、私は 新しいタイプの企業向けeラーニングプラットフォーム を開発するスタートアップ、Better ^(1) を共同設立しました。私たちのゴールは、大企業が、適応力の高いクロスプラットフォーム、多言語のオンラインコースを、速く安く開発、配信、解析できるようにすることでした。 立ち上げ初日にメインで使うと決めたHaskellは、チームが開発者10人を抱えるようになった時もバックエンドで使い続けていた唯一の言語でした。 実験と開発の期間を経て、Betterは数か月の間にAmerican ExpressやSwissportを始めとする顧客を得て、$0から$500,000超の年間経常利益を上げるまでに成長しました。しかし、更なる成長を目指すためには配信モデルが妨げになることが分かったため、最終的にオー

    Haskellと共に4年間を歩んだ起業家の視点 | POSTD
    vanbraam
    vanbraam 2016/09/01
    Syntacticな部分(引数のデータ構造チェック等)は省けても,semanticな部分のテストは必要.結局テストで手抜きできる部分はそれ程大きくないのでは?;不変性によって(結果的に)バグが出にくいコードになる点の方が重要そう
  • Reddit User Claims He Automated His Job For 6 Years, Finally Is Fired, Forgets How To Code

    Reddit user FiletOfFish1066 just got fired from his programming job. The reason and circumstances will completely blow your mind, though. FiletOfFish1066 (FOF) worked at a well-known tech company in the Bay Area and for six full years did nothing except play League of Legends(LoL), browse Reddit, work out in a gym, and basically do whatever he felt like doing. Guess how much his company paid him t

    Reddit User Claims He Automated His Job For 6 Years, Finally Is Fired, Forgets How To Code
  • 仕事を全自動化して6年間も働かず年収1000万円を得ていたプログラマーが最終的にクビに

    By Nicola Albertini プログラマーは自分の仕事を減らすために便利なツールやソフトを作成することができることから、怠け者で愚かな人間ほど優秀と言われることがあるほどです。自作ツールを活用すれば単調で反復的な仕事の生産性を上げられるわけですが、なんと全ての仕事を全自動化して6年間にわたって給与を得ていたプログラマーが、最終的にクビになってしまったというredditの投稿をInteresting Engineeringが取り上げています。 Programmer Automates His Job For 6 Years, Finally Gets Fired, Forgets How To Code| Interesting Engineering http://interestingengineering.com/programmer-automates-job-6-year

    仕事を全自動化して6年間も働かず年収1000万円を得ていたプログラマーが最終的にクビに
    vanbraam
    vanbraam 2016/06/15
    その自動化プログラムがどうなったかが一番興味がある点なのに書いてない;元英語記事のコメントに"6年間変化のないQAプロセスの方が問題では"とあったが,確かにそうだな
  • テストコードの期待値はDRYを捨ててベタ書きする ~テストコードの重要な役割とは?~ - Qiita

    はじめに みなさん、DRY原則はご存知でしょうか? DRY = Don't repeat yourselfの略で「繰り返しを避けること」という意味ですよね。 良いコードを書くための重要かつ基的な原則なので、みなさんよくご存知だと思います。 ですが、DRY原則はテストコードを書く場合は必ずしも最善にはならない場合があります。 他の人が書いたテストコードを見ていると、テストコードにDRY原則を適用したために、かえって悪いコードになっているケースをときどき見かけます。 この記事ではなぜテストコードをDRYにすると良くないのか、ということを説明します。 追記:タイトルを変更しました @t_wada さんのコメントを受けて、タイトルを見直しました。 「テストコードはDRYを捨ててベタ書きする」 => 「テストコードの期待値はDRYを捨ててベタ書きする」 【注意】この記事は画一的なテストコードの書き

    テストコードの期待値はDRYを捨ててベタ書きする ~テストコードの重要な役割とは?~ - Qiita
    vanbraam
    vanbraam 2016/06/08
    これいつも悩む;テストコードは共通化も(rspecでいうとshared_example)も危険.可読性は情報のlocalityが高い程良くなる傾向があるが,共通化すると情報のlocalityが落ちる
  • フロントエンドにテストを導入 - Qiita

    2016-8-8 ※webpack単体の記事を書きました。よろしければこちらもどうぞ step by stepで始めるwebpack 2016-5-16 ※karma単体の記事を書きました。よろしければこちらもどうぞ step by stepで始めるKarma 記事は画面のJavaScriptのテストとかまったくやったことない方 Mocha?webpackkarma?それぞれの解説記事はよく見るけど全体像がよくわからんという方向けです。(数日前の自分です) 全体を通して導入の流れを解説した記事があると全体像が理解しやすいのではと思い書いてみました。 前提 Nodejs,npm,chromeが導入済みであること 流れ Step 表題 目的

    フロントエンドにテストを導入 - Qiita
    vanbraam
    vanbraam 2016/05/05
    GUI(含む見た目)のテストかと思ってたので予想と違ったが,とても参考になる記事だった;あとdraw.io良さげ
  • 制約をロジックではなく型で表現する

    class: center, middle # 制約をロジックではなく<br/>型で表現する 渋谷Java 第十五回 2016/04/23 --- class: left, middle ## 自己紹介 * 中村 学(Nakamura Manabu) * [@gakuzzzz](https://twitter.com/gakuzzzz) * 株式会社 Tech to Value * Japan Scala Association --- class: center, middle # みなさん<br />テスト書いてますか? --- class: center, middle ## 僕はテスト書くのが<br/>あまり好きではありません。 --- class: middle # 型 > テスト 偉い人は言いました。 テストで示せるのはバグの存在であって、<br />バグの不在は証明できない。

    vanbraam
    vanbraam 2016/04/28
    Property Based Test:テストデータをランダムに半自動生成;この時,テストデータの制約をロジックではなく型で表現すると楽
  • TDDを諦める

    この記事は,TDDに見切りをつけたある大学教授の経験と,Uncle Bobの反論を要約したものだ。 ソフトウェア工学の大学教授を退官したIan Simmerville氏には,“Software Engineering, 10th edition”を含む数冊の著書がある。同書の第8章はすべてソフトウェアテストに関する内容であり,特に8.2章ではTDDを取り上げている。それらの章で紹介された考え方を何度も引き合いに出しながら,Sommerville氏は先日の記事に,“TDDはソフトウェア工学の大きな進歩です。いくつかのクラスのシステムにおいては,それが有効であることが明らかです。”と述べて,次のような“TDDフレンドリ”なシステムの一覧を紹介している。 階層化アーキテクチャ 合意された成功基準を持ち,それに準拠したテストに基づいて構築されるシステム。 自身のコントロールを越えてシステムと対話す

    TDDを諦める
    vanbraam
    vanbraam 2016/04/16
    不変部分と頻繁に変わる部分を見分ける事も必要だと思う. 極論,画像の位置が1ピクセル変わったら落ちるようなGUIのテストに意味はない(あくまで極論)
  • 再テスト工数を抑えられるテスト自動生成技術を富士通が開発、アジャイルに適用

    Fujitsu Laboratories of Americaと富士通研究所は、ソフトウエアの単体テスト(ユニットテスト)において、ソフトの改良や変更に伴う再テストの工数を減らせるテスト自動生成技術を開発した。バージョンの異なるオープンソースソフト(OSS)で検証したところ、従来技術と比較してバージョン変更に伴うテストコードの増分を1/24に抑えられたという。 頻繁に仕様の変更が発生するアジャイル開発にも適用しやすいテスト自動生成技術として、富士通の顧客向けアジャイル開発プロジェクトなどに適用した上で、2016年度中の実用化を目指す。 今回開発した技術では、ソフトの更新に伴う既存テストケースのコード変更を最小限に抑えることで、テスト結果の確認などにかかる手間を減らし、アジャイル開発にもテスト自動生成を適用しやすくする テスト自動生成技術とは、あるソフトウエアの関数やサブルーチンについて、ソ

    再テスト工数を抑えられるテスト自動生成技術を富士通が開発、アジャイルに適用
    vanbraam
    vanbraam 2016/03/31
    parameterizeするべき部分を自動で見つけ出すのか.ただテストは余り共通化すると情報のlocalityが低下し(framework化して)可読&可理解性が落ちるので,やりすぎると危険な気がする.テストコードこそ最も可読性が必要