diff --git a/Tests/Functional/Fit/FitObjective/CMakeLists.txt b/Tests/Functional/Fit/FitObjective/CMakeLists.txt
index 5577560d5260f6b2fa7c109e0994150afde81f77..923e4e6045f61f964e843ba91092fe1384a860aa 100644
--- a/Tests/Functional/Fit/FitObjective/CMakeLists.txt
+++ b/Tests/Functional/Fit/FitObjective/CMakeLists.txt
@@ -4,6 +4,7 @@ set(test_cases
     MigradCylindersInBA
     MigradResidualCylindersInBA
     SpecularFitTest
+    SpecularFitTestQ
     MultipleSpecFittingTest
     FumuliCylindersInBA
     LevenbergMarquardtCylindersInBA
diff --git a/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.cpp b/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.cpp
index a320099f0d9910866da9aa1a10df4f8aa64b99d0..0df9257f515dca0f5327d04a4ee9317960182b8e 100644
--- a/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.cpp
+++ b/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.cpp
@@ -56,6 +56,9 @@ AdjustMinimizerFit::AdjustMinimizerFit()
 SpecularFitTest::SpecularFitTest()
     : FitObjectiveTest("Minuit2", "Migrad", "SpecularPlan") {}
 
+SpecularFitTestQ::SpecularFitTestQ()
+    : FitObjectiveTest("Minuit2", "Migrad", "SpecularPlanQ") {}
+
 MultipleSpecFittingTest::MultipleSpecFittingTest()
     : FitObjectiveTest("Minuit2", "Migrad", "MultipleSpecPlan") {}
 
diff --git a/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.h b/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.h
index 1b5ae26f035d994c5f0e60752bd2965492bcf0dc..1624aa0e55b09696b103c015be18399d9d0e008b 100644
--- a/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.h
+++ b/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.h
@@ -87,6 +87,12 @@ public:
     SpecularFitTest();
 };
 
+class SpecularFitTestQ : public FitObjectiveTest
+{
+public:
+    SpecularFitTestQ();
+};
+
 class MultipleSpecFittingTest : public FitObjectiveTest
 {
 public:
diff --git a/Tests/Functional/Fit/FitObjective/FitObjectiveTestFactory.cpp b/Tests/Functional/Fit/FitObjective/FitObjectiveTestFactory.cpp
index d6a9f27968d48305f366582e243c4657a549e190..a29d73451a7c81e03109180a0f394fa9d5e63577 100644
--- a/Tests/Functional/Fit/FitObjective/FitObjectiveTestFactory.cpp
+++ b/Tests/Functional/Fit/FitObjective/FitObjectiveTestFactory.cpp
@@ -39,6 +39,8 @@ FitObjectiveTestFactory::FitObjectiveTestFactory()
                  "Minuit + Genetic, CylindersInBA");
     registerItem("SpecularFitTest", create_new<SpecularFitTest>,
                  "Minuit, Basic specular fitting");
+    registerItem("SpecularFitTestQ", create_new<SpecularFitTestQ>,
+                 "Minuit, Basic specular fitting (q-defined instrument)");
     registerItem("MultipleSpecFittingTest", create_new<MultipleSpecFittingTest>,
                  "Minuit, fitting of several reflectometry curves");
     registerItem("OffSpecFitTest", create_new<OffSpecFitTest>,
diff --git a/Tests/Functional/Fit/FitObjective/FitPlanCases.cpp b/Tests/Functional/Fit/FitObjective/FitPlanCases.cpp
index 2c8369348c3b91ba02c95ce8af98789674622825..9b9ce4c404f1f428c8aa5d55a2ad323d45de98e3 100644
--- a/Tests/Functional/Fit/FitObjective/FitPlanCases.cpp
+++ b/Tests/Functional/Fit/FitObjective/FitPlanCases.cpp
@@ -107,6 +107,19 @@ SpecularPlan::~SpecularPlan() = default;
 
 // ----------------------------------------------------------------------------
 
+SpecularPlanQ::SpecularPlanQ()
+    : FitPlan("SpecularPlanQ", /*residual_based = */ true)
+{
+    setSimulationName("BasicSpecularQ");
+    setBuilderName("PlainMultiLayerBySLDBuilder");
+    addParameter(Parameter("ti_thickness", 5.0 * nm, AttLimits::limited(1.0 * nm, 7.0 * nm), 0.1),
+                 3.0 * nm);
+}
+
+SpecularPlanQ::~SpecularPlanQ() = default;
+
+// ----------------------------------------------------------------------------
+
 MultipleSpecPlan::MultipleSpecPlan()
     : FitPlan("MultipleSpecPlan", /*residual_based = */ true)
 {
diff --git a/Tests/Functional/Fit/FitObjective/FitPlanCases.h b/Tests/Functional/Fit/FitObjective/FitPlanCases.h
index 658fce99e2c3990ce624c28f4a24de58325ff10e..99d4ff5d40b2e9d9fa39955a1a91762d24bbaf09 100644
--- a/Tests/Functional/Fit/FitObjective/FitPlanCases.h
+++ b/Tests/Functional/Fit/FitObjective/FitPlanCases.h
@@ -65,6 +65,15 @@ public:
     ~SpecularPlan() override;
 };
 
+//! Plan for fitting reflectometry curve on Ti/Ni multilayer (q-defined beam)
+
+class SpecularPlanQ : public FitPlan
+{
+public:
+    SpecularPlanQ();
+    ~SpecularPlanQ() override;
+};
+
 //! The same as SpecularPlan, but with two (identical) datasets
 
 class MultipleSpecPlan : public FitPlan
diff --git a/Tests/Functional/Fit/FitObjective/FitPlanFactory.cpp b/Tests/Functional/Fit/FitObjective/FitPlanFactory.cpp
index e596435910c57c630a70b729bb2c095ae57f2b0e..c7bff9a1bb22390f9f302638eca3cb3a94e7be69 100644
--- a/Tests/Functional/Fit/FitObjective/FitPlanFactory.cpp
+++ b/Tests/Functional/Fit/FitObjective/FitPlanFactory.cpp
@@ -24,6 +24,7 @@ FitPlanFactory::FitPlanFactory()
     registerItem("RectDetPlan", create_new<RectDetPlan>);
     registerItem("AdjustMinimizerPlan", create_new<AdjustMinimizerPlan>);
     registerItem("SpecularPlan", create_new<SpecularPlan>);
+    registerItem("SpecularPlanQ", create_new<SpecularPlanQ>);
     registerItem("MultipleSpecPlan", create_new<MultipleSpecPlan>);
     registerItem("OffSpecFitPlan", create_new<OffSpecFitPlan>);
 }