diff --git a/psrdada_cpp/effelsberg/edd/test/SpectralKurtosisTester.hpp b/psrdada_cpp/effelsberg/edd/test/SpectralKurtosisTester.hpp
index 9b4e0d08f9d576475ee8b49eeff10d247b281699..39f303abbafabf036260bdd719b94f0b41718f5c 100644
--- a/psrdada_cpp/effelsberg/edd/test/SpectralKurtosisTester.hpp
+++ b/psrdada_cpp/effelsberg/edd/test/SpectralKurtosisTester.hpp
@@ -1,6 +1,7 @@
 #include "psrdada_cpp/common.hpp"
-#include "psrdada_cpp/effelsberg/edd/test/SKTestVector.hpp"
+#include "psrdada_cpp/effelsberg/edd/SKRfiReplacement.hpp"
 #include "psrdada_cpp/effelsberg/edd/SpectralKurtosis.hpp"
+#include "psrdada_cpp/effelsberg/edd/test/SKTestVector.hpp"
 #include <gtest/gtest.h>
 
 namespace psrdada_cpp {
@@ -13,7 +14,20 @@ class SpectralKurtosisTester: public ::testing::Test
 public:
     SpectralKurtosisTester();
     ~SpectralKurtosisTester();
-
+    /**
+     * @brief        creates SKTestVector class instance and generates test vector
+     *
+     */
+    void test_vector_generation(std::size_t sample_size, std::size_t window_size, bool with_rfi,
+                                float rfi_freq, float rfi_amp, const std::vector<int> &rfi_window_indices,
+				std::vector<std::complex<float>> &samples);
+    /**
+     * @brief       creates SpectralKurtosis class instance and computes spectral kurtosis
+     *
+     */
+    void sk_computation(std::size_t nch,std::size_t window_size, 
+                        const std::vector<std::complex<float>> &samples,
+			RFIStatistics &stat);
 protected:
     void SetUp() override;
     void TearDown() override;
diff --git a/psrdada_cpp/effelsberg/edd/test/src/SpectralKurtosisTester.cpp b/psrdada_cpp/effelsberg/edd/test/src/SpectralKurtosisTester.cpp
index 9296db1fc04c9bcb80267efd0a5dab020a7b1b7f..a6901b5570452131fe42e9f3d25a926cfe46ce97 100644
--- a/psrdada_cpp/effelsberg/edd/test/src/SpectralKurtosisTester.cpp
+++ b/psrdada_cpp/effelsberg/edd/test/src/SpectralKurtosisTester.cpp
@@ -22,66 +22,101 @@ void SpectralKurtosisTester::TearDown()
 {
 }
 
-TEST_F(SpectralKurtosisTester, sk_window_size_chk)
+void SpectralKurtosisTester::test_vector_generation(std::size_t sample_size, std::size_t window_size, 
+		                                    bool with_rfi, float rfi_freq, float rfi_amp,
+						    const std::vector<int> &rfi_window_indices,
+						    std::vector<std::complex<float>> &samples)
 {
-    bool with_rfi = 0;
-    std::size_t sample_size = 2000;
-    std::size_t window_size = 150;
-    SKTestVector tv(sample_size, window_size, with_rfi);
-    std::vector<int> rfi_ind{};
+    SKTestVector tv(sample_size, window_size, with_rfi, rfi_freq, rfi_amp);
+    tv.generate_test_vector(rfi_window_indices, samples);
+}
+
+void SpectralKurtosisTester::sk_computation(std::size_t nch, std::size_t window_size, 
+                                           const std::vector<std::complex<float>> &samples,
+					   RFIStatistics &stat)
+{
+    float sk_min = 0.8;
+    float sk_max = 1.2;    
+    SpectralKurtosis sk(nch, window_size, sk_min, sk_max);
+    sk.compute_sk(samples, stat);
+}
+
+TEST_F(SpectralKurtosisTester, sk_window_size_check)
+{
+    std::vector<int> rfi_window_indices{};
     std::vector<std::complex<float>> samples;
-    tv.generate_test_vector(rfi_ind, samples);
-    
-    std::size_t nch = 1;
-    SpectralKurtosis sk(nch, window_size);
+    test_vector_generation(4000, 150, 0, 0, 0, rfi_window_indices, samples);
+
     RFIStatistics stat;
-    sk.compute_sk(samples, stat);
+    try{
+        sk_computation(1, 150, samples, stat);
+	FAIL() << "Expected std::runtime_error\n";
+    }
+    catch(std::runtime_error const & err){
+        EXPECT_EQ(err.what(), std::string("sample size is not a multiple of window_size. Give different window size\n"));
+    }
 }
+
 TEST_F(SpectralKurtosisTester, sk_withoutRFI)
 {
-    bool with_rfi = 0;
-    std::size_t sample_size = 20000;
-    std::size_t window_size = 200;
-    SKTestVector tv(sample_size, window_size, with_rfi);
-    std::vector<int> rfi_ind{};
+    std::vector<int> rfi_window_indices{};
     std::vector<std::complex<float>> samples;
-    tv.generate_test_vector(rfi_ind, samples); //generate test vector
-    
-    std::size_t nch = 1;
-    float sk_min = 0.8;
-    float sk_max = 1.2;
-    SpectralKurtosis sk(nch, window_size, sk_min, sk_max);
+    test_vector_generation(40000, 400, 0, 0, 0, rfi_window_indices, samples);
+
     RFIStatistics stat;
-    sk.compute_sk(samples, stat); //computing SK
+    sk_computation(1, 400, samples, stat);
+    float expected_rfi_fraction = 0;
+    EXPECT_EQ(expected_rfi_fraction, stat.rfi_fraction);
 }
 
 TEST_F(SpectralKurtosisTester, sk_withRFI)
 {
+    std::vector<int> rfi_window_indices{3, 4, 6, 7, 8, 20, 30, 40};
+    std::vector<std::complex<float>> samples;
+    test_vector_generation(40000, 400, 1, 10, 1, rfi_window_indices, samples);
+
+    RFIStatistics stat;
+    sk_computation(1, 400, samples, stat);
+    float expected_rfi_fraction = rfi_window_indices.size()/float(40000/400);
+    EXPECT_EQ(expected_rfi_fraction, stat.rfi_fraction);
+}
+
+TEST_F(SpectralKurtosisTester, sk_replacement)
+{
+   //Test vector
     bool with_rfi = 1;
     std::size_t sample_size = 40000;
     std::size_t window_size = 400;
-    SKTestVector tv(sample_size, window_size, with_rfi);
-    std::vector<int> rfi_ind{1, 2, 5, 7, 9, 20, 30, 40};
+    float rfi_freq = 10;
+    float rfi_amp = 1;
+    SKTestVector tv(sample_size, window_size, with_rfi, rfi_freq, rfi_amp);
+    std::vector<int> rfi_window_indices{1, 2, 3, 4, 6, 7, 8, 9, 20, 30, 40};
     std::vector<std::complex<float>> samples;
-    tv.generate_test_vector(rfi_ind, samples); //generating test vector
-
+    tv.generate_test_vector(rfi_window_indices, samples); //generating test vector
+    
+    //SK
     std::size_t nch = 1;
     float sk_min = 0.8;
     float sk_max = 1.2;
-    SpectralKurtosis sk(nch, window_size, sk_min, sk_max);
     RFIStatistics stat;
+    SpectralKurtosis sk(nch, window_size, sk_min, sk_max);
     sk.compute_sk(samples, stat); //computing SK
-    BOOST_LOG_TRIVIAL(info) <<"RFI status: ";
-    for(int ii = 0; ii< 10; ii++){
-        printf("RFI[%d] = %d\n", ii, stat.rfi_status[ii]);
-    }
+    float expected_rfi_fraction = rfi_window_indices.size()/float(40000/400);
+    EXPECT_EQ(expected_rfi_fraction, stat.rfi_fraction);
+
+    //RFI replacement
+    BOOST_LOG_TRIVIAL(info) <<"RFI replacement \n";
+    SKRfiReplacement rr(samples, stat.rfi_status);
+    rr.replace_rfi_data(samples);
+
+    //SK computation after RFI replacement
+    BOOST_LOG_TRIVIAL(info) <<"computing SK after RFI replacement.. \n";
+    sk.compute_sk(samples, stat); //computing SK
+    float expected_val_after_rfi_replacement = 0;
+    EXPECT_EQ(expected_val_after_rfi_replacement, stat.rfi_fraction);
 }
 
 } //test
 } //edd
 } //effelsberg
 } //psrdada_cpp
-
-
-
-