0

私のデータは次の形式でリストされています(時間値は同じで、サンプルに使用されます)

 ID Result      StartTime                EndTime
 1  Fail    4/2/2013 1:17:29 PM     4/2/2013 1:19:30 PM
 2  Fail    4/2/2013 1:17:29 PM     4/2/2013 1:19:30 PM
 3  Pass    4/2/2013 1:17:29 PM     4/2/2013 1:19:30 PM
 4  Fail    4/2/2013 1:17:29 PM     4/2/2013 1:19:30 PM
 5  Fail    4/2/2013 1:17:29 PM     4/2/2013 1:19:30 PM
 6  Pass    4/2/2013 1:17:29 PM     4/2/2013 1:19:30 PM
 7  Fail    4/2/2013 1:17:29 PM     4/2/2013 1:19:30 PM
 8  Pass    4/2/2013 1:17:29 PM     4/2/2013 1:19:30 PM
 9  pass    4/2/2013 1:17:29 PM     4/2/2013 1:19:30 PM
 10  pass   4/2/2013 1:17:29 PM     4/2/2013 1:19:30 PM

∑ (T1,T2,…Tn) / n を使用して、これの MTBF を見つける必要があります。ここで、n は障害の数であり、T1,T2,…Tn は、障害が発生する前のアップタイムを指します。今のところ、各反復の経過時間を計算できましたが、

using (DatabaseEntities entities = new DatabaseEntities())
{
    var result = entities.ExecutionDetails.Select(p => p);
    foreach (var p in result)
    {
        if (p.StartTime.HasValue && p.EndTime.HasValue)
        {
            var duration = (p.EndTime.Value - p.StartTime.Value).ToString("c");
            Console.WriteLine("Duration" + duration);
        }
    }
}

MTBF を計算するために関連データを取得するために使用する適切なアプローチとクエリを見つけるのを手伝ってくれませんか。ありがとう。

更新されたコード

var results = entities.TestExecutionDetails.ToList();

            var failures = results.Where(p => p.Result == "Fail").Select(p => p); 

            foreach(var p in failures)
            {
             if (p.StartTime.HasValue && p.EndTime.HasValue)
             {

                 var elapsedduration = elapsedduration + (p.EndTime.Value - p.StartTime.Value).ToString("c");

             }

             var mtbf = elapsedduration / failures.Count();

最終更新

            TimeSpan elaspsedduration = new TimeSpan(0);
             ........
              .....
             foreach (var p in uptime)
            {
                Console.WriteLine("Uptime is" + uptime);
                if (p.StartTime.HasValue && p.EndTime.HasValue)
                {
                    elaspsedduration += (p.EndTime.Value - p.StartTime.Value);
                }
             var mtbf = elaspsedduration.TotalSeconds / failures;

            Console.WriteLine("MTBF Value is " + mtbf);
4

1 に答える 1

1

これに似たものがおそらく仕事をすると思います。

var results = entities.ExecutionDetails.ToList();

var failures = results.Where(p => p.Result == "Fail");

var sigmaDiff = failures.Sum(p => p.EndTime.Subtract(p.StartTime));

var mtbf = sigmaDiff/failures.Count();
于 2013-04-04T12:09:32.110 に答える