diff --git a/manila_tempest_tests/config.py b/manila_tempest_tests/config.py
index 3d29db1..35fa1ed 100644
--- a/manila_tempest_tests/config.py
+++ b/manila_tempest_tests/config.py
@@ -30,7 +30,7 @@
                help="The minimum api microversion is configured to be the "
                     "value of the minimum microversion supported by Manila."),
     cfg.StrOpt("max_api_microversion",
-               default="2.49",
+               default="2.50",
                help="The maximum api microversion is configured to be the "
                     "value of the latest microversion supported by Manila."),
     cfg.StrOpt("region",
diff --git a/manila_tempest_tests/services/share/v2/json/shares_client.py b/manila_tempest_tests/services/share/v2/json/shares_client.py
index 5395061..9439d80 100644
--- a/manila_tempest_tests/services/share/v2/json/shares_client.py
+++ b/manila_tempest_tests/services/share/v2/json/shares_client.py
@@ -924,6 +924,22 @@
         self.expected_success(200, resp.status)
         return self._parse_resp(body)
 
+    def update_share_type(self, share_type_id, name=None,
+                          is_public=None, description=None,
+                          version=LATEST_MICROVERSION):
+        post_body = {}
+        if is_public is not None:
+            post_body.update({"share_type_access:is_public": is_public})
+        if name is not None:
+            post_body.update({"name": name})
+        if description is not None:
+            post_body.update({"description": description})
+        post_body = json.dumps({'share_type': post_body})
+        resp, body = self.put("types/%s" % share_type_id, post_body,
+                              version=version)
+        self.expected_success(200, resp.status)
+        return self._parse_resp(body)
+
     def delete_share_type(self, share_type_id, version=LATEST_MICROVERSION):
         resp, body = self.delete("types/%s" % share_type_id, version=version)
         self.expected_success(202, resp.status)
diff --git a/manila_tempest_tests/tests/api/admin/test_share_types.py b/manila_tempest_tests/tests/api/admin/test_share_types.py
index f06c70d..aef202b 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_types.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_types.py
@@ -99,6 +99,82 @@
         self.assertDictMatch(get["volume_type"], get["share_type"])
 
     @tc.attr(base.TAG_POSITIVE, base.TAG_API)
+    @ddt.data(
+        ('2.50', data_utils.rand_name("type_updated"),
+         'description_updated', True),
+        ('2.50', data_utils.rand_name("type_updated"), None, None),
+        ('2.50', None, 'description_updated', None),
+        ('2.50', None, None, True),
+        ('2.50', None, None, False),
+        (LATEST_MICROVERSION, data_utils.rand_name("type_updated"),
+         'description_updated', True),
+        (LATEST_MICROVERSION, data_utils.rand_name("type_updated"),
+         None, None),
+        (LATEST_MICROVERSION, None, 'description_updated', None),
+        (LATEST_MICROVERSION, None, None, True),
+        (LATEST_MICROVERSION, None, None, False),
+    )
+    @ddt.unpack
+    def test_share_type_create_update(self, version, st_name,
+                                      st_description, st_is_public):
+        name = data_utils.rand_name("tempest-manila")
+        description = "Description for share type"
+        extra_specs = self.add_extra_specs_to_dict({"key": "value", })
+
+        # Create share type
+        st_create = self.create_share_type(
+            name, extra_specs=extra_specs, version=version,
+            description=description)
+        self.assertEqual(name, st_create['share_type']['name'])
+        self._verify_description(
+            description, st_create['share_type'], version)
+        self._verify_is_public_key_name(st_create['share_type'], version)
+        st_id = st_create["share_type"]["id"]
+
+        # Update share type
+        updated_st = self.shares_v2_client.update_share_type(
+            st_id, name=st_name, is_public=st_is_public,
+            description=st_description, version=version)
+        if st_name is not None:
+            self.assertEqual(st_name, updated_st["share_type"]["name"])
+        if st_description is not None:
+            self._verify_description(st_description,
+                                     updated_st['share_type'], version)
+        if st_is_public is not None:
+            self.assertEqual(
+                st_is_public,
+                updated_st["share_type"]["share_type_access:is_public"])
+
+    @tc.attr(base.TAG_POSITIVE, base.TAG_API)
+    @ddt.data(
+        ('2.50', None, '', None),
+        (LATEST_MICROVERSION, None, '', None),
+    )
+    @ddt.unpack
+    def test_share_type_unset_description(
+            self, version, st_name, st_description, st_is_public):
+        name = data_utils.rand_name("tempest-manila")
+        description = "Description for share type"
+        extra_specs = self.add_extra_specs_to_dict({"key": "value", })
+
+        # Create share type
+        st_create = self.create_share_type(
+            name, extra_specs=extra_specs, version=version,
+            description=description)
+        self.assertEqual(name, st_create['share_type']['name'])
+        self._verify_description(
+            description, st_create['share_type'], version)
+        self._verify_is_public_key_name(st_create['share_type'], version)
+        st_id = st_create["share_type"]["id"]
+
+        # Update share type
+        updated_st = self.shares_v2_client.update_share_type(
+            st_id, name=st_name, is_public=st_is_public,
+            description=st_description, version=version)
+
+        self._verify_description(None, updated_st['share_type'], version)
+
+    @tc.attr(base.TAG_POSITIVE, base.TAG_API)
     @ddt.data('2.0', '2.6', '2.7', '2.40', '2.41')
     def test_share_type_create_list(self, version):
         self.skip_if_microversion_not_supported(version)
diff --git a/manila_tempest_tests/tests/api/base.py b/manila_tempest_tests/tests/api/base.py
index eca162a..3afd6fb 100644
--- a/manila_tempest_tests/tests/api/base.py
+++ b/manila_tempest_tests/tests/api/base.py
@@ -870,6 +870,16 @@
             cls.method_resources.insert(0, resource)
         return share_type
 
+    @classmethod
+    def update_share_type(cls, share_type_id, name=None,
+                          is_public=None, description=None,
+                          client=None):
+        if client is None:
+            client = cls.shares_v2_client
+        share_type = client.update_share_type(share_type_id, name,
+                                              is_public, description)
+        return share_type
+
     @staticmethod
     def add_extra_specs_to_dict(extra_specs=None):
         """Add any required extra-specs to share type dictionary"""
diff --git a/manila_tempest_tests/tests/api/test_share_types_negative.py b/manila_tempest_tests/tests/api/test_share_types_negative.py
index 63b11d1..9b4f6ba 100644
--- a/manila_tempest_tests/tests/api/test_share_types_negative.py
+++ b/manila_tempest_tests/tests/api/test_share_types_negative.py
@@ -13,19 +13,37 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import ddt
+import random
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import exceptions as lib_exc
 from testtools import testcase as tc
 
 from manila_tempest_tests.tests.api import base
 
+CONF = config.CONF
 
+LATEST_MICROVERSION = CONF.share.max_api_microversion
+
+
+def generate_long_description(des_length=256):
+    random_str = ''
+    base_str = 'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz'
+    length = len(base_str) - 1
+    for i in range(des_length):
+        random_str += base_str[random.randint(0, length)]
+    return random_str
+
+
+@ddt.ddt
 class ShareTypesNegativeTest(base.BaseSharesMixedTest):
 
     @classmethod
     def resource_setup(cls):
         super(ShareTypesNegativeTest, cls).resource_setup()
         cls.st = cls._create_share_type()
+        cls.st2 = cls._create_share_type()
 
     @tc.attr(base.TAG_NEGATIVE, base.TAG_API)
     def test_try_create_share_type_with_user(self):
@@ -53,3 +71,32 @@
                           self.shares_client.remove_access_from_share_type,
                           self.st['id'],
                           self.shares_client.tenant_id)
