私のデータは次の形式でリストされています(時間値は同じで、サンプルに使用されます)
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);