ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

ジェイコムショックは、打ち間違いで270億損失ってのも、こわいよね!(9日11時訂正)

2005-12-08 16:14:29 | Weblog
(損失額が270億みたいなので、修正です)


いやー、コンピューターって、(それと株って?)こわいですねー!

みました、このニュース?

<ジェイコム株>「1株1円」の誤注文で乱高下
そのニュースによると(斜体はそのニュースからの引用)

市場で「1株1円で誤って売り注文を出した証券会社がある」との見方が広まり、売買注文が殺到。同株の午前中の売買代金は全取引所を通じ1位の4200億円に膨らんだ。


(中略)


売り注文を出した証券会社はジェイコムの発行済み株式総数の32倍にものぼる注文を出していたため、株券を持たずに売買する「空売り」と同じ扱いになり、市場で株を買い戻さなければならない。午前の終値で買い戻す場合を試算すると、「売り手の損失は1000億円前後に膨らむ」(中堅証券)という。


ひえー!結局、1株1円って、うち間違いでしょ!

それで1000億円の損害ですか(^^;)
(9日11時訂正:後述しますが、270億の損害らしい)

こわいですねー。

ウィリアムのいたずらなら、
  たとえ会社のお金といえども
  たとえ故意でないといえども
そんな、1000億円もの、うち間違いしたら、気絶しちゃいます。きっと。。。
(9日11時訂正:270億でも、いや28億でも気絶しちゃいます)
たぶん、部下がうち間違いしても、
家族がうち間違いしても、気絶しちゃいます。

おなじ会社の人が、うち間違いしたら、帰りに転職雑誌かいます
(って、ウィリアムのいたずらは、フリーなので、転職に関係なかった (^^;)

でも、そのあとに


このため市場では「売り手と買い手が東証に対し、取引の取り消しを求めるのではないか」との見方も出ている。


 いや、それは、まずいんでないかい。。

 そういう場合のために、「解け合い」という制度(当事者同士が話しあい、ある値段にきめて売買をする)があるわけで、実際、糸山英太郎氏の中山製鋼所の場合なんかも使われたので、解け合いならOKだけど、勝手に当事者が話して取引取り消しなんかにしたら、大手の場合はOKで、個人投資家は、取り消しできないってことになり。。

 なんとなく、へん??

(17時に追加)
と思ったら、infoseek(ブルームバーグニュース)のニュースに
ここ斜体部は、そこからの引用)

 東京証券取引所の中尾友治広報室長は、ジェイコム株の荒い値動きに関する
ブルームバーグ・ニュースの取材に対し、「あり得ないような発注があり、価格
が乱高下したことは知っている。まだ社内で確認はできていないし、誰がやった
かも分からない。もし分かっても、守秘義務があるので公表できない可能性が高
い」と述べた。

  また中尾氏は、「もし誤発注だったらどうするかだが、一般論ではすでに約
定している取引の取り消しはできない。推測になるが、おそらく当事者間で解決
を図ることになるのではないか」とも話している。

だそうな。。そうだよね。やっぱ




 あ、ちなみに、その間違えた証券会社なんだけど、
 日経の発表によると、犯人は、みずほ証券らしい。
このニュース
みずほ証券、ジェイコム株を誤発注・「1円で61万株」
(以下、斜体部分引用)

東証マザーズ上場のジェイコム株を8日、1円で61万株の売り注文を出した証券会社が、みずほ証券であることが明らかになった。 (16:41)


(8日24時追加/9日11時訂正)
 どうも270億の損失とでていて、大部分は買い戻しと出たらしい。

 打ち間違いは、61万株

 9時30分ごろ?の47万株は、みずほ証券がストップ安で買い戻したとすると、みずほがストップ安で売ったものを、みずほがストップ安で買い戻しているので、差額0、自己売買の場合、手数料は0とみて、ここでの損失はない。
 のこり61-47=14万株を、ストップ安で売って、ストップ高で買い戻したとすると、
14万X(ストップ高-ストップ安)=14万X20万=280億
で、計算は、ほぼ、あうんだけど。。。(一部、ストップ高でなくても、買い取れてるかもしれないので)

(ここまで訂正)

 ほんとうに、そーなのかなあ。。。99%買い戻せても、1%でも6千株ですからねえ。。。株式総数1万5千くらいしかないジェイコムにとっては、大きな数字。。まだまだ、予断を許さないかも。。




 それにしても、こういう間違い防止のために、チェックプログラム入れといたほうが、いいんじゃないかねー。プログラム改修費用だって、(9日11時訂正)270億は(ここまで訂正)、かなんないだろー(^^)。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Excelなんかの試験(テスト)仕様書とJunit等のユニットテストの関係(その1)