+
+    @tc.attr(base.TAG_NEGATIVE, base.TAG_API)
+    @ddt.data(
+        ('2.50', '', None, None),
+        (LATEST_MICROVERSION, '', None, None),
+        ('2.50', None, None, 'not_bool'),
+        (LATEST_MICROVERSION, None, None, 'not_bool'),
+        ('2.50', None, generate_long_description(256), None),
+        (LATEST_MICROVERSION, None, generate_long_description(256), None),
+    )
+    @ddt.unpack
+    def test_share_type_update_bad_request(
+            self, version, st_name, st_description, st_is_public):
+        st_id = self.st['id']
+        # Update share type
+        self.assertRaises(lib_exc.BadRequest,
+                          self.admin_shares_v2_client.update_share_type,
+                          st_id, st_name, st_is_public, st_description,
+                          version)
+
+    @tc.attr(base.TAG_NEGATIVE, base.TAG_API)
+    @ddt.data('2.50', LATEST_MICROVERSION)
+    def test_share_type_update_conflict(self, version):
+        name_1 = self.st['name']
+        st_id_2 = self.st2['id']
+        # Update share type
+        self.assertRaises(lib_exc.Conflict,
+                          self.admin_shares_v2_client.update_share_type,
+                          st_id_2, name_1, None, None, version)