2005-12-08 14:53:51 | 開発ネタ

 Excelなんかで、試験仕様書(テスト仕様書)を書くことって、多いと思います。
 で、Junitを使う人も多いと思います。

 でも、やっぱ、この業界、流派ごとの争いがおおいんでしょーかねー、
 このExcelなんかで書く、試験仕様書(テスト仕様書)が、Junitで、どうやって、落とし込むのかっていうことについて、書いてくれてないケースって、多くありませんかねー。

 ウィリアムのいたずらの関係したプロジェクトだけが、不運にも、そうなのか?
 (たしかに、「不幸学鑑定」をやったら、けっこう不幸な人です。で、その不幸の度合いは、ドラゴンボールで言うところのヤムチャ級と出た)。

 っていうことで、今日は、その関係について、独断と偏見で書いてみたいと思います。
 (つーことで、これと違う意見を言う人も、たぶん、いっぱいいると思う。
  1つの考え方としてみてね)




■■ そもそも、試験仕様書に書く項目を考える

テスト仕様書(=試験仕様書、以下同じ)に書く項目は、こんなかんじだと思います
 ・テストの表題部分(テストするシステム名などなど)
 ・テストの番号、分類(大分類・中分類・小分類などと、正常系か異常系かなど)
 ・テスト内容
   ここが、2つないし、3つにわかれる場合もある
    3つの場合は、テストの内容、テストを行う(前提)条件、予想される結果
    2つの場合は、どれかをまとめる
    1つの場合は、3つまとめて

あと、これは試験仕様書の範囲でなく、テスト結果の報告書の範囲になるんだけど
 ・エビデンスに関して(確認方法やどのエビデンスかをしめす)
 ・検査した人と検査日
 ・検査結果

 もちろん、プロジェクトによっては、これ以上にいろんなことを書くテスト仕様書もあるし、書かないテスト仕様書もある。呼び方に関してはさまざま。(テスト内容じゃなくって、テスト項目とか、試験方法とか、いろいろ)




■■ Junitなんかのユニットテストの考え方について、考えてみる
 次に、Junitなどの、ユニットテストでの考え方について、考える。
 この基本は、契約による設計(DbC)だと思います。
 で、契約による設計の場合
  ・事前条件
    そのテストするユニット(メソッド)が実行するとき(直前)に満たすべき条件
    メソッドの引数の値など

  ・事後条件
    そのテストするユニット(メソッド)が実行すたとき(直後)にみたすべき条件
    メソッドの返り値など

  ・不変条件
    メソッドの引数、返り値などについては、上記で調べたが、実際には、メソッドに
    影響を与える可能性のあるものというのは、他に、そのメソッドが属するクラス内
    のメンバ変数(意味通じない人へ、そういう変数があるのだよ)などもある。
    ってことで、

      メソッドが属するクラスのオブジェクトが満たすべき条件

    っていうのも、テストする必要がある。
    (たとえば、DB使ってるとき、クラスの変数にコネクションがあったら、
    メソッド実行時に、コネクションが接続されていて、正常終了の場合は、コネクションが
    つながってることなど)
     この、上記の条件のこと

 で、これらの条件とJUNITの関係は、Junitの本やサイトに書かれている。
 みたことない!っていうひとは、
 こちらをどうぞ http://www.javaroad.jp/java_exception4.htm

 ということは、上記の関係と、仕様書の関係を示せばいいよね



■■ 仕様書(内容3部構成)と、契約による設計の関係

 で、ここで、内容についてなのですが、
 ・テスト内容
   ここが、2つないし、3つにわかれる場合もある
    3つの場合は、テストの内容、テストを行う(前提)条件、予想される結果
    2つの場合は、どれかをまとめる
    1つの場合は、3つまとめて

とありますが、まず、

    3つの場合は、テストの内容、テストを行う(前提)条件、予想される結果

のケースについて、書きます。であとは、3つの場合と、2つ、1つの場合のまとめ方を書けばいい。

 ここで、3つに分けた場合、
 事後条件が、「予想される結果」であることは、想像つくし、ふつう、そうやってかく。

 で、のこりについては、

   不変条件(のうち、事前に満たしておくこと)を、テストを行う(前提)条件に、
   事前条件を「テストの内容」(テスト項目)

として、わけてしまうと、あとでテストしやすいと思う。
で、そうすると、不変条件(のうち、事後にも満たしているはずのこと)が抜けてしまうけど、それは、「予想される結果」に、事後条件と一緒に書いておく。




ごめんなさい。このあと、すごーくながいんで、ここで、話をいったんきりますね。
つづきは、またこんど

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PHPUnitのPEAR版でユニットテストをしてみる(その1)

2005-12-08 10:03:14 | PHP

 以前のブログ(これこれ)で、sourceforge版のPHPUnitの使い方をやったので、今日は、PEAR版のPHPUnitでもやってみました。
 結論から言うと、PHP5.0でも動きます。sourceforge版のように、修正する必要もありません。それはいいのですが。。




■■ インストール
 まず、PEAR版のPHPUnitがあるページからダウンロードします。
 ここ http://pear.php.net/package/PHPUnit
(昨日うまくいかなかったけど、今日はOKになっていた)

 ダウンロードすると、いまだと、PHPUnit-1[1].3.2.tgz っていうファイルのなっているので、解凍レンジで、解凍します。出てきたフォルダの中に、どんどん入っていくと、こんなファイル&フォルダが入っているところに出くわします。
 PHPUnitのフォルダ
 PHPUnit.php
 package.xml

ここで、PHPUnit.phpと、 PHPUnitのフォルダを、自分のサイトのホーム(apacheのhtdocsのフォルダの中)におきました(べつに、そこでなくても、includeしたときに、そのパスが見えればOKですけど)

■■ とりあえず、サンプルをやってみる

 PHPUnit.phpの中に、サンプルが書いてあったので、まず、それをやってみました。
 テストプログラムは、こんなプログラムです。

<?php
 require_once 'PHPUnit.php';

 class MathTest extends PHPUnit_TestCase {
     var $fValue1;
     var $fValue2;

     function MathTest($name) {
       $this->PHPUnit_TestCase($name);
     }

     function setUp() {
       $this->fValue1 = 2;
       $this->fValue2 = 3;
     }

     function testAdd() {
       $this->assertTrue($this->fValue1 + $this->fValue2 == 5);
     }
 }

 $suite = new PHPUnit_TestSuite();
 $suite->addTest(new MathTest('testAdd'));

 $result = PHPUnit::run($suite);
 print $result->toHTML();
 ?>

(上記の、全角の < > ¥は、実際には半角にしています)

 このファイルをMathTest.phpと名前をつけて、自分のサイトのホームに保存します。

これは、前の例だと、SimpleCountTestに相当する、テストプログラムところです。
 ということは、テスト対象となる、前の例でいう、SimpleCountのクラスが必要になるはずなのですが、今回そのテスト対象となる、(テストクラスのMathTestからTestをとった)Mathクラスは、すでにPHPを入れたときに入っているので、今回わざわざ書かなくても、実験できます。

 
■■ 実験してみる
 ということで、あとは、ブラウザでみてみましょう
 自分のローカルサイトは、だれでもhttp://127.0.0.1/のはずなので、

http://127.0.0.1/MathTest.php

 をみてみます。

 そうすると。。。こんなかんじです。





この1行だけ、でます。。地味(>_<!)

 じゃあ、間違えたらどうなるか
$this->fValue1 = 2;
 のところを、わざと、
$this->fValue1 = 1;
 として、再読み込みすると





(紫色の部分は、実際には、MathTest.phpまでのパスが入ります=人によってちがう)

うーん、これまた、地味!!

なんか、みんな、sourceforge版を紹介している気持ちがわかるような。。。
(って、そういうわけじゃないか ^^;)

 GUIっていうフォルダがPHPUnitフォルダの下にあるので、もっと派手?にするGUIもあるのかなあ?あっても、すぐにやりかたわかんないから(つーか、サンプルには、それが書いていないので)こんかいは、ここまで。




■■ いちいちかかなくてもいい方法
 なお、PHPUnit.phpのコメントの中に書かれているサンプルの下に、こういう風なことも出ています。テストプログラムのしたのほうを、こんなふうに書き換えます(赤字がかきかえ)
<?php

require_once 'PHPUnit.php';

 class MathTest extends PHPUnit_TestCase {
     var $fValue1;
     var $fValue2;

     function MathTest($name) {
       $this->PHPUnit_TestCase($name);
     }

     function setUp() {
       $this->fValue1 = 1;
       $this->fValue2 = 3;
     }

     function testAdd() {
       $this->assertTrue($this->fValue1 + $this->fValue2 == 5);
     }
 }

 $suite  = new PHPUnit_TestSuite('MathTest');
 $result = PHPUnit::run($suite);
 print $result->toHTML();
?>

(上記の、全角の < > ¥は、実際には半角にしています)

つまり、
$suite = new PHPUnit_TestSuite();
$suite->addTest(new MathTest('testAdd'));

$suite = new PHPUnit_TestSuite('MathTest');

 と書くと、addTestをしなくても、MathTestの中にあるテストを全部addしてテストしてくれるみたいです。でも、ただそれだけなので、地味さは、かわんなかったりします。




 ではつぎは、いままでsourceforge版で使ってきた、SimpleCountだとどうなるかについては、今度気がむいたときに。。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする